当前位置: 首页 > news >正文

零基础Milvus快速上手指南,手把手搭建RAG向量检索

文章目录

      • 前言
      • 1 环境准备
        • 1.1 Windows下用Docker部署Milvus
        • 1.2 安装Python依赖
        • 1.3 准备嵌入模型API
      • 2 连接Milvus并创建数据库
        • 2.1 建立客户端连接
        • 2.2 创建自定义数据库
      • 3 创建Collection集合
        • 3.1 检查并创建集合
        • 3.2 查看集合元数据
      • 4 准备嵌入模型
        • 4.1 初始化模型
        • 4.2 生成测试向量
      • 5 插入数据
      • 6 数据查询与检索
        • 6.1 遍历所有数据
        • 6.2 按主键批量查询
        • 6.3 相似度检索
      • 7 清理资源
      • 8 踩坑提醒
      • 9 总结


P.S. 无意间发现了一个巨牛的人工智能教程,非常通俗易懂,对AI感兴趣的朋友强烈推荐去看看, 传送门https://blog.csdn.net/qq_34419312

前言

做RAG应用的同学,十有八九都要跟向量数据库打交道。

很多人上来就被环境劝退,装个软件折腾一下午,代码一行没写,光重启电脑了。

今天就拿Milvus开刀,从装环境到跑通相似度检索,一步一步给你捋明白。

1 环境准备

1.1 Windows下用Docker部署Milvus

先说好前提,Windows上装这个,你得先有WSL。

没装的打开PowerShell输一行命令就行,装完乖乖重启电脑,这步跳不过去。

然后装Docker Desktop,安装流程全程下一步,别瞎改配置。

装完别傻乎乎去注册登录,直接跳过就行,咱用的功能免费版完全够。

接下来配镜像加速,没代理的同学这步必做。

不然下载镜像慢到你以为网断了,喝杯茶回来进度条没动两格。

点设置找到Docker Engine,把国内镜像地址粘进去,保存重启Docker。

找个你想存放文件的文件夹,用管理员身份开PowerShell切过去。

下载官方的启动脚本,存成standalone.bat。

运行脚本启动Milvus,等着Docker拉镜像就行。

启动完成后,服务默认跑在localhost:19530,后面连接就用这个地址。

以后想开想关,直接在Docker界面点按钮,不用再敲命令,方便得很。

1.2 安装Python依赖

就四个包,pip一行命令就能装完。

pymilvus是官方客户端,langchain用来统一调用嵌入模型,剩下两个是辅助工具。

1.3 准备嵌入模型API

随便找个支持嵌入模型的平台,搞个API Key就行。

只要兼容OpenAI格式的服务都能用,不用死磕某一家。

整个.env文件存密钥和地址,别硬写在代码里,泄露了哭都来不及。

2 连接Milvus并创建数据库

2.1 建立客户端连接

几行代码的事儿,实例化MilvusClient,传本地服务地址就行。

打印一下现有数据库,默认会自带一个default库。

2.2 创建自定义数据库

Milvus支持多数据库隔离,咱自己整个rag_demo库,跟默认的分开用。

先查一下有没有重名的,没有就创建,创建完切换过去。

友情提示,删库之前得先把里面的集合全删干净,不然直接报错。

别问我怎么知道的,踩过坑的人都懂。

3 创建Collection集合

Collection就相当于关系型数据库里的表,专门存向量和附带的元数据。

3.1 检查并创建集合

创建的时候两个参数最关键:向量维度和相似度度量类型。

维度必须跟你用的嵌入模型输出严格对上,比如bge-m3就是1024维。

差一维都插不进去,就像买鞋买错码,硬塞肯定塞不进去。

相似度算法选COSINE余弦相似度,做语义检索就用这个,准没错。

先查一下集合是否存在,没有就创建,避免重复创建报错。

3.2 查看集合元数据

可以用describe_collection查看集合的详细信息。

默认会有id主键和vector向量字段,而且开了动态字段。

意思就是你随便加额外字段都行,不用提前定义表结构,对新手很友好。

4 准备嵌入模型

4.1 初始化模型

加载.env里的环境变量,用langchain的接口初始化嵌入模型。

填上模型名、api_key和base_url,参数对齐就能用。

4.2 生成测试向量

准备几条测试文本,调用embed_documents批量转成向量。

打印一下向量数量和维度,确认跟集合设置的对得上。

别等插数据的时候才发现维度不匹配,白忙活半天。

5 插入数据

把向量、原文、来源这些信息拼成字典,组成一个列表。

用upsert方法插入,有相同id就更新,没有就新增,很省心。

插完可以手动flush一下,强制数据落盘,心里踏实。

再查一下集合统计信息,看看行数对不对,确认插成功了。

6 数据查询与检索

6.1 遍历所有数据

数据量大的话,用query_iterator分批读取。

别一次性全捞出来把内存干爆,分批拿稳得很。

循环取数就行,用完记得把迭代器关了。

6.2 按主键批量查询

知道数据id的话,直接用get方法批量查,效率很高。

6.3 相似度检索

这才是向量数据库的灵魂功能,也是RAG的核心逻辑。

用户提个问题,先转成向量,然后在库里找最相似的Top-K条内容。

把问题向量传进去,设好返回条数和要返回的字段。

返回结果里的distance就是相似度得分,余弦模式下数值越高越相关。

你会发现语义最贴合的内容排在最前面,这就是RAG能精准召回的底气。

7 清理资源

测试完不用了,就顺手删掉集合和数据库,省得占地方。

再强调一遍,删库前先删集合,顺序别搞反,反了就报错。

8 踩坑提醒

维度必须一致,这是新手最高发的坑,没有之一。

度量类型别乱选,做RAG语义检索,闭眼选COSINE就行。

动态字段虽然灵活,但生产环境该定schema还是定,别图省事乱加字段。

插入和搜索都支持批量操作,数据多了记得用,效率能提一大截。

示例用的是默认FLAT索引,数据少没问题。

真上生产环境,得换HNSW这类索引,不然检索慢到你怀疑人生。

9 总结

这么一套流程走下来,从部署到检索的全链路就跑通了。

Docker跑Milvus单机版,pymilvus操作数据库,langchain调用嵌入模型,再加相似度检索。

这就是RAG系统的数据层底子。

接下来把召回的内容塞给大模型,就能搭出自己的问答应用了。

P.S. 无意间发现了一个巨牛的人工智能教程,非常通俗易懂,对AI感兴趣的朋友强烈推荐去看看,传送门https://blog.csdn.net/qq_34419312

http://www.jsqmd.com/news/1360111/

相关文章:

  • shell和github相关
  • 考研数学高效复习策略:张宇基础与强化讲义的结合方法
  • Vue2与Vue3核心差异及性能优化实战
  • AI API集成中周期性连接重置的诊断与韧性架构实践
  • 如何快速实现游戏窗口分辨率自定义:SRWE终极窗口调整工具完全指南
  • 天赐范式第129天:精度对照实验——坐实“固有数值疤痕“
  • Muse Spark 1.2:AI编程助手从代码补全到主动思考的范式转变
  • 2026太原惠普电脑回收就来毓典奢品汇18617962974全国连锁专业靠谱,闲置笔记本处理全攻略 - 丽坤奢品汇
  • 多Agent项目实战,搭建一个产品加开发加测试的AI项目团队
  • 华为MetaERP Oracle Fusion Cloud GL(总账)完整核心基础架构深度解析总述定位Fusion GL 是整套 Fusion Financial 云 ERP统一会计中枢、全集团
  • DC-7靶机渗透测试实战:从Web漏洞到提权
  • 2026 青岛公维金申请条件与流程:最新政策全解读,免费代办攻略 - 青岛防水品牌推荐
  • Java List集合核心特性与性能优化全解析
  • 工作流商业分发与授权:从原型到产品的工程化实践
  • Unity资源管理实战:基于YooAssets构建AssetBundle热更新管线
  • 智慧井盖:物联网技术赋能城市地下管网安全监测
  • 高效个人成长记录系统:Day16编码与Markdown实践
  • gprMax电磁波仿真解决方案:从地质雷达到复杂电磁环境的FDTD建模指南
  • 告别“设备正在使用中“:USB-Disk-Ejector如何成为Windows用户的必备工具
  • SpringBoot集成EasyCaptcha实现图片验证码全攻略
  • 2026年安徽工贸职业技术学院1+3复读班:校内办学,吃住学一体 - cc江江
  • 2026年西安电子产品回收及物资拆除服务梳理 宏顺双鑫服务参考 - 董不懂啊
  • 化工生产监测系统:分布式架构与智能诊断实践
  • Kafka架构设计与性能调优实战指南
  • 如何快速打造你的专属桌面宠物:DyberPet终极指南
  • Kafka与RabbitMQ消息队列核心技术对比与实战指南
  • 全国微博签到数据201912-202004
  • Spring AI Prompt工程与结构化输出实战指南
  • 04_Series布尔索引
  • Unity中使用DoTween Pro实现高性能照片墙动画与交互设计