Ch13 RAG修订于 二〇二六年七月六日

深挖-向量数据库

一句话理解

专门存储和检索高维向量的数据库系统,是 RAG(检索增强生成)的核心基础设施,支撑语义搜索、推荐系统、相似度去重等场景。

零基础理解

传统数据库存的是数字和文本,查询时做精确匹配;向量数据库存的是”语义坐标”——上文 Embedding 模型输出的向量。查询时不是问”哪条记录等于 X”,而是问”哪些向量和 X 最接近”。你可以对向量数据库说:“找出和这段文字意思最接近的 100 篇文档”,它返回的是语义层面最相关的内容,而不是关键词匹配。

核心概念

向量索引 (Vector Index)

向量数据库的核心竞争力在于索引算法。暴力搜索(逐一比较)在百万级以上数据量时不可行,需要近似索引:

索引类型原理优点缺点
IVF (Inverted File)先聚类,搜索时只查最近几个聚类中心实现简单,内存友好精度受聚类质量影响
HNSW (Hierarchical Navigable Small World)多层图结构,上层跳跃,下层精细查询快,精度高内存占用大,构建慢
DiskANN基于图的索引,优化磁盘 I/O十亿级数据可存磁盘首次构建耗时长
PQ (Product Quantization)向量压缩,降维存储内存极省精度损失
ScaNNGoogle 出品,各向异性量化精度/速度平衡好主要面向 Google 生态

近似最近邻 (ANN)

Approximate Nearest Neighbor — 在精度和速度之间取折中。与 KNN(精确搜索)的区别:

  • KNN:O(N) 复杂度,保证返回真正的 Top-K
  • ANN:O(log N) 或 O(1) 复杂度,返回近似 Top-K,召回率通常 95%-99%

元数据过滤 (Metadata Filtering)

实际场景中,单纯语义搜索不够。需要叠加结构化条件:

  • 时间范围:“最近 30 天的文档”
  • 分类标签:“只查技术文档”
  • 权限控制:“只查当前用户有权限的内容”

过滤策略分为前过滤(Pre-filtering,先过滤再向量搜索)和后过滤(Post-filtering,先向量搜索再过滤)。前过滤可能漏掉语义相关但不满足条件的文档;后过滤可能返回数量不足。2026 年主流方案是混合过滤,在索引阶段同时考虑向量和标量。

结合 Sparse Retrieval(如 BM25)和 Dense Retrieval(向量搜索)的优势:

  • BM25:关键词精确匹配,适合专有名词、缩写
  • 向量搜索:语义理解,适合同义词、改写表达
  • 融合策略:RRF (Reciprocal Rank Fusion)、加权求和

分片和副本

  • 水平分片:数据量超过单机容量时,按向量 ID 哈希分片
  • 副本:多副本提升吞吐和可用性,需保证一致性

2026 年主流向量数据库对比

数据库类型索引算法分布式混合检索开发者体验适用场景
Milvus开源 (Zilliz)IVF/HNSW/DiskANN是,云原生支持中等,需学习概念十亿级生产环境
Pinecone商业 SaaS自研 (不公开)是,全托管支持优秀,< 5 分钟上手不想运维的团队
Qdrant开源 (Rust)HNSW是,支持集群强,过滤性能突出优秀,API 简洁高性能+复杂过滤
Weaviate开源HNSW/Flat是原生支持 (hybrid)优秀,GraphQL 接口需要混合搜索
Chroma开源 (Python)HNSW否有限极佳,一行代码原型开发、小数据
pgvectorPostgreSQL 扩展IVFFlat/HNSW依赖 PG是 (SQL JOIN)极佳,复用现有 PG已有 PG 的团队
Elasticsearch开源/商业HNSW是原生支持 (BM25+dense)优秀,生态成熟已有 ES 的团队
FAISS开源 (Meta)IVF/HNSW/PQ否否库级别,需自行封装嵌入式、研究场景

选型框架

你需要选什么向量数据库?
│
├── 数据量 < 10万条?
│   └── 是 → Chroma 或 pgvector,够用且简单
│
├── 已有 PostgreSQL?
│   └── 是 → pgvector,零额外基础设施
│
├── 已有 Elasticsearch?
│   └── 是 → ES 原生向量搜索,无需引入新组件
│
├── 需要零运维?
│   └── 是 → Pinecone (商业) 或 Zilliz Cloud (Milvus 托管版)
│
├── 需要复杂元数据过滤?
│   └── 是 → Qdrant 或 Weaviate
│
├── 数据量 > 1 亿条?
│   └── 是 → Milvus (分布式) 或 Pinecone (商业)
│
└── 预算有限 + 大规模?
    └── Milvus 开源版 或 Qdrant 集群

2026 年趋势

1. 向量数据库与传统数据库边界模糊

PostgreSQL (pgvector)、Elasticsearch、MongoDB Atlas、Cassandra 等传统数据库/搜索引擎纷纷内置向量搜索能力。对于多数团队,“一个数据库搞定所有”比”引入专门的向量数据库”更有吸引力。

2. 混合检索成为标配

单独依赖向量搜索已不够。2026 年的主流方案是向量 + BM25 + 结构化过滤的三合一。Weaviate 和 Elasticsearch 在这方面走在前列。

3. 成本优化与量化

  • 向量压缩 (Product Quantization, Scalar Quantization)
  • 磁盘索引 (DiskANN, Vamana) 降低内存需求
  • 分层存储 (热数据/冷数据)

4. 多模态向量检索

同时索引文本、图像、音频的向量,在同一个数据库中进行跨模态检索。

相关笔记

来源

关联13

知识图谱

局部图谱 · 点节点跳转