RAG:七种用于向量数据库+相似性搜索的索引方法 原创
01、概述
在现代数据库类型中,尽管关系型数据库(Relational DB)、NoSQL数据库和图数据库(Graph DB)各有千秋,但在RAG(Retrieval-Augmented Generation)系统中,Vector DB却成为首选。它不仅支持水平扩展,还能结合CRUD操作(Create, Read, Update, Delete)提供元数据过滤功能,大幅提升数据检索效率和智能性。
本文将带你全面解析Vector DB,从基础概念、工作原理到查询加速的核心算法,帮助你更好地理解其强大功能及在RAG管道中的不可替代性。
02、为什么选择Vector DB?
在一个包含1000份文档的RAG系统中,假设我们将文档分块并嵌入到向量空间,生成三维向量,存储词条如“dog”“cat”“ball”。当用户查询“horse”时,传统关系型数据库只能检索精确匹配的记录,而Vector DB通过近似最近邻搜索(Approximate Nearest Neighbour, ANN),能够返回“donkey”这一语义上最相似的记录。
这种语义匹配能力使得Vector DB在知识增强生成(RAG)系统中脱颖而出。无论是回答简单查询,还是在高维向量空间中发现隐藏的语义关联,Vector DB的性能和灵活性都远胜其他类型数据库。
03、Vector DB与其他数据库对比
主要数据库类型及其应用场景
与其他数据库相比,Vector DB最大的特点是能以高效方式存储和检索高维向量。它不仅仅是数据存储工具,更是支持语义推理和智能查询的基础设施。
04、Vector DB的核心工作原理
Vector DB的关键在于存储和高效检索高维向量,其主要流程包括:
- 索引构建(Indexing)
- 查询处理(Querying)
- 后处理(Post-Processing)
以下将重点介绍索引构建中的关键算法,以及如何通过查询和相似性度量加速检索过程。
05、索引构建:加速查询的核心算法
索引是Vector DB性能的基石。良好的索引设计可在保证查询精度的前提下,大幅提升检索速度。以下是几种常见索引构建算法:
1) Flat Index(全量比较)
Flat Index采用暴力搜索方法,将每个查询点与数据库中的所有向量逐一比较,返回与查询点最接近的k个向量。
- 优点:精度最高,适合对查询结果要求极高的场景。
- 缺点:速度慢,尤其在高维数据和大规模数据集上。
2) 局部敏感哈希(Local Sensitivity Hashing, LSH)
LSH通过哈希函数将相似的高维向量分组至相同的哈希桶中,只需在对应桶内搜索即可。
- 特点:适合处理包含大量相似向量的大型数据集。
- 挑战:哈希函数和桶大小的选择直接影响性能。
3) 层次化小世界图(Hierarchical Navigable Small World, HNSW)
HNSW是一种基于图结构的算法,分层存储向量数据。每一层的节点通过边相连,边的权重表示相似性。
- 工作原理:查询时从顶层随机节点开始,逐层向下搜索相似节点,最终在底层找到最相似的向量。
- 优势:高效处理大规模数据,查询速度快。
4) 倒排文件索引(Inverted File Indexing, IVF)
IVF通过聚类算法将向量划分为多个簇,并构建簇的索引。查询时仅需在相关簇中进行搜索。
- 特点:通过控制簇的数量(nprobes)权衡精度与速度。
- 应用:适合中等规模数据集的快速查询。
5) 产品量化(Product Quantization, PQ)
PQ将高维向量分割为多个子向量,每个子向量通过k-means算法聚类,并存储其代表性质心。
- 优点:显著减少存储需求,同时保持相似性信息。
- 适用场景:需要在存储和性能之间寻求平衡的应用。
6) Spotify的ANNOY算法
ANNOY通过递归分割向量空间构建层次化索引,查询时沿层次结构搜索直到叶节点。
- 特点:轻量、高效,特别适合小型数据集或实时场景。
7) 随机投影(Random Projection)
随机投影通过随机矩阵将高维向量映射到低维空间,保留向量间的相似性关系。
- 优点:大幅减少维度,同时保留查询的准确性。
- 应用:适合维度极高的数据集。
06、查询与相似性度量
查询的核心是衡量向量间的相似性,以下是常见的相似性度量方式:
- 点积(Dot Product):衡量两个向量间的点积值,适合高维空间的相似性计算。
- 余弦相似度(Cosine Similarity):计算向量间夹角的余弦值,范围从-1到1。
- 欧几里得距离(Euclidean Distance):计算两向量间的直线距离,用于衡量绝对相似性。
07、总结与展望
Vector DB在RAG管道中的核心作用在于通过高效的索引与查询算法,支持语义相似性检索,弥补传统数据库在智能性上的不足。从Flat Index到HNSW,每种算法各有优劣,可根据具体应用场景选择合适的方案。
参考:
本文转载自公众号Halo咯咯 作者:基咯咯
原文链接:https://mp.weixin.qq.com/s/hGdzMGqw168a8S8gCSNtzA