人人都会AI编程

7.2 向量数据库技术

更新时间:2026-07-12

在 RAG 系统中,向量数据库承担着“知识记忆”的角色——它负责存储、索引和快速召回海量文档片段对应的向量。一句话概括:它让机器能够以语义相似度,而不是关键词匹配的方式,找到最相关的内容。

7.2.1 为什么需要向量数据库

传统数据库擅长精确查询(如“标题=年假政策”),但在自然语言场景中,用户的提问方式多变,很难用固定规则穷尽。例如,用户问“怎么退换货”和“产品不满意可以换吗”,表述完全不同,但意图高度相似。向量数据库通过比较文本在高维向量空间中的距离,能够捕捉这种语义关联,实现“意思相近”的检索。

相比直接在内存中暴力计算余弦相似度,专用的向量数据库提供了以下核心能力:

  • 近似最近邻(ANN)索引:在大规模数据下实现毫秒级检索。
  • 元数据过滤:同时按标签、时间、来源等结构化条件筛选。
  • 数据持久化与高可用:可靠的存储、备份和水平扩展能力。

7.2.2 核心技术原理

向量数据库的工作流程通常包括两部分:

  1. 向量化

文档片段通过嵌入模型(如 text-embedding-3-small)转换为固定维度的浮点数向量。理想的嵌入模型会将语义相近的文本映射到空间中相近的位置。

  1. 索引与检索

为了在千万级甚至亿级向量中快速找到最相似的 K 个,不能每次都全量计算。常见的索引算法包括:

  • HNSW(分层可导航小世界图):基于图的多层跳转结构,查询性能和召回率优秀,是许多主流数据库的默认选择。
  • IVF(倒排文件索引):将向量空间分割成多个聚类,查询时先定位相关聚类,再在小范围内精确搜索,适合内存敏感场景。
  • PQ(乘积量化):通过压缩向量降低内存占用,以小幅精度损失换取成本优化。

查询时,用户问题即时向量化,然后通过索引快速返回与查询向量距离最近(如余弦相似度最高)的 top-K 个片段及其元数据。

7.2.3 主流向量数据库选型

市面上可选的向量数据库很多,以下是几种经过大量实践验证的选择,各有侧重:

| 数据库 | 定位 | 优势 | 适用场景 |
|--------|------|------|----------|
| Milvus | 云原生分布式向量数据库 | 弹性扩展、多种索引算法、完善的元数据过滤 | 大型企业知识库、需要高并发查询 |
| Pinecone | 全托管向量数据库服务 | 零运维、易于上手、实时索引 | 中小团队快速构建原型,不想自建基础设施 |
| Qdrant | 高性能向量数据库 | Rust 实现,性能优异,过滤查询强 | 对查询延迟敏感,需要复杂过滤逻辑 |
| Weaviate | 向量数据库 + 元数据存储一体化 | 内置多种向量化模块,支持 GraphQL | 希望简化架构,一站式存储 |
| Chroma | 轻量级嵌入式向量数据库 | 极简部署,与 Python 生态深度集成 | 原型开发、小规模数据、单机部署 |

此外,一些成熟的传统数据库也增加了向量扩展,如 PostgreSQL 的 pgvector 插件,适合已深度使用关系型数据库、想在一条 SQL 中完成标量和向量混合查询的团队。

选型建议:如果只是从零开始验证方案,Chroma 或 Pinecone 免费层足够快速启动;需要生产级高可用和大规模扩展时,Milvus 或 Qdrant 是更稳妥的选择;对于有强事务或数仓需求的环境,pgvector 能减少技术栈复杂度。

7.2.4 向量数据库在 RAG 中的性能优化

向量数据库不是“插上即完美”,几个实用优化点能显著提升 RAG 的最终效果:

  • 合理的分块策略决定检索粒度

向量数据库存储的是切分后的 chunk,文本被切成 512 还是 1024 个 token,直接影响召回的完整性和精确度。实际调优时,应从业务角度确认一个 chunk 是否能独立表达一个完整观点。

  • 混合检索:向量 + 关键词

纯粹依赖向量相似度有时会漏掉精确术语匹配(如产品型号、法规编号)。引入稀疏检索或全文索引作为补充,在特定场景下可大幅提高召回率。

  • 元数据过滤避免噪音

如果知识库包含不同领域、不同时间的文档,检索时加上元数据约束(如“source=操作手册”“date>2024-01-01”)能筛掉大量明显不相关的片段,提升送入 LLM 的信息纯度。

  • 索引参数调优

生产环境中,调整 HNSW 的 M(每层连接数)和 ef(搜索时遍历范围)等参数,可以在召回率和查询延迟之间找到平衡。默认参数通常能跑通,但针对数据规模做优化后,表现往往有明显提升。

7.2.5 实用维护与监控

  • 定期评估召回质量:准备一个小型测试集,人工标注正确答案对应的片段 ID,定期测试向量数据库是否能稳定召回这些片段。
  • 关注资源使用:向量索引占用内存较大,随着数据增长,及时扩容或使用量化压缩,避免内存溢出导致查询退化。
  • 版本化与回滚:更新知识库时,尽量采用别名或版本化集合,方便在新版本索引效果不佳时快速回滚到上一稳定版本。

向量数据库是 RAG 系统的性能基石,理解其基本机制并在实践中妥善选型和调优,能够以较低成本实现高质量的语义检索,为后续生成环节提供真正有价值的上下文。