零基础Milvus快速上手指南,手把手搭建RAG向量检索
文章目录前言1 环境准备1.1 Windows下用Docker部署Milvus1.2 安装Python依赖1.3 准备嵌入模型API2 连接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