向量检索是一种基于向量空间模型的信息检索技术,它通过将数据(如文本、图像、音频等)转换为高维向量,然后计算向量之间的相似度来找到与查询最相似的数据。
常见的向量度量有四种:欧式距离、余弦、内积、海明距离
向量检索与传统检索思维框架本质上没区别,其重点在于向量索引结构。主要包含两方面:
https://github.com/erikbern/ann-benchmarks
向量索引是一个研究得比较多的问题,学术上对应的专有名词叫Approximate Nearest Neighbor Search (ANNS),即近似最近邻搜索。
向量索引的定义:向量索引是指通过某种数学量化模型,对向量构建一种时间和空间都比较高效的数据索引结构,使得我们能够实时地获取跟查询向量尽可能最相近的K个向量。从定义可以看到,要设计一种高效的向量索引模型,应该满足3个基本条件,即:
| 类型 | 代表方法 | 原理与特点 |
|---|---|---|
| 暴力计算 | Brute-force | 直接全量计算,保证**100%**召回但复杂度高,适用于人脸识别等严苛场景 |
| 树 | KDTree, BallTree, VPTree | 按空间划分(超平面/球面/距离中值),依赖三角形不等式剪枝,回溯导致性能较低 allen。 |
| 哈希 | LSH(局部敏感哈希) | 依赖哈希碰撞:相近向量哈希值相同概率高,需针对不同度量设计哈希函数(内积无直接LSH)allen。 |
| 倒排 | 聚类倒排、BOW | 聚类生成中心点,向量归属最近中心点建立倒排;BOW处理局部特征 allen。 |
| 图 | HNSW, NSG, KGraph | 核心思想:邻居的邻居也可能是邻居。HNSW借鉴跳表分层,上层为下层缩影,通过图遍历缩小搜索范围 allen。 |