向量检索

向量检索是一种基于向量空间模型的信息检索技术,它通过将数据(如文本、图像、音频等)转换为高维向量,然后计算向量之间的相似度来找到与查询最相似的数据。

向量度量

常见的向量度量有四种:欧式距离、余弦、内积、海明距离

向量检索与传统检索思维框架本质上没区别,其重点在于向量索引结构。主要包含两方面:

  1. 减少候选向量集,传统文本检索用倒排索引过滤无关文档,向量检索则建立索引结构过滤不相关向量;
  2. 降低单个向量计算复杂度,传统文本检索用漏斗模型,而向量检索对高维向量进行量化、近似计算,最后在小数据集上排序原始向量。

向量索引方法

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。

暴力计算