如果你让一个LLM去做文本嵌入——就是把一段文字变成一个向量——你会发现它做得相当差。明明这个模型能写诗、能推理、能写代码,怎么连把文字变成向量这种"基础操作"都做不好?
人民大学和联想的研究团队找到了答案,而且答案就藏在模型自己身上。
一个反直觉的发现
研究者观察到了一个奇怪的现象:当你把LLM生成的文本嵌入投射回词汇空间时,这些嵌入居然和那些高频但毫无信息量的token高度对齐。
什么意思?想象你让模型把"量子计算将在2030年实现商业化"这句话变成一个向量。你期望这个向量能捕捉"量子计算"、"商业化"这些语义信息。但实际上,这个向量更接近于"的"、"是"、"了"这些高频词的表示。
这不是bug,这是LLM的"出厂设置"在作祟。
逆向工程"平均token"
研究者的思路很巧妙:既然嵌入和词频有关,那我们能不能反推出一个"平均token"——就是训练语料中最常见的那个"典型"token的隐藏状态?
他们利用LLM的unembedding矩阵(就是模型最后一层把隐藏状态映射回词汇的那个矩阵),结合训练语料的词频分布,成功逆向工程出了这个"平均token"。
然后他们做了一件更巧妙的事——对这个"平均token"做Logit光谱分析(Logit Spectroscopy)。就像用棱镜把白光分解成不同颜色的光谱一样,他们把unembedding矩阵的奇异值分解成不同的频段。
结果发现:边缘频谱子空间(edge spectrum subspace)——对应最大和最小奇异值的那些维度——正是驱动高频token涌现的元凶。
EmbedFilter:一个简单到令人怀疑的解决方案
找到了病因,治疗就简单了。研究者提出了EmbedFilter:一个线性变换,把边缘频谱子空间过滤掉,只保留中间的"主体频谱"。
具体来说,对unembedding矩阵做SVD分解后,去掉最大和最小的若干个奇异值对应的维度,用剩下的维度构建一个投影矩阵,然后对原始嵌入做投影。
就这么简单。不需要微调,不需要额外训练,不需要改变模型任何参数。一个线性变换,完事。
效果如何?
在MTEB(大规模文本嵌入基准)上的结果:
- Qwen-2.5 + EmbedFilter:平均分从52.23提升到55.39(+6.1%)
- Llama-3.1 + EmbedFilter:平均分从56.73提升到58.79(+3.6%)
在检索任务上提升尤其明显——Qwen的检索得分从28.17飙升到34.58(+22.7%)。
更妙的是,因为EmbedFilter本质上是在降维(去掉了一些维度),所以存储和检索速度也自然提升了,而且嵌入质量反而更好。这就像给照片去噪——去掉噪声后,文件变小了,画面反而更清晰。
为什么这个发现重要
这篇论文揭示了一个深层的机制性洞察:LLM的unembedding矩阵不仅仅是一个"输出层"——它实际上编码了一个潜在空间,这个空间在主动把高频token"写入"嵌入空间。
换句话说,LLM做不好嵌入不是因为"能力不够",而是因为它的架构里有一个内置的"偏好",让嵌入天然偏向高频词。这个偏好对语言生成有用(毕竟"的"确实比"量子"更常见),但对语义表示有害。
EmbedFilter的优雅之处在于它不是在对抗这个偏好,而是在嵌入生成之后把它"过滤"掉。模型本身完全不变,你只是在最后一步把"噪声"清除了。
这让我想起一个类比:你的耳朵天生对某些频率更敏感(比如婴儿哭声的频率),这在进化上有意义,但听音乐时你会想用均衡器把这些频率压一压。EmbedFilter就是LLM嵌入的均衡器。
论文:Your UnEmbedding Matrix is Secretly a Feature Lens for Text Embeddings (arXiv: 2606.07502)
链接:https://arxiv.org/abs/2606.07502
代码:https://github.com/CentreChen/EmbFilter
作者:Songhao Wu, Zhongxin Chen, Yuxuan Liu, Heng Cui, Cong Li, Rui Yan (人民大学/联想/武汉大学)
#arXiv #论文精选 #文本嵌入 #LLM #UnEmbedding #EmbedFilter #机制可解释性
讨论回复
0 条回复还没有人回复,快来发表你的看法吧!
推荐
智谱 GLM-5 已上线
我正在智谱大模型开放平台 BigModel.cn 上打造 AI 应用,智谱新一代旗舰模型 GLM-5 已上线,在推理、代码、智能体综合能力达到开源模型 SOTA 水平。