向量数据库Milvus部署使用:零基础部署向量数据库

如果你正在做AI应用开发或相似度搜索,向量数据库Milvus是一个必须掌握的组件。
它能高效存储和检索高维向量,广泛用于推荐系统、图片搜索、自然语言处理场景。
本文从零开始,带你在一台CentOS 7服务器上完成Milvus部署与基本使用,每一步都可直接照做。

环境准备:你需要一台服务器和Docker

Milvus官方推荐通过Docker部署,所以先检查服务器是否已装Docker。
登录服务器(假设IP为192.168.1.100),执行:

docker --version

如果显示版本号,说明Docker已安装。
如果提示command not found,则按下面步骤安装:

# 移除旧版本
sudo yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine

# 安装依赖工具
sudo yum install -y yum-utils device-mapper-persistent-data lvm2

# 添加Docker官方仓库
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

# 安装Docker引擎
sudo yum install -y docker-ce docker-ce-cli containerd.io

# 启动Docker并设置开机自启
sudo systemctl start docker
sudo systemctl enable docker

验证Docker是否跑起来:

sudo systemctl status docker | grep Active
# 输出应为 Active: active (running)
避坑:如果服务器内存不足4GB,Milvus运行可能会很慢。建议使用2C4G以上的配置。另外确保/var/lib/docker分区有至少20GB剩余空间。

拉取Milvus镜像并启动服务

Milvus提供两种模式:Standalone(单机)和Cluster(集群)。
单机模式足够学习和小项目测试。
我们先在服务器上下载最新Milvus镜像:

docker pull milvusdb/milvus:latest

启动Milvus之前,需要准备配置文件。
官方提供了一个快速启动脚本,直接复制以下命令到服务器执行:

# 创建目录存放Milvus数据
mkdir -p /home/milvus
cd /home/milvus

# 下载docker-compose.yml和配置文件
wget https://raw.githubusercontent.com/milvus-io/milvus/master/deployments/docker/standalone/docker-compose.yml

如果你没有wget,可以用curl -O代替。
下一步启动所有容器:

docker-compose up -d

等待几分钟,第一次启动要拉取依赖的etcd和minio镜像。
完成后检查容器状态:

docker-compose ps

确保milvus-etcdmilvus-miniomilvus-standalone三个容器状态都是Up
如果某个容器一直重启或启动失败,可以查看日志:

docker logs milvus-standalone --tail 50

常见错误是端口冲突(默认端口19530、9091、19531等),可以编辑docker-compose.yml里的端口映射改成你想用的端口。

安装客户端工具并连接Milvus

Milvus启动后,我们通过Python客户端来操作。
在另一台机器(或本机)上安装pymilvus

pip install pymilvus==2.3.0
如果提示pip未安装,先yum install python3-pip

编写一个简单的测试脚本test_milvus.py

from pymilvus import connections, CollectionSchema, FieldSchema, DataType, Collection

# 连接Milvus(你的服务器IP或localhost)
connections.connect(host='192.168.1.100', port='19530')

print('连接成功')

# 定义向量字段和主键字段
fields = [
    FieldSchema(name='id', dtype=DataType.INT64, is_primary=True, auto_id=False),
    FieldSchema(name='vector', dtype=DataType.FLOAT_VECTOR, dim=128)
]
schema = CollectionSchema(fields, '测试集合')

# 创建集合
collection = Collection('hello_milvus', schema)
print('集合创建成功')

# 插入100条随机向量
import random
vectors = [[random.random() for _ in range(128)] for _ in range(100)]
ids = [i for i in range(100)]

collection.insert([ids, vectors])
print('插入100条数据成功')

# 创建索引(加速检索)
index = {
    'index_type': 'IVF_FLAT',
    'params': {'nlist': 128},
    'metric_type': 'L2'
}
collection.create_index('vector', index)
print('索引创建成功')

# 加载集合到内存
collection.load()

# 执行一次向量检索
search_vectors = [vectors[0]]  # 用第一条向量作为查询
result = collection.search(search_vectors, 'vector', param={'nprobe': 10}, limit=3)
print('检索结果:', result)

运行脚本:

python test_milvus.py

如果一切正常,你会看到“连接成功”、“集合创建成功”、“插入100条数据成功”、“索引创建成功”和检索结果。

避坑指南:新手常见问题

  • 连接超时:检查防火墙是否开放19530端口。CentOS临时开放:sudo firewall-cmd --add-port=19530/tcp --permanent && sudo firewall-cmd --reload
  • 内存不足:Milvus启动时默认使用多个容器,可编辑docker-compose.yml限制资源,或关闭其他非必要服务。
  • 向量维度不一致:定义Collection时必须指定dim,插入的数据维度必须完全匹配。
  • 索引构建失败:如果数据量太小(几十条),可以跳过索引。检索时去掉param={'nprobe': 10}也能运行,但速度慢。

效果验证:确认向量检索正确

上面脚本已经完成了一次检索,结果会展示最相似的3条向量的ID和距离。
为了更直观,你可以将检索结果的距离值与手动计算做对比:

import numpy as np
dist = np.linalg.norm(np.array(vectors[0]) - np.array(vectors[1]))
print('手动计算距离:', dist)

应该和Milvus返回的第一个结果距离基本一致(浮点误差可忽略)。

至此,你已经完成了向量数据库Milvus的部署与使用全过程。
后续你可以修改集合名、向量维度、索引参数,或者将真实的文本向量(如BERT输出)插入Milvus实现语义搜索。
记得每次用完Milvus,通过docker-compose down停止服务,避免长时间占用资源。

如果你在部署过程中遇到其他报错,不妨先查看Milvus官方文档,或者回来对照本文的排错部分——大部分问题都出在环境配置和端口开放上。

分享到:
上一篇
AI训练数据集处理服务器配置指南:从零开始搭建
下一篇
AI智能问答系统搭建教程:零基础搭建AI智能问答系统
1
系统公告

高考专属福利来袭|凭准考证免费领香港 CN2 云服务器

值高考落幕之际,泽御云开启考生专属回馈 + 产品限时特惠双重活动,助力学子暑期学习建站 高考 考生专属福利 全体应届高考生,凭高考准考证即可免费申领【香港 CN2 轻量云服务器,4 核 4G AMD 处理器】,免费使用周期 30 天,可用于搭建个人站点、编程实操、技术实训,祝各位考生金榜题名,前程似锦! 泽御云资质齐全合规自营机房,线路覆盖香港 CN2、国内 BGP、内蒙电信、美国精品线路,售后全天候技术支持。 官方网站:www.zeyuyun.com,活动限时有效,优惠逾期不再保留。
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意