Milvus怎么用 开源向量数据库部署教程
更新时间:2026-10-09 08:06:02 发布时间:1小时前 阅读:2次Milvus是一个开源的向量数据库,专门用来存储和搜索向量数据,是做AI知识库和推荐系统的核心组件。它把文本、图片等内容经过模型转换得到的数字向量保存起来,再按相似度找出最相关的数据。下面用Docker Compose启动服务,并通过Python完成建集合、写入和检索,适合先在本机跑通流程。正式使用前,记得根据机器资源、数据规模和网络环境调整部署方式。
第一步:安装启动Milvus
先准备一台安装了Docker和Docker Compose的Linux机器,并确认磁盘空间充足。进入一个专门存放配置和数据的目录,下载Milvus官方提供的Compose配置文件:wget https://github.com/milvus-io/milvus/releases/download/v3.0.2/milvus-standalone-docker-compose.yaml -O docker-compose.yaml。配置文件会定义Milvus及其依赖服务,建议从官方文档获取与你计划使用版本相匹配的文件,避免新旧配置混用。
文件下载好后,在当前目录执行docker compose up -d。首次启动需要拉取镜像,网络较慢时耐心等待;命令结束后运行docker compose ps查看容器状态。服务正常运行时,Milvus Standalone会监听本机19530端口,WebUI通常可通过http://127.0.0.1:9091/webui/访问。服务器部署时,别把管理端口直接暴露到公网,优先使用防火墙限制访问范围。
如果容器没有正常启动,先执行docker compose logs查看报错,再检查Docker是否运行、端口是否被其他程序占用,以及机器资源是否够用。启动成功后,Compose生成的卷或当前目录中的数据目录负责持久化;不要为了排错随手删除它们,否则可能连同已有数据一起清掉。需要停止服务时可运行docker compose down,但操作前确认数据目录仍保留。
第二步:连接并创建集合
在Python环境安装客户端:pip install -U pymilvus。创建Python脚本后,导入MilvusClient,并连接刚才启动的本机服务:client = MilvusClient(uri=”http://localhost:19530″, token=”root:Milvus”)。如果服务不在本机,把localhost换成服务器地址;连接失败时检查网络、防火墙和端口映射。用户名或令牌应以实际部署配置为准,生产环境不要把凭据直接写进公开代码。
接着创建集合,也就是存放向量和相关字段的逻辑容器,可以把它理解成一张专门用于向量检索的表。示例调用client.create_collection(collection_name=”kb_demo”, dimension=4),其中dimension必须与嵌入模型输出的向量维度完全一致。这里用4维只是为了演示;实际项目要查清所用模型的输出维度,并提前设计主键、文本字段、元数据字段以及相似度指标。
写入向量数据
先准备几条示例数据,每条数据包含唯一整数id、向量字段和原始文本,例如向量可写成[0.12, 0.34, 0.56, 0.78]。真实业务里不要随便编造向量,应把每段文本交给嵌入模型生成向量;同一集合中的向量维度要一致,向量值也应保持为数值列表。文本和分类标签等信息可以作为普通字段保存,方便检索后直接展示结果。
把记录组织成列表后调用client.insert(collection_name=”kb_demo”, data=rows)写入。写入前确保每条记录的id不冲突,并检查向量、文本和元数据字段名称符合集合定义。运行后留意返回的插入数量或主键,必要时用查询接口抽样核对。数据量较大时,可分批写入并记录批次进度;重跑脚本前要考虑重复数据问题,避免无意中反复插入同一批内容。
第三步:相似度检索
检索的关键是把用户问题也转换成与库内向量同源、同维度的查询向量,然后调用client.search(collection_name=”kb_demo”, data=[query_vector], limit=3, output_fields=[“text”])。limit控制返回条数,output_fields指定需要带回的字段。返回结果通常会包含命中记录的id、距离分数和文本等信息;不同距离指标的分数含义不完全相同,排序和阈值应结合当前指标解释。
拿到结果后,可以把最相关的文本展示给用户,也可以将其作为上下文交给大语言模型生成回答,这就是常见知识库问答流程的一部分。若结果不理想,先检查查询向量和入库向量是否由同一模型产生,再检查文本切分长度、向量维度、集合指标与limit设置。知识库更新时及时删除或更新旧记录,并定期备份数据;上线前还要用真实问题评估召回质量和响应速度。
如果不想自行维护服务器,也可以了解国内云上替代或托管方案,例如火山引擎相关服务;选择时重点比较兼容接口、计费方式、数据迁移和运维能力。润灭也整理了相关入口:volcengine.cgref.cn。无论用自建Milvus还是云服务,都建议先用小规模样本验证完整链路,再逐步扩容,并确认服务条款、数据保留和备份策略符合项目需求。