LEANN中的归一化嵌入支持


文档摘要

LEANN 中的归一化嵌入支持 LEANN 现在能够自动检测归一化嵌入模型,并为实现最佳性能而设置合适的距离度量。 什么是归一化嵌入? 归一化嵌入是 L2 范数等于 1 的向量(即单位向量)。这些嵌入经过优化,更适合计算余弦相似度,而非最大内积搜索(MIPS)。由于归一化向量的长度恒为 1,余弦相似度等价于点积,因此在归一化空间中,余弦相似度和点积排序结果一致,但使用余弦距离(1 - 余弦相似度)作为度量能确保 HNSW 等近似最近邻算法的正确性和效率。

LEANN 中的归一化嵌入支持

LEANN 现在能够自动检测归一化嵌入模型,并为实现最佳性能而设置合适的距离度量。

什么是归一化嵌入?

归一化嵌入是 L2 范数等于 1 的向量(即单位向量)。这些嵌入经过优化,更适合计算余弦相似度,而非最大内积搜索(MIPS)。由于归一化向量的长度恒为 1,余弦相似度等价于点积,因此在归一化空间中,余弦相似度和点积排序结果一致,但使用余弦距离(1 - 余弦相似度)作为度量能确保 HNSW 等近似最近邻算法的正确性和效率。

自动检测机制

当您使用归一化嵌入模型创建一个 LeannBuilder 实例时,LEANN 将:

  1. 如果未指定,自动设置 distance_metric="cosine"
  2. 如果您手动指定了不同的距离度量(如 "mips""l2"),则显示警告
  3. 使用正确的度量可提供最优的搜索性能和结果准确性

支持的归一化嵌入模型

OpenAI

所有 OpenAI 文本嵌入模型均为归一化:

  • text-embedding-ada-002
  • text-embedding-3-small
  • text-embedding-3-large

Voyage AI

所有 Voyage AI 嵌入模型均为归一化:

  • voyage-2
  • voyage-3
  • voyage-large-2
  • voyage-multilingual-2
  • voyage-code-2

Cohere

所有 Cohere 嵌入模型均为归一化:

  • embed-english-v3.0
  • embed-multilingual-v3.0
  • embed-english-light-v3.0
  • embed-multilingual-light-v3.0

示例用法

from leann.api import LeannBuilder # Automatic detection - will use cosine distance builder = LeannBuilder( backend_name="hnsw", embedding_model="text-embedding-3-small", embedding_mode="openai" ) # Warning: Detected normalized embeddings model 'text-embedding-3-small'... # Automatically setting distance_metric='cosine' # Manual override (not recommended) builder = LeannBuilder( backend_name="hnsw", embedding_model="text-embedding-3-small", embedding_mode="openai", distance_metric="mips" # Will show warning ) # Warning: Using 'mips' distance metric with normalized embeddings...

非归一化嵌入

facebook/contriever 这样的模型以及其他非归一化的 sentence-transformers 模型(如 all-MiniLM-L6-v2bge-base-en 等),默认将继续使用 MIPS,这对它们来说是最优选择。这些模型的输出向量未经过 L2 归一化,因此最大内积搜索能更准确地反映语义相关性。

为什么这很重要?

如果对归一化嵌入使用了错误的距离度量,可能会导致:

  • 搜索质量下降,因为 HNSW 在分数范围较窄时会提前终止
  • 搜索结果排序不正确
  • 性能不如使用正确度量时理想

在归一化嵌入空间中,MIPS 与余弦相似度等价,但 HNSW 索引对距离函数的单调性和范围敏感。使用 mips 距离度量时,HNSW 会将内积视为“距离”,而内积值越大表示越相似,这与 HNSW 默认的“距离越小越相似”假设相冲突,可能导致索引构建或查询行为异常。

有关此问题的更多详细信息,请参阅我们位于 embedding detection code 中的分析。该代码可自动处理归一化嵌入及 MIPS 距离度量相关问题。

决策流程图

免责声明
本文档采用基于机器的 AI 翻译服务进行翻译。尽管我们力求准确,但请注意,自动翻译可能存在错误或不准确之处。应以原文语言版本的文档作为权威依据。如需获取关键信息,建议使用专业的人工翻译。对于因使用本翻译而产生的任何误解或误读,我们概不负责。


作者与出处
原作者: yichuan-w
来源:yichuan-w
许可证:MIT
整理: 灏天文库整理
由灏天文库结构化整理,提供目录导航、全文检索与在线阅读,便于系统化学习
发布者: 作者: yichuan-w 转发
评论区 (0)
U