Contrastive Prompting Enhances Sentence Embeddings in LLMs through Inference-Time Steering¶
会议: ACL 2025
arXiv: 2505.12831
代码: GitHub
领域: LLM/NLP
关键词: sentence embedding, contrastive prompting, activation steering, inference-time, LLM
一句话总结¶
提出对比提示(Contrastive Prompting, CP)方法,通过构造辅助提示编码句子的非核心信息,在推理时将正常提示与辅助提示的隐层激活值做"语义减法",过滤停用词等无关语义,使 LLM 句子嵌入更聚焦核心语义,即插即用地一致提升 PromptEOL/CoT/Knowledge 等多种提示方法在 STS 和分类任务上的表现。
研究背景与动机¶
领域现状: 从 LLM 直接提取零样本句子嵌入(无需微调或额外数据)是实用方向,现有方法通过 prompt 工程将句子语义压缩到最后一个 token 的隐状态,如 PromptEOL("This sentence: '[TEXT]' means in one word:")、MetaEOL(多元 meta-task 提示)、Pretended CoT(思维链提示)、Knowledge(知识增强提示)等。
现有痛点: 即使精心设计 prompt,最后一个 token 仍编码了大量非核心信息——实验表明即使用 Knowledge 提示强调"主语和动作",解码概率最高的仍是停用词"a"而非语义关键词。Prompt 工程本质上只能间接改变表示,无法直接过滤非核心信息。
核心矛盾: 现有方法都是通过改变前缀文本间接影响最后 token 的表示,缺乏一种直接在隐层空间剥离非核心语义的机制。
本文切入点: 受 activation steering 启发,但不依赖监督正负样本对——用一个辅助提示("这句话的无关信息是...")自适应捕获每个句子的非核心信息激活,再用正常提示的激活减去辅助提示的激活,实现逐句自适应的"语义减法"。
方法详解¶
整体框架¶
三步流程:(1) 将文本包裹在辅助提示中前向传播到第 \(\ell\) 层,提取最后 token 的 contextualized value vector \(\mathbf{v}^{\text{aux},(\ell)}\);(2) 将文本包裹在正常提示中前向传播到第 \(\ell\) 层,计算对比向量 \(\Delta\mathbf{v}^\ell = \mathbf{v}^{\text{nor},(\ell)} - \mathbf{v}^{\text{aux},(\ell)}\) 并替换最后 token 的 value vector;(3) 对替换后的向量做范数调整,继续前向传播到中间层提取句子嵌入。
关键设计¶
-
辅助提示构造(Auxiliary Prompt): 设计模板 "The irrelevant information of this sentence: '[TEXT]' means in one word:" 引导 LLM 关注句子中的非核心信息并将其编码到最后 token。辅助提示仅需传播到低层(第 5\~7 层),计算开销极小。论文还探索了 "redundant information"、"background"、"descriptive term" 等变体,结果表明只要语义指向"非核心信息",效果均稳定提升,方法对辅助提示措辞不敏感。
-
对比激活导向(Contrastive Activation Steering): 在第 \(\ell\) 层多头注意力处,提取正常提示和辅助提示最后 token 的 contextualized value vector,计算语义激活向量 \(\Delta\mathbf{v}^\ell = \mathbf{v}_{N_\text{nor}}^{\text{nor},(\ell)} - \mathbf{v}_{N_\text{aux}}^{\text{aux},(\ell)}\)。该向量是逐句自适应的(不同句子生成不同的对比向量),不需要额外监督数据的正负样本对。仅干预最后一个 token 的 value vector,保持其他 token 不变。
-
范数调整与中间层嵌入(Norm Adjustment + Intermediate Embedding): 干预后向量范数可能显著变化,提出两种调整策略——Norm Scaling (NS): \(\hat{\mathbf{v}} = \alpha \cdot \Delta\mathbf{v}^\ell\),通过缩放因子 \(\alpha\) 控制干预强度(最优值 2\~3);Norm Recovering (NR): \(\hat{\mathbf{v}} = \Delta\mathbf{v}^\ell \cdot \frac{\|\mathbf{v}^{\text{nor}}\|_2}{\|\Delta\mathbf{v}^\ell\|_2}\),恢复原始范数以维持模型稳定性。此外采用中间层(而非最后一层)输出作为嵌入,进一步提升质量并节省计算。
即插即用特性¶
CP 是纯推理时干预,可与 PromptEOL、Pretended CoT、Knowledge、MetaEOL 等任意提示方法无缝组合,无需修改模型参数或训练流程。对于多提示方法(如 CK = CoT + Knowledge 平均),辅助提示只需传播一次即可同时优化所有正常提示。
实验关键数据¶
STS 基准(LLaMA2-7B,7 任务平均 Spearman×100)¶
| 方法 | Avg. (原始) | +CP-NS | +CP-NR | 提升幅度 |
|---|---|---|---|---|
| PromptEOL | 70.03 | 75.27 | 75.20 | +5.24 |
| Pretended CoT | 76.86 | 77.45 | 77.45 | +0.59 |
| Knowledge | 77.14 | 77.56 | 77.40 | +0.42 |
| CK (CoT+Know) | 78.23 | 78.68 | 78.60 | +0.45 |
跨模型泛化(Pretended CoT + CP-NS)¶
| Backbone | Avg. (原始) | +CP-NS | 提升 |
|---|---|---|---|
| LLaMA2-7B | 76.86 | 77.45 | +0.59 |
| LLaMA2-13B | 73.34 | 73.91 | +0.57 |
| LLaMA3.1-8B | 74.07 | 75.22 | +1.15 |
下游分类任务(LLaMA2-7B,PromptEOL + CP-NS)¶
| 任务 | 原始 | +CP-NS | 变化 |
|---|---|---|---|
| SUBJ | 96.32 | 96.97 | +0.65 |
| TREC | 95.40 | 97.00 | +1.60 |
| MRPC | 75.19 | 77.51 | +2.32 |
| SST2 | 95.00 | 95.94 | +0.94 |
| 7 任务 Avg. | 90.94 | 91.73 | +0.79 |
计算开销(前向传播层数,LLaMA2-7B 共 32 层)¶
| 方法 | 无 CP | 有 CP | 额外开销 |
|---|---|---|---|
| PromptEOL | 27 层 (1×) | 31 层 (1.15×) | +15% |
| Knowledge | 31 层 (1.15×) | 37 层 (1.37×) | +19% |
| CK (双提示) | 54 层 (2×) | 60 层 (2.22×) | +11% |
关键消融发现¶
- 干预位置: 注意力头 > Transformer 层输出 > FFN 输出,注意力头最优(STS-B dev 82.61 vs 81.93)
- 干预层: PromptEOL 最优第 5 层,CoT/Knowledge 最优第 7 层
- 缩放因子 \(\alpha\): PromptEOL 最优 2,CoT/Knowledge 最优 3,过大过小均降性能
- 解码概率验证: CP 后 top-1 预测 token 从停用词("It", "Don")变为语义关键词("Dec", "Throw")
亮点与洞察¶
- "语义减法"思路极简优雅——辅助提示捕获噪声激活,正常提示减去噪声 = 纯语义信号
- 逐句自适应生成对比向量,比传统 activation steering(需全局正负样本对)更灵活
- PromptEOL 提升最大(+5.24),因为其原始提示最简单、非核心信息最多,CP 的增益与基线方法的"弱点"成正比
- 辅助提示只传播到低层(5\~7 层),额外计算开销仅 11%\~19%
局限与展望¶
- 方法设计假设辅助提示能捕获"非核心信息",但对何为"核心"无理论保证,效果依赖辅助提示与正常提示的语义互补性
- 仅在英语 STS 和分类任务上评估,跨语言效果未验证
- 辅助提示设计虽然鲁棒但仍有一定主观性,指向"情感"或"实体"的提示反而降性能
- 干预层和缩放因子需在验证集上网格搜索,不同 prompt 的最优超参不同
- 未与微调方法(SimCSE-LLM 等)在同等规模下对比
- 未探索将 CP 与微调方法结合的可能——CP 作为推理时干预是否能在微调模型上继续叠加增益是开放问题
评分¶
- 新颖性: ⭐⭐⭐⭐ 辅助提示 + 激活对比的"语义减法"思路简洁新颖,将 activation steering 从需要监督数据推广到无监督逐句自适应
- 实验充分度: ⭐⭐⭐⭐ 覆盖 4 种基线方法、3 种 LLM backbone、STS + 分类双维度评估、干预位置/层/缩放因子/辅助提示全面消融
- 写作质量: ⭐⭐⭐⭐ 动机通过解码概率实验直观展示,方法三步流程清晰,图表丰富
- 实用价值: ⭐⭐⭐⭐ 即插即用无需训练,开销极小(+15%),可直接集成到生产系统的句子嵌入管道