Skip to content

RAG 为什么需要向量数据库?它和传统数据库有什么区别? ​

  • 标签:RAG、向量数据库

🏛 业务架构师 ​

RAG 需要向量数据库的根源:语义检索需要"按数学距离找相近向量"的专用引擎——Embedding 把文本变成高维向量(512~1536 维)后,业务需求变成"从千万级向量里毫秒级找出与 query 向量最近的 K 个",这是传统数据库索引(B+树、倒排)完全不适配的负载。向量数据库为此而生:ANN 索引(HNSW/IVF)、向量专用存储与距离计算优化、元数据过滤与向量检索的组合。

与传统数据库的区别(按能力维度):

  1. 查询范式:传统库精确匹配与条件过滤(SQL);向量库做"模糊语义近邻"(相似度 Top-K)——答"像不像"而不是"等不等";
  2. 索引结构:B+树/倒排 vs 图索引(HNSW)/聚类(IVF)/量化(PQ)——后者为高维空间的近似搜索优化;
  3. 无精确性保证:ANN 是近似的(召回率换速度)——传统数据库工程师要适应"可能漏"这个设定;
  4. 事务与一致性弱:向量库普遍不支持 ACID——所以生产架构里它不替代传统库,而是配合:元数据、权限、业务数据仍在关系库,向量库只管"语义召回"那一段。

业务选型的清醒认知:向量库是"检索引擎"的新成员而非数据库的替代者;中小规模用 pgvector(事务、运维、生态全继承)往往比专用向量库更务实;数据规模和 QPS 上来再上 Milvus 这类专用组件。企业架构里"关系库+向量库+缓存"三层各司其职是 2026 年 RAG 的标准形态。

🏗 系统架构师 ​

RAG 需要向量数据库的根因:语义检索需要"按向量相似度找近邻",这是传统数据库索引结构(B+树/倒排)不支持的操作。

传统数据库的检索模型 vs 向量库:

  • B+树索引:范围/等值查询(SQL WHERE)——精确条件匹配,做不了"语义相近";
  • 倒排索引(ES):词项匹配(BM25)——字面命中,"退款"搜不到"售后流程";ES 8.x 后加了 kNN 能力,属混合形态;
  • 向量库:高维向量的 ANN 索引(HNSW/IVF)——语义级相似检索,亚线性复杂度(百万级毫秒返回),这就是 RAG "找相关内容"的核心操作。

其他架构差异:

  • 数据模型:向量库 = 向量(768~3072 维)+ 标量元数据 + 距离度量(余弦/IP/L2),为 embedding 量身定做;
  • 一致性取舍:传统库强一致(ACID);向量库多为最终一致(写后立查有可见性延迟、删除是标记式)——为检索性能牺牲一致性,这是专用引擎的典型权衡;
  • 查询模式:ANN Top-K + 标量过滤的组合操作是向量库的核心路径;传统库没有等价物;
  • 扩展性:向量库原生分布式分片(按向量哈希)、量化压缩(PQ/SQ)——针对亿级向量规模设计。

架构师提醒:两者不是替代关系——元数据、权限、原文档仍放关系库,向量库只管"语义指纹";5000 万向量以内 PGVector 也能干(一库两用),规模与 QPS 上来才需要专用向量库。选型先算容量账(内存 ≈ N × 维度 × 4B),再谈架构。

💻 全栈开发专家 ​

RAG 需要向量数据库,本质原因是**「语义相似度搜索」不是传统数据库的设计目标**:

  • 传统 B+树/倒排索引:解决精确匹配与范围查询(where order_id='A123'、全文关键词命中)——查「退货政策」匹配不到只写「售后退换货流程」的文档;
  • 向量数据库:存 Embedding,建 ANN 索引(HNSW/IVF),毫秒级从千万级向量里找出「语义最相近」的 top-k——这是 RAG 检索的核心操作,传统索引结构(比较大小/字符串匹配)在数学上做不了「高维向量最近邻」。

区别对比(工程视角):

向量库传统关系库
查询方式相似度(余弦/内积)近似搜索SQL 精确/范围查询
索引HNSW 图/IVF 聚类B+树/哈希/倒排
结果top-k + 分数(概率性、无排序保证)确定性结果集
事务弱/无ACID
适合非结构化语义检索结构化业务数据

但生产上是组合使用而非二选一:向量库做语义召回 + 关系库存业务事实(订单/用户)+ 元数据过滤打通(PGVector 的价值正在于此:一张表里 metadata @> '{"dept":"sales"}' 和向量排序一起跑)。我的常用架构:向量检索出 chunk → 命中的 doc_id 回关系库 Join 出结构化上下文 → 一起进 prompt。别把向量库当万能库,它是检索引擎不是业务库。