549 字
3 分钟
文本嵌入的长度偏差
2025-04-23

总结自 On the Size Bias of Text Embeddings and Its Impact in Search

文本嵌入的 “长度偏差”#

长文本在与其他文本计算余弦相似度时,往往会获得更高的相似度分数,即使实际内容并不相似。这种偏差使得无法仅凭相似度数值判断匹配结果的相关性——不能说“任意余弦大于 0.75 即相关”,因为长度较大的文档也能轻易达到这一阈值却毫无关联。

实验#

  • 文档—文档比较:选取 CISI 数据集(共 1,460 篇文档),使用 Jina-embeddings-v3 模型(text-matching 任务)计算两两余弦,平均 0.343,标准差 0.116。
  • 句子—句子比较:将文档拆分为 6,331 个句子后重复计算,平均 0.254,标准差 0.116。
  • 文档—句子混合比较:文档与句子之间的平均余弦为 0.276,标准差 0.119。
  • 超长文档比较:将文档按每 10 篇拼接成 146 条超长文档,平均余弦飙升至 0.658,标准差 0.09。

这些结果清晰地表明:文本越长,其嵌入向量与其他向量的平均夹角越小。

成因#

这种偏差并非模型架构自身引入,也不是简单的长度效应,而是因为更长的文本包含更多不同的信息点,其向量在语义空间中“扩散”得更广,与更多内容产生一定程度的对齐,从而平均相似度更高。

策略#

  • 非对称编码(Asymmetric Encoding):在编码时对查询和文档使用不同设置,可降低但无法消除长度偏差。
  • Reranker 重新排序器:例如 jina-reranker-v2-base-multilingual,通过额外的排序模型提高准确度,但其分数同样不具备绝对度量意义。
  • 基于大模型的相关性评分:可让 LLM 对候选文档进行打分(如“1–10 分”),虽然尚需专门训练或高级提示,但这一思路有望更直接地衡量相关性。

参考#

文本嵌入的长度偏差
https://blog.lpkt.cn/posts/semantic-search-cosine-defect/
作者
lollipopkit
发布于
2025-04-23
许可协议
CC BY-NC-SA 4.0