cgft-llm Milvus向量数据库速成教程:RAG知识库不可或缺的语义检索底座
【免费下载链接】cgft-llmcgft-llm 是一个学习大语言模型(LLM)开发的开源资源。它提供代码、文档和视频教程,帮助用户通过实践掌握前沿核心 LLM 技术项目地址: https://gitcode.com/echonoshy/cgft-llm
如果你正在搭建 RAG 知识库,那么 Milvus 向量数据库 一定是绕不开的核心组件。它负责把文本变成向量、完成语义相似度检索,是整个 RAG 系统"以文找文"的语义检索底座。本文基于开源学习项目 cgft-llm 中的 Milvus 实战资料,用一篇速成教程帮你快速搞懂:Milvus 是什么、它和其他向量方案怎么选、以及从建表到检索的完整上手流程。
一、为什么 RAG 需要 Milvus 向量数据库?
大模型"有知识盲区",RAG(检索增强生成)的思路是:先从知识库里检索出与问题最相关的内容,再喂给 LLM 生成回答。
而"检索"这一步,靠的不是关键词匹配,而是语义相似度——两句话用词完全不同,只要意思相近就能被找出来。这就是向量数据库的用武之地:
- 文本经过 Embedding 模型变成一组数字(向量)
- 语义越接近,向量距离越近
- 向量数据库专门负责海量向量的存储与快速相似度搜索
Milvus 正是其中最成熟的开源方案之一,广泛应用于 RAG 检索增强生成、对话机器人、图片识别、声纹识别等场景。
📌 在 cgft-llm 项目中,Milvus 相关内容位于 02-llm-core/milvus/,配套文档见 readme.md。
二、选型指南:Milvus vs Faiss vs ChromaDB
新手最常见的困惑:向量方案这么多,选哪个?下面是 readme.md 中总结的对比:
| 方案 | 定位 | 适合场景 |
|---|---|---|
| Faiss | 高性能计算引擎 | 纯向量计算加速,需自行搭配存储系统 |
| Elasticsearch | 功能强大的搜索框架 | 复杂搜索需求,功能复杂 |
| Milvus | 全功能向量数据库 | 大规模生产环境,支持 GPU 加速 |
| ChromaDB | 轻量级向量数据库 | 开发友好,适合轻量应用和快速迭代 |
| Pinecone | 闭源托管服务 | 不想自己运维的团队 |
一句话结论:学习期可用 ChromaDB 快速验证,上生产建议 Milvus。
三、了解 Milvus 的三个版本
Milvus 提供三种部署形态,按需选择:
- Lite 精简版(开发版):无需服务器,指定一个本地文件路径即可跑起来,最适合新手学习
- Standalone 单机版:生产环境入门选择
- Distributed 分布式版:海量数据、高并发场景
本文的速成教程就用最轻量的Lite 版,一个文件搞定环境。
四、快速上手:连接 Milvus 并建集合
完整可运行代码在 quick-start.ipynb,核心步骤只有四步:
1. 安装与连接
安装官方 Python 客户端:
pip install pymilvusLite 版连接只需指定本地文件路径:
from pymilvus import MilvusClient # lite 版本指定本地文件路径 client = MilvusClient("./milvus_demo.db") # 其他版本连接方式(使用 HTTP 协议连接到远程服务器) # client = MilvusClient(uri="http://localhost:19530", token="root:Milvus")2. 创建集合(Collection)
集合(Collection)相当于关系数据库中的"表",创建时只需指定向量维度:
client.create_collection( collection_name="demo_collection", dimension=10 # 向量维度 )3. 插入数据
每条记录包含 ID、向量、文本以及任意附加字段(如主题标签):
data = [ {"id": i, "vector": vectors[i], "text": docs[i], "subject": "history"} for i in range(len(docs)) ] res = client.insert(collection_name="demo_collection", data=data)4. 向量相似度搜索
这是 Milvus 最核心的操作——传入查询向量,返回最相似的 N 条记录,还支持过滤条件:
res = client.search( collection_name="demo_collection", data=[vectors[0]], # 查询向量 filter="subject == 'history'", # 过滤条件 limit=2, # 返回结果数量 output_fields=["text", "subject"], )搜索结果会带distance相似度分数,距离越接近 1 表示语义越相关。
五、常用运维操作速查
除了增查,quick-start.ipynb 还演示了日常维护集合的常用方法:
| 操作 | 方法 | 说明 |
|---|---|---|
| 按属性查询 | client.query(filter=...) | 按标量字段精确筛选记录 |
| 删除数据 | client.delete(filter=...) | 按条件批量删除 |
| 查看统计 | client.get_collection_stats(...) | 获取集合实体数量等统计信息 |
| 查看结构 | client.describe_collection(...) | 查看字段定义、向量维度、索引类型 |
| 检查存在 | client.has_collection(...) | 判断集合是否存在 |
| 列出集合 | client.list_collections() | 列出所有集合 |
六、写在最后
回顾一下 Milvus 向量数据库的核心四件套:建集合 → 插数据 → 相似度检索 → 按属性增删查。掌握这四点,你就拥有了搭建 RAG 知识库语义检索底座的全部基础能力。
🚀 下一步建议:在 cgft-llm 项目中继续学习 rag-knowledge-base/ 的完整 RAG 知识库搭建,以及 llama-index/ 的文档索引实战,把 Milvus 真正用起来。
【免费下载链接】cgft-llmcgft-llm 是一个学习大语言模型(LLM)开发的开源资源。它提供代码、文档和视频教程,帮助用户通过实践掌握前沿核心 LLM 技术项目地址: https://gitcode.com/echonoshy/cgft-llm
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考