Amadeus的知识库 | RAG高效向量检索的秘密?—— 关于向量数据库你必须知道的!

张开发
2026/4/16 16:02:06 15 分钟阅读

分享文章

Amadeus的知识库 | RAG高效向量检索的秘密?—— 关于向量数据库你必须知道的!
一、引文大家可能会好奇向量直接存普通数据库像MySQL这些不就可以了吗为啥还折腾出个向量数据库它跟普通数据库有什么区别吗那本篇文章就将聚焦 RAG 实现高效向量检索的秘密向量数据库来进行讲解将包括它内部的索引算法同时类比传统数据库阐释它里面的一些核心概念。二、普通数据库的检索困境如果说我们想要把向量化后的文档存储在诸如MySQL这种普通数据库里面基于技术实现的角度那肯定是没问题的把向量序列化成字符串存入MySQL的表中字段里但是大家别忘了 RAG 的检索流程它是把用户问题也向量化然后拿到数据库里面去找跟它相似的向量那问题就出在了找相似这个阶段要知道照 MySQL 这种数据库的检索方式你得遍历数据库里面所有的向量每个都跟查询向量做余弦相似度计算把最终结果排序取top-k个。每次查询都会进行IO操作而且一旦用户量多起来数据库里面向量多起来这个检索过程是很长的极度影响用户体验。三、向量数据库高效检索的秘密所以我们才要使用向量数据库来专门存储向量化后的文档数据其中的重要原因就是向量数据库内部提供了向量检索的核心算法近似最近邻搜索ANN。它的核心思想是既然把数据库里面的数据都遍历一遍计算余弦相似度太慢了那就只比较数据库中的一部分数据取最相似的即可。ANN 它不保证找到数据库中最相似的那几个向量化文档但是它能够保证在极短时间内尽可能找到非常接近最优解的结果。一句话概括向量数据库 向量存储 ANN 索引 高效检索。它是专门为“在海量向量中快速找到最相似的那几个”这件事而设计的。这就是向量数据库与普通数据库最关键的区别所在。目前最主流的 ANN 算法有 IVF 和 HNSW两种接下来我们会具体介绍它们的大致思想便于你了解为什么 ANN 算法能够使得向量数据检索如此高效。1.IVF —— 倒排文件索引IVF 算法的全称叫 Inverted File Index倒排文件索引它的核心思想是先把向量数据库中的向量先进行分区查询时只在最可能的几个区域里面进行查找。第一步通常是利用 K-Means 这类的聚类算法把所有向量分成若干个簇每个簇有各自的核心代表该簇中所有向量的平均位置然后拿查询向量先跟所有簇核心计算距离只在距离最近的那几个簇里面找相似的向量化文档块。2.HNSW —— 分层可导航小世界图HNSW 的全称是 Hierarchical Navigable Small World Graph分层可导航小世界图简单来说它的核心思想是将“跳表”Skip List的分层思路应用到了“图”Graph结构中。1 NSW (Navigable Small World) —— 航向小世界在理解“分层”之前先看什么是 NSW。小世界网络想象一个社交圈虽然全球有几十亿人但你通过“朋友的朋友”通常只需要 6 个人就能联系上任何人。构图方式在向量空间中我们将每个向量看作一个点并将每个点与其最近的几个邻居相连。搜索方式贪心算法从图中随机选一个点作为起始点。计算该点的所有邻居与目标点Query的距离。移动到离目标点最近的那个邻居。重复此过程直到周围没有比当前点更近的邻居为止。NSW 的缺点当数据量达到亿级时这种平面的图结构搜索效率会退化容易陷入局部最优或者需要跳跃很多次。2Hierarchical (分层机制) —— 灵感来自跳表HNSW 借鉴了跳表 (Skip List)的原理。跳表通过在顶层建立稀疏的索引实现快速跨越。HNSW 把图分成了很多层第 0 层最底层包含所有的数据点。上层Level 1, Level 2...只包含部分数据点。越往上点越稀疏。插入规则当一个新点进入系统时算法会通过概率计算给它分配一个“最高高度”。如果一个点被分配到第 2 层那么它在第 0、1、2 层都会存在。3HNSW 的搜索流程从顶向下假设你要在百万级数据中找最相似的向量过程就像坐飞机转地铁顶层快车道从最高层的进入点Entry Point开始。由于点非常稀疏你可以通过极少的几次跳转迅速跨越巨大的物理距离定位到目标点所在的“大致区域”。逐层下沉找到顶层最接近的点后以此点为起始进入下一层。底层慢车道/步行每一层都比上一层更密集。你不断重复“贪心搜索”和“层级下沉”直到到达第 0 层。最终精搜在第 0 层进行局部的精细搜索找到最终的 K 个最近邻。这种“先在大尺度找再在小尺度细搜”的策略将搜索复杂度从 O(N) 降到了 O(logN)。4关键参数性能调优在实际使用 HNSW 索引时有三个核心参数决定了它的表现M (Max Connections)每个节点在每一层最多连接多少个邻居。M 越大召回率准确度越高但内存消耗越大索引构建也越慢。efConstruction (Build Search Effort)在创建索引时搜索邻居的范围。越大索引质量越高搜索更准但建库时间会显著增加。efSearch (Search Effort)在实际查询时保留的候选列表大小。越大查询越准但响应时间Latency会变长。5HNSW 的优缺点总结优点速度极快在高维数据下表现极其出色响应通常在毫秒级。高召回率它是目前精度最高的近似搜索算法之一非常接近暴力搜索的结果。支持增量更新可以随时往索引里加新数据不需要像某些算法如 IVF那样重新训练聚类中心。缺点内存消耗大这是 HNSW 最大的痛点。因为它不仅要存原始向量还要存复杂的图结构指针、邻居关系。相比于压缩算法如 PQ它需要的内存多出数倍。不支持内存映射很难直接把索引存在磁盘上运行速度会掉得非常厉害通常必须全部加载进内存。HNSW 是通过分层图结构实现了一套从“粗略定位”到“精细搜索”的高效寻路算法是目前对性能要求极高的 RAG 系统、推荐系统的首选索引。四、向量数据库的核心概念类比传统数据库 (RDBMS)向量数据库 (Vector DB)说明数据库 (Database)数据库/命名空间 (Database/Namespace)顶层隔离容器两者叫法基本一致。表 (Table)集合 (Collection / Index / Class)存储数据的主体。Milvus 叫 CollectionPinecone 叫 IndexWeaviate 叫 Class。行 (Row / Record)实体 (Entity / Point / Document)单条数据记录。Milvus 叫 EntityQdrant 叫 Point。列 (Column / Field)字段 (Field / Attribute / Metadata)向量数据库通常分为“向量字段”和“标量字段元数据”。主键 (Primary Key)ID唯一标识符向量数据库通常强制要求一个 ID。索引 (Index / B-Tree)向量索引 (Vector Index / HNSW / IVF)传统索引用于精确查找向量索引用于近似最近邻ANN查找。SQL 查询相似度搜索 / 混合查询传统靠WHERE等值匹配向量数据库靠distance距离计算相似度。五、总结我们通过这篇文章主要解析了向量数据库在RAG系统中的核心地位。针对传统数据库在相似度检索中全表扫描效率低下的痛点向量数据库引入了近似最近邻搜索ANN算法在保证高精度的同时极大提升了检索速度。文章重点探讨了两大主流索引算法IVF通过聚类分区缩小搜索范围而HNSW则借鉴跳表思想构建分层图结构实现从“快车道”到“慢车道”的快速寻路是高性能检索的首选。此外文中还对比了向量数据库与传统数据库在集合、实体及索引等核心概念上的差异。总之向量数据库是专为海量向量高效检索而设计的关键基础设施。

更多文章