CodexQA

行业与实践研究与基准测试

指令检索 28.5:京东 InstEmb 预览输出

CodexQA 团队阅读约 4 分钟

京东云开发者社区 2026-07-20 记录 InstEmb。FollowIR 平均分 28.5,p-MRR +15.6。指令任务均值 67.08,对照 Inbedder 59.90。WISE 不是最高,长度消融只在图里。

本文目录

指令检索 28.5:京东 InstEmb 预览输出

京东云开发者社区在 2026 年 7 月 20 日发了指令遵循向量模型 InstEmb。页面作者是社区账号 bgsgkj751003。对照分数写在六张表里。look-ahead token 长度怎么涨,只在图 2,正文没有逐长度的数字。

Embedding 是把文本压成向量,给检索、聚类和 RAG 用。这篇认为现有做法只取输入最后一个 token 的 hidden state,看不见模型接下来会怎么答。InstEmb 在输入后面加可学习的 look-ahead tokens,用冻结 teacher 的输出条件表示做自蒸馏,再把输入语义和这份「未来语义」合成一条向量。推理时不再先解码再编码。

两类语义,一次预填充

输入侧语义叫 Input-Intrinsic Semantics,主要由最后一个输入 token 带着。输出侧语义不在字面上,而在模型将要生成的回答里。对照是 HyDE 一类做法:先生成假想文档,再把生成文本编成向量。那会多一次解码,离散文本回到连续向量时还有一层重构缝。

Teacher 看得到真实输出。Student 看不到,只看输入和 look-ahead tokens。训练让 student 在对应位置对齐 teacher 的表示。损失有两种:MSE 直接拉 hidden state,KL 对齐分布。正文写 MSE 更适合细粒度指令遵循,KL 在通用 embedding 上更稳。交叉熵让 look-ahead tokens 去预测离散 token,后面消融里不如这两种。

输入语义用多视图对比学习按住,避免向量只追输出。每个样本四个视图:student 对输入编两次,两次 dropout mask 不同,类似 SimCSE;冻结 teacher 对输入的编码;student 对目标输出的编码。同一样本是正例,不同样本是负例,损失是多正例 InfoNCE。温度和归一化因子写在图里的公式 3、公式 4,正文没有给常数。

池化叫 DAAP,Dual-Anchor Alignment Pooling。它按训练时的分工,把最后输入 token 和 look-ahead tokens 合在一起,而不是对所有 token 做平均。公式在图里。

主骨干是 LLaMA-3-8B-Instruct。训练数据约 20 万条抽象式问答,来自 11 个 QA 数据集。训 1 个 epoch,Adam,学习率 5e-6。推理时 look-ahead tokens 长度固定为 8。11 个数据集的名字没有列出。

28.5 是 FollowIR,不是通用句向量

评测分三组,不能合成一个总分。

指令遵循检索是 FollowIR 和 InfoSearch。表 1:

模型FollowIR 平均分FollowIR p-MRRInfoSearch SICRInfoSearch WISEInfoSearch p-MRR
LLaMA-3-8B-Instruct14.0+1.019.613.16.6
FollowIR-7B24.8+12.212.513.44.1
Promptriever26.1+11.2未给未给未给
InstEmb-MSE28.5+15.620.113.37.7

28.5 和 +15.6 高于 FollowIR-7B 与 Promptriever。InfoSearch 上 InstEmb 的 p-MRR 7.7、SICR 20.1 是表里最高。WISE 13.3 低于 FollowIR-7B 的 13.4,不是这一列第一。Promptriever 的 InfoSearch 三列原文是横线,不能补。各基准的样本数没写。

指令遵循 embedding 是 Inst.STSb、IntentEmotion、NYTCluster。通用句向量是 AskUbuntu、20News、SciDocsRR、StackOverflowDup,表 2 只给均值,不给四项分项。

模型Inst.STSbIntentEmotionNYTCluster指令任务均值通用任务均值
LLaMA-3-8B-Instruct InputLast44.2092.8025.6054.2059.00
PonTE44.6089.5048.0360.7158.66
Inbedder23.1094.5062.0059.9061.52
InstEmb-MSE-DAAP41.3794.1265.7667.0862.69
InstEmb-KL-DAAP39.2494.8862.3265.4863.39

正文写 InstEmb-MSE-DAAP 的指令任务均值 67.08,显著高于 Inbedder 复现的 59.90。Inst.STSb 上它是 41.37,低于 PonTE 的 44.60,也低于只取输入末 token 的 44.20。通用任务均值最高的是 InstEmb-KL-DAAP 的 63.39,不是 MSE 那一列。

换到 Qwen2.5,表 3 只有均值。Qwen2.5-7B-Instruct 只取输入末 token:指令 66.14,通用 55.46。InstEmb-MSE-DAAP:67.70 和 58.73。Teacher 换成 14B:68.75 和 58.94。这里的抬升比 LLaMA 上那组小,原文没有写显著性。

消融不能和主表横比

表 4 去掉对比学习,只比 look-ahead tokens 的训练目标。

训练目标指令任务均值通用任务均值FollowIR ScoreFollowIR p-MRR
SFT59.9061.525.0+8.4
CE60.1361.9327.3+14.8
KL63.4163.0127.9+14.9
MSE64.1661.8126.7+15.0

这组 MSE 的指令均值是 64.16,不是表 2 的 67.08。SFT 的 FollowIR Score 掉到 5.0。MSE 的 FollowIR Score 26.7 低于 KL 的 27.9,p-MRR 则是 MSE +15.0 略高。

长度从 0 加到 1,原文写大多数任务明显提升。再加长不保证线性涨:短输出任务收益有限,NYTCluster 这类更吃扩展语义的任务更吃长度。逐长度的分数只在图 2。

表 5 是多视图对比学习。完整视图集:指令 67.08,通用 62.69。去掉第二次 student dropout 视图,指令掉到 61.30,降 5.78。同时去掉这次 dropout 视图和 student 输出视图,指令掉到 56.44,降 10.64。去掉全部额外视图:指令 64.16,通用 61.81。

表 6 是池化,对照同一组 67.08 / 62.69。

池化指令任务均值通用任务均值
SpecialMean55.22(-11.86)59.10(-3.59)
SpecialFirst62.69(-4.39)61.76(-0.93)
InputLast66.72(-0.36)61.80(-0.89)
InputLast + SpecialFirst66.51(-0.56)61.51(-1.14)
AllMean63.48(-3.60)61.63(-1.03)
DAAP67.0862.69

只取输入末 token 已经接近 DAAP 的指令分,通用分仍低 0.89。全 token 平均明显更差。

注意力和隐藏态相似度只在图 3 到图 5。原文写训练后注意力从序列开头的 sink,转到 system prompt 结尾和 instruction 结尾;look-ahead tokens 与标准答案 token 的余弦相似度更高,最后一个输入 token 与后续位置相似度更低。图上没有读出具体相似度。

能直接拿去用的是评测切法:指令检索、指令 embedding、通用句向量分开报;InfoSearch 没有分数的模型留空;池化和蒸馏目标的消融不跟主表加总。推理长度、学习率和 20 万条样本可以照表复现设置,11 个 QA 数据集的名单原文没给。

京东云开发者社区,bgsgkj751003,InstEmb: Instruction-Following Embeddings through Glimpses of the Future,2026-07-20,https://developer.jdcloud.com/article/4535

觉得有用,转给同事

微信扫码

用微信扫一扫,在手机上打开后即可转发。

用 RSS 订阅

提交勘误