549 字
3 分钟
文本嵌入的长度偏差
总结自 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 分”),虽然尚需专门训练或高级提示,但这一思路有望更直接地衡量相关性。
参考
- Jina Embeddings v3 https://jina.ai/?model=jina-embeddings-v3&sui=
- CISI 数据集(University of Glasgow IR Group) https://ir.dcs.gla.ac.uk/CISI.ALL
- CISI 数据集 https://raw.githubusercontent.com/GianRomani/CISI-project-MLOps/refs/heads/main/CISI.ALL
- NLTK(文本切分库)https://www.nltk.org
- 长上下文模型偏差 https://jina.ai/news/long-context-embedding-models-are-blind-beyond-4k-tokens/
- Asymmetric query-document encoding https://jina.ai/news/jina-embeddings-v3-a-frontier-multilingual-embedding-model/
- Jina Reranker v2 Base Multilingual https://jina.ai/?model=jina-reranker-v2-base-multilingual&sui=