向量数据库在 AI 应用中的角色:从 Milvus 到 Chroma
什么是向量数据库
随着大语言模型(LLM)和 RAG(检索增强生成)技术的普及,向量数据库逐渐从一个小众技术领域走进了每位 AI 开发者的视野。简单来说,向量数据库是一种专门用于存储、索引和查询向量嵌入(embedding)的数据库系统。它将非结构化数据(文本、图像、音频)转换为高维向量,并基于向量之间的相似度进行检索。
为什么 AI 应用需要向量数据库
传统的关系型数据库基于精确匹配或模糊匹配(如 SQL 的 LIKE 查询),无法理解语义。而向量数据库的核心能力在于语义搜索——它可以通过余弦相似度、欧几里得距离等度量方式,找到「意思最接近」的内容,即使关键词完全不同。
这一能力恰好弥补了 LLM 的两个核心短板:
- 知识截止日期:LLM 的训练数据有截断时间,无法获知最新信息。通过 RAG 架构,向量数据库能让模型检索到最新的上下文信息。
- 幻觉问题:LLM 倾向于「编造」不确定的事实。向量数据库提供的外部知识可以约束模型输出,使其基于真实数据进行回答。
RAG 的基本工作流程如下:
- 将文档切分为 chunks(通常 256-1024 tokens)
- 用 embedding 模型(如 text-embedding-3-small、bge-large)将每个 chunk 转为向量
- 将向量存入向量数据库,同时存储原始文本
- 用户提问时,将问题转为向量,在数据库中做近似最近邻搜索(ANN)
- 返回最相似的 top-k chunks,拼入 prompt 送给 LLM
主流向量数据库对比
Milvus
Milvus 是目前功能最完备的开源向量数据库,由 Zilliz 开发,已被超过 10,000 家企业采用。它的核心优势在于分布式架构和强大的索引算法支持:
- 多种索引类型:IVF_FLAT、HNSW、DiskANN 等,覆盖从精确到近似的各种检索场景
- 混合搜索:支持向量相似度 + 标量字段过滤的组合查询
- 分布式扩展:通过 MQ(Pulsar/Kafka)实现写扩展,支持百亿级向量规模
- GPU 加速:支持 GPU 索引构建和查询,大幅提升吞吐
Milvus 适合大规模生产环境,但部署相对复杂。官方提供了 Milvus Cluster(Kubernetes)和 Milvus Lite(单机嵌入式)两种模式,后者适合开发和测试。
Chroma
Chroma 是主打「开发者友好」的轻量级向量数据库,Pythonic 的 API 设计让它成为 AI 原型开发的首选:
- 极简 API:四行代码就能完成文档索引和检索
- 自动 embedding:内置了 HuggingFace 和 OpenAI embedding 集成,无需额外配置
- 内存模式:默认运行在内存中,可持久化到磁盘
- Python 生态集成:与 LangChain、LlamaIndex 等框架深度整合
Chroma 的定位是「AI 应用的向量数据库」,而不是「分布式数据平台」。它在原型验证和小型项目中表现极佳,但单节点设计限制了它在超大规模场景下的应用。
其他值得关注的选项
- Pinecone:全托管 SaaS 方案,零运维成本,但价格较高
- Weaviate:支持丰富的模块化架构,内置向量化和生成模块
- Qdrant:Rust 编写的高性能向量数据库,单机性能出色
- PGVector:PostgreSQL 的向量扩展,适合已有 PG 基础设施的团队
实际选型建议
根据项目阶段选择最适合的方案:
- 原型验证 / MVP:Chroma 或 PGVector,零部署成本,快速迭代
- 中小规模生产(百万级向量):Qdrant 或 Weaviate,部署简单,性能可靠
- 大规模生产(亿级向量):Milvus 或 Pinecone,分布式架构保证线性扩展
另外有一个经常被忽视的决策维度——embedding 模型与向量数据库的协同。不同 embedding 模型输出的向量维度不同(如 ada-002 是 1536 维,bge 系列从 384 到 1024 不等),选择数据库时需要确认对向量维度的支持上限。
性能调优要点
无论选择哪个向量数据库,以下几个参数对检索效果影响最大:
- chunk 大小:太大会包含噪声,太小会失去语义完整性。经验值是 256-512 tokens,重叠 10-20%。
- top-k 选择:通常 3-10 个 chunks 效果最佳。过多的上下文会稀释 LLM 的注意力。
- 索引参数:HNSW 的 efConstruction 和 M 参数需要在构建速度和召回率之间做权衡。
- 相似度阈值:设定最小相似度分数(如 0.75),过滤掉低质量的检索结果。
总结
向量数据库已经从「有没有必要用」的阶段进入了「怎么用好」的阶段。对于 AI 应用开发者来说,理解不同向量数据库的定位和权衡,比纠结于某一种技术的细节更重要。从 Milvus 的工业级能力到 Chroma 的极简体验,向量数据库正在不断降低 AI 应用的门槛,让开发者能更专注于业务逻辑而非基础设施。