概念定义
向量搜索又称相似度搜索,它接收查询嵌入并返回在某种距离度量下距离最近的已存向量。朴素做法会给每个向量打分,数千条目可行,但百万级就过慢,因此生产系统改用近似索引,用可测量的小幅召回损失换取延迟与内存的大幅改善。
为什么重要
它是语义检索的核心机制。它不匹配表层词元而匹配含义,因此在换述、拼写错误与多语言场景下都有效。在检索增强生成中,它挑选模型应阅读的段落,其召回率直接决定了回答质量的上限。
工程实践
度量方式要与嵌入训练方式一致,若度量假设单位长度就先归一化,并在线性评分与向量评分之间做混合检索。元数据过滤要在索引内部预过滤而不是检索之后,设定相似度下限避免弱邻居,并在标注集上持续测量召回率,使近似保持诚实。索引的构建参数与查询强度需要反复调优:加大搜索范围能提高召回却增加延迟,减小内存占用则往往牺牲质量,因此应把召回率、延迟与内存三者一起权衡,并记录每次变更后的基准结果,避免凭感觉调整。
代码示例
export function binarySearch(sorted, target, compare = (a, b) => a - b) {
let low = 0;
let high = sorted.length;
while (low < high) {
const mid = (low + high) >>> 1;
const cmp = compare(sorted[mid], target);
if (cmp < 0) {
low = mid + 1;
} else {
high = mid;
}
}
const found = low < sorted.length && compare(sorted[low], target) === 0;
return { index: low, found };
}