大家好,我是工藤学编程 🦉 | 一个正在努力学习的小博主,期待你的关注 |
|---|---|
实战代码系列最新文章😉 | C++实现图书管理系统(Qt C++ GUI界面版) |
SpringBoot实战系列🐷 | 【SpringBoot实战系列】SpringBoot3.X 整合 MinIO 存储原生方案 |
分库分表 | 分库分表之实战-sharding-JDBC分库分表执行流程原理剖析 |
消息队列 | 深入浅出 RabbitMQ-RabbitMQ消息确认机制(ACK) |
AI大模型 | 零基础学AI大模型之向量数据库介绍与技术选型思考 |
前情摘要 1、零基础学AI大模型之读懂AI大模型 2、零基础学AI大模型之从0到1调用大模型API 3、零基础学AI大模型之SpringAI 4、零基础学AI大模型之AI大模型常见概念 5、零基础学AI大模型之大模型私有化部署全指南 6、零基础学AI大模型之AI大模型可视化界面 7、零基础学AI大模型之LangChain 8、零基础学AI大模型之LangChain六大核心模块与大模型IO交互链路 9、零基础学AI大模型之Prompt提示词工程 10、零基础学AI大模型之LangChain-PromptTemplate 11、零基础学AI大模型之ChatModel聊天模型与ChatPromptTemplate实战 12、零基础学AI大模型之LangChain链 13、零基础学AI大模型之Stream流式输出实战 14、零基础学AI大模型之LangChain Output Parser 15、零基础学AI大模型之解析器PydanticOutputParser 16、零基础学AI大模型之大模型的“幻觉” 17、零基础学AI大模型之RAG技术 18、零基础学AI大模型之RAG系统链路解析与Document Loaders多案例实战 19、零基础学AI大模型之LangChain PyPDFLoader实战与PDF图片提取全解析 20、零基础学AI大模型之LangChain WebBaseLoader与Docx2txtLoader实战 21、零基础学AI大模型之RAG系统链路构建:文档切割转换全解析 22、零基础学AI大模型之LangChain 文本分割器实战:CharacterTextSplitter 与 RecursiveCharacterTextSplitter 全解析 23、零基础学AI大模型之Embedding与LLM大模型对比全解析 24、零基础学AI大模型之LangChain Embedding框架全解析 25、零基础学AI大模型之嵌入模型性能优化 26、零基础学AI大模型之向量数据库介绍与技术选型思考
前面我们已经完整拆解了RAG技术链路,从文档加载、文本分割到Embedding向量转换,每一步都为“让大模型精准调用外部知识”打下基础。但生成的高维向量该如何高效存储、快速检索?这就需要专门的向量数据库来解决——今天我们聚焦AI大模型生态的核心存储组件:Milvus向量数据库,带你从基础概念到实战落地全面掌握。


Milvus是一款高性能、高扩展性的开源向量数据库,专门用于存储、索引和检索高维向量数据。它既能以开源软件形式本地部署,也能通过云服务快速使用,适配从笔记本电脑到大规模分布式系统的全场景需求,是AI大模型(尤其是RAG系统)中向量存储的核心选择。
简单说,传统关系型数据库擅长处理结构化数据(如用户ID、订单金额),而Milvus专注于“理解”向量的相似度——比如两张图片的特征向量、两段文本的Embedding向量,它能快速找到最相似的结果,这正是AI应用需要的核心能力。
Milvus的优势集中在“快、大、灵”三大维度,关键指标如下:
指标类型 | 核心表现 |
|---|---|
数据规模 | 支持千亿级向量存储,适配PB级数据量 |
查询性能 | 亿级向量亚秒级响应,支持GPU加速提升效率 |
扩展性 | 水平扩展架构,可动态增删节点,应对数据增长 |
查询能力 | 支持相似度搜索、混合查询(向量+标量过滤)、多向量联合查询 |
生态兼容 | 原生支持Python/Java/Go/REST API,无缝整合TensorFlow、PyTorch等主流AI框架 |
核心能力补充:支持多种相似度计算方式,包括欧氏距离(L2,数值越小越相似)、余弦相似度(基于向量夹角,越接近1越相似)、内积(IP,数值越大越相似),满足不同AI场景需求。
Milvus提供多种部署选项,覆盖从原型开发到企业级生产的全流程,新手可从轻量版入手:

对于熟悉传统数据库的开发者,Milvus的核心概念可直接对应理解,降低学习成本:
Milvus向量数据库 | 关系型数据库 | 核心说明 |
|---|---|---|
Collection(集合) | 表(Table) | 存储结构相同的实体集合,Schema定义字段类型(主键、向量、标量) |
Entity(实体) | 行(Row) | 数据基本单位,包含主键、向量字段、标量字段(如分类、价格) |
Field(字段) | 表字段(Column) | 分为向量字段(存储高维向量)和标量字段(存储结构化数据,支持过滤) |
Milvus采用云原生微服务架构,核心组件分工明确,数据处理流程清晰:

插入数据 → 生成日志(保障一致性) → 持久化到存储层 → 后台构建索引 → 支持查询检索,全程无需人工干预索引构建。
索引是提升查询速度的核心,Milvus支持多种索引类型,一个向量字段仅能指定一种:
索引类型 | 适用场景 | 核心特点 |
|---|---|---|
FLAT | 小数据集、需精准搜索 | 精度100%,构建速度快,但内存消耗高 |
IVF_FLAT | 平衡精度与性能的通用场景 | 精度99%,内存消耗中等,构建速度较快 |
HNSW | 高召回率需求(如推荐系统) | 精度98%,查询速度快,但内存消耗高 |
IVF_PQ | 超大规模数据存储 | 精度95%,内存消耗低,适合千亿级向量场景 |
下面通过简单示例,演示如何用Python操作Milvus(基于pymilvus库),适合新手入门:
pip install pymilvus==2.5.5 # 安装指定版本,确保兼容性from pymilvus import FieldSchema, CollectionSchema, DataType, Collection, connections
# 1. 连接Milvus服务(Lite版无需额外启动,Standalone版需先启动Docker)
connections.connect("default", host="localhost", port="19530")
# 2. 定义字段:主键、向量字段、标量字段
fields = [
# 主键字段:INT64类型,唯一标识
FieldSchema(name="id", dtype=DataType.INT64, is_primary=True),
# 向量字段:768维浮点向量(适配主流Embedding模型)
FieldSchema(name="vector", dtype=DataType.FLOAT_VECTOR, dim=768),
# 标量字段:字符串类型(商品分类)
FieldSchema(name="category", dtype=DataType.VARCHAR, max_length=50),
# 标量字段:浮点类型(商品价格,支持过滤查询)
FieldSchema(name="price", dtype=DataType.FLOAT)
]
# 3. 创建集合Schema,添加描述
schema = CollectionSchema(fields, description="商品向量库(用于推荐系统)")
# 4. 创建Collection(集合名:products)
collection = Collection(name="products", schema=schema)
print("Collection创建成功!")collection.create_index("vector", index_params={"index_type": "IVF_FLAT", "nlist": 128}))。collection.insert()方法插入实体数据(包含id、vector、category、price字段)。collection.search())或混合查询(结合price < 100等标量过滤条件)。
Milvus作为向量数据库的标杆产品,已被全球大厂广泛应用,核心场景包括:
Milvus向量数据库凭借高性能、高扩展性和丰富的生态支持,成为AI大模型(尤其是RAG系统)的核心存储组件。从新手入门的Lite版到企业级分布式部署,从简单的相似度搜索到复杂的混合查询,Milvus能满足不同阶段、不同场景的需求。