Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

VSAG 中的度量语义

本页说明 VSAG 对 l2ipcosine 的实际处理方式。

警告:VSAG 的内部度量实现是为了性能和一致性做过优化的, 其行为可能与教科书上的数学定义不完全一致。做结果对比或准备 真值时,请以本页描述的语义为准。

VSAG 的搜索接口统一采用“越小越好”的距离模型。为保证性能和跨索引行为一致, 内部实现常会复用平方距离、归一化向量或模长缓存。

l2

  • 距离计算公式为 L2Sqr(L2 平方距离)。
  • 内部很多内核会直接使用 L2Sqr 来加速计算。
  • 平方形式是为了性能考虑,排序结果仍与 L2 距离一致。返回的距离值和 范围搜索阈值都是平方后的值。

ip

  • 距离计算公式为 1 - inner_product
  • 内积越大,距离越小。

cosine

  • 距离计算公式为 1 - cosine_similarity
  • 为了性能,某些实现会先归一化向量,或保存额外的模长信息, 以复用面向 IP 的计算内核。

cosine 搜索通常假定内部计算路径使用归一化向量。由于实现可能会 执行归一化或缓存模长,返回值的语义目标仍是“距离”,但浮点误差 可能使结果略微偏离理论值域。

返回值范围

  • l20+infinity
  • ip:无上界;当 inner_product > 1 时,值可能为负
  • cosine:理论上在 cosine similarity 落在 [-1, 1] 时为 02, 但浮点误差下可能略微越界

为什么要说明这一点

  • 数据集真值、查询语义和索引内部实现必须使用同一套度量约定。
  • 索引构建后,l2ipcosine 不能互相切换。
  • 跨工具对比结果时,要先确认对方使用的是“距离”还是“相似度”语义。

相关页面