【ICLR 2025】BGE-ICL 论文解读:让文本嵌入模型学会少样本学习|从稠密检索与 RAG 工程视角

发布时间:2026/8/17 22:35:26
【ICLR 2025】BGE-ICL 论文解读:让文本嵌入模型学会少样本学习|从稠密检索与 RAG 工程视角 摘要本文解读 ICLR 2025 论文《Making Text Embedders Few-Shot Learners》BGE-ICL / bge-en-icl。该论文提出把大语言模型的上下文学习能力搬进文本嵌入通过在查询侧拼接任务相关少样本示例并配合保留原始因果注意力架构的训练协议让嵌入模型无需任何架构改动即可适配未见任务。实验表明bge-en-icl 在 MTEB 56 个数据集上平均 71.67 分few-shot刷新 SOTAAIR-Bench 分布外 QA 提升 1.43 分为稠密检索与 RAG 工程提供了提示即能力的重要借鉴。视频讲解点击观看 B 站视频摘要论文基本信息背景与动机研究主线从问题到结论基准/方法设计分类全景LLM 嵌入模型的技术路线方法细节实验设计与结果结果对比总结关键发现局限性常见问题FAQbge-en-icl 与普通嵌入模型有什么区别为什么说不改架构反而最好few-shot 嵌入的示例从哪来bge-en-icl 在 RAG 里怎么用零样本能力会不会被 ICL 训练毁掉多语言场景能用这套方法吗参考链接论文基本信息项目内容标题英文Making Text Embedders Few-Shot Learners标题中文让文本嵌入模型学会少样本学习作者Chaofan Li, MingHao Qin, Shitao Xiao, Jianlyu Chen, Kun Luo, Yingxia Shao, Defu Lian, Zheng Liu机构北京智源人工智能研究院 · 北京邮电大学 · 中国科学院 · 中国科学技术大学会议ICLR 2025arXivhttps://arxiv.org/abs/2409.15700项目网站https://github.com/FlagOpen/FlagEmbedding背景与动机为什么文本嵌入模型需要少样本学习能力嵌入模型embedding model是检索增强生成RAG、语义搜索、文本分类等系统的地基查询与文档被编码进同一向量空间靠相似度完成召回。当基座从 BERT 换成 decoder-only 大语言模型后性能确实大幅提升但一个关键短板随之暴露——模型难以遵循训练时未见过的任务指令复杂检索意图下泛化能力受限。E5-Mistral 用合成数据做指令微调、NV-Embed 提出 latent attention 层、GritLM 把生成与嵌入统一这些主流路线都倾向于修改模型架构。本文的观察恰恰相反LLM 预训练阶段已经练出了强大的上下文学习In-Context Learning, ICL能力给它几个示例就能学会新任务——为什么嵌入场景不用GRIT 的失败尝试直接喂示例反而掉点说明问题不在示例本身而在训练协议没有经过 ICL 式训练的模型不会用示例。bge-en-icl 正是第一个把 ICL 作为训练目标引入嵌入模型的方案并顺带回答了一个更本质的问题LLM 做嵌入到底需不需要双向注意力答案是不需要详见附录 G 的消融。从历史视角看附录 HLLM 嵌入化经历了三条路线LLM2Vec 的无监督改造、NV-Embed/GritLM 的架构创新、以及本文开创的 ICL 激活路线后续 Echo Embeddings 等延续不改架构的思路FlagEmbedding 生态则把这一范式直接送进 RAG 工业落地。研究主线从问题到结论图 3研究主线——从改架构到给示例的范式转换Mermaid 流程图基准/方法设计bge-en-icl 的设计极简不改任何网络结构只改查询侧的输入组织方式。示例模板每条示例是一个三元组Instruct 任务定义 / query 查询 / response 响应来自同任务同分布的标注数据。查询扩展评测时把 $n$ 条示例与测试查询按模板拼接$\mathrm{q_{exp}} \text{示例}_{1..n} \langle\text{Instruct}\rangle \mathrm{q}$示例数量 $n$ 取 0 到 5。表示提取输入末尾追加[EOS]特殊标记取最后一层 EOS 位置的隐藏向量 $\mathbf{h} \mathrm{LLM}(T)[\mathrm{EOS}]$ 作为嵌入。训练目标温度缩放的余弦相似度 $s(\mathbf{q}, \mathbf{p}) \frac{1}{\tau}\cos(\mathbf{h}_q, \mathbf{h}_p)$$\tau 0.02$ InfoNCE 对比损失负例包含批内负例与每查询 7 个难负例。图 1ICL 示例模板——每条示例为 Instruct / query / response 三元组查询侧拼接后送入模型分类全景LLM 嵌入模型的技术路线图 4LLM 嵌入模型四路线分类——本文开创 ICL 激活路线Mermaid 分类图方法细节核心设计要素详见幻灯片 4.2查询扩展优于 passage 侧提示实验表明在 passage 侧追加提示词全面掉分few-shot 61.74 vs 66.08损失 4.34 分查询侧 ICL 是唯一有效的位置。保留因果注意力双向注意力改造与预训练目标next-token prediction错位会损害模型深层语义模式理解实测 ICL 场景下因果注意力全面占优附录 G 消融表。last-token 池化EOS 位于输入末尾在因果掩码下能看见全部示例与查询同时汇聚语义与 ICL 模式信息比 mean pooling 更契合因果架构。动态示例采样每训练步从批内随机采样 0–5 条示例——这是保护零样本能力的关键设计附录 F。训练细节附录 A 与论文 setup 节骨干 Mistral-7BLoRA rank 64 / alpha 32学习率 $1\times10^{-4}$单 epoch检索任务 batch 512、其余 256序列长度上限 512检索任务用 bge-reranker 蒸馏教师分数评测示例取自训练集无训练集的任务用 ChatGPT 生成。多语言版 bge-multilingual-gemma2 换用词表 256K 的 Gemma-2-9B附录 D并同步发布轻量重排器 bge-reranker-v2.5-gemma2-lightweight附录 E。图 2bge-en-icl 架构——示例与输入拼接后经原始因果注意力 LLM取 EOS 向量为嵌入实验设计与结果评测协议MTEB 56 个数据集检索 15 / 重排 4 / 聚类 11 / 对分类 3 / 分类 12 / STS 10 / 摘要 1 AIR-Bench 24.04QA 8 域、Long-Doc 15 任务评测数据由 LLM 自动生成、与训练集无重叠是严格 OOD 测试双轨训练全量数据 / 仅公共数据保证公平对比。MTEB 主结果全量数据56 任务平均模型检索聚类分类平均E5-mistral-7b-instruct56.9050.2678.4766.63GritLM-7B57.4150.6179.4666.76NV-Embed-v159.3652.8087.3569.32stella_en_1.5B_v561.0157.6987.6371.19bge-en-iclzero-shot61.6757.5188.6271.24bge-en-iclfew-shot62.1657.8988.9571.67AIR-Bench 24.04与训练数据完全无重叠模型QA nDCG10Long-Doc R10E5-mistral-7b-instruct48.5668.49NV-Embed-v150.0273.45bge-en-iclzero-shot52.9373.75bge-en-iclfew-shot54.3674.83仅公共数据few-shot55.9275.98AIR-Bench 上 few-shot 相对 zero-shot 提升1.43QA/ 1.08Long-Doc且训练数据与评测域零重叠——这是 ICL 真实泛化价值的最强证据。值得注意的是仅用公共数据训练反而在 AIR-Bench 更好55.92说明全量数据中大量 MTEB 相关任务可能带来过拟合风险。ICL 训练策略消融附录 F公共数据轨训练策略零样本少样本结论w/o ICL64.83—基线固定示例每任务 3 条61.5065.46零样本崩塌 3.33 分in-batch 示例0–5 条64.6766.08零样本近无损few-shot 1.25注意力 × 池化消融附录 G配置零样本少样本与最优差因果 last-token64.6766.08最优双向 last-token65.1965.74−0.34双向 mean pooling64.9065.18−0.90因果 mean pooling61.03—−5.05配套发布物附录 D / E多语言模型 bge-multilingual-gemma2 在 MIRACL 18 语言全部刷新 SOTA平均 74.1 vs BGE-M3 的 69.2FR-MTEB 70.08、PL-MTEB 70.00 登顶C-MTEB 68.44 略逊于 gte-Qwen2-7B72.05轻量重排器通过深度宽度压缩节省 60% FLOPsBEIR 平均 63.67 仅比未压缩版低 0.5 分MIRACL 几乎无损77.1 vs 77.3。结果对比总结图 5结果对比——少样本示例把 71.24 推到 71.67OOD 场景增益更显著Mermaid 结果图关键发现MTEB 平均 71.67 刷新 SOTAfew-shot 比 zero-shot71.24再高 0.43 分比此前最佳 stella_en_1.5B_v571.19高 0.48 分。ICL 增益集中在未见任务公共数据轨下聚类 3.9442.61→46.55、分类 1.8475.47→77.31检索类任务仅小幅提升——示例真正帮助的是训练分布之外的任务。零样本能力几乎无损in-batch 动态采样让零样本仅降 0.16 分64.83→64.67而固定示例训练导致 3.33 分崩塌。架构改动毫无必要因果 last-token66.08全面胜过双向65.74与均值池化61.03组合passage 侧提示词反而造成 4.34 分损失。AIR-Bench OOD 验证有效评测数据与训练集零重叠few-shot 仍带来 1.43QA/ 1.08Long-Doc提升证明方法泛化而非过拟合。开源生态同步落地bge-en-icl、bge-multilingual-gemma2、轻量重排器省 60% FLOPs与训练脚本全部开放FlagEmbedding 直接服务 RAG 生产。Oral 信号结构清晰附录 C命中 ResearchStudio-Idea 框架的 P13 条件化适配零样本仅降 0.16 分、P4 受控诊断注意力×池化 2×2 消融与 P1 审计负载假设双向注意力并非必需三个模式每一项结论都有量化消融背书。局限性多语言 ICL 尚未验证bge-multilingual-gemma2 未训练 ICL 能力多语言少样本学习留作未来工作。推理成本上升few-shot 把示例拼进查询输入显著变长示例查询/文档各限 256 token总长可达 2048时延与算力开销增加。示例来源依赖评测示例取自训练集或 ChatGPT 生成示例质量与数量的敏感性刻画不足。数据公平性全量数据轨的 SOTA 与部分基线训练集不一致严格对比须回到仅公共数据轨。常见问题FAQbge-en-icl 与普通嵌入模型有什么区别核心区别在查询侧普通模型只编码查询本身bge-en-icl 允许把任务相关的少样本示例Instruct/query/response 三元组拼进查询激活 LLM 预训练获得的上下文学习能力零训练适配新任务。为什么说不改架构反而最好论文对注意力因果 vs 双向与池化last-token vs mean做了 2×2 消融因果 last-token 66.08 分最优。双向改造与预训练目标错位反而削弱模型深层语义理解mean pooling 与因果掩码天然冲突。few-shot 嵌入的示例从哪来评测时示例来自训练数据集没有训练数据的任务用 ChatGPT 生成示例。训练时则从批内动态采样 0–5 条让模型学会区分示例与输入。bge-en-icl 在 RAG 里怎么用直接把 bge-en-icl 当作向量检索器为每个任务准备好 1–5 条示例拼在查询前即可获得比零样本更精准的召回配套的轻量重排器 bge-reranker-v2.5-gemma2-lightweight 可省 60% 计算量做精排。零样本能力会不会被 ICL 训练毁掉不会。论文用 in-batch 动态采样每步 0–5 条随机零样本仅降 0.16 分而固定示例训练会让模型把示例位置当任务信号零样本崩塌 3.33 分。多语言场景能用这套方法吗bge-multilingual-gemma2Gemma-2-9B 基座已在 MIRACL 18 语言、FR-MTEB、PL-MTEB 登顶但目前未叠加 ICL多语言 ICL 是作者明确的未来方向。参考链接arXiv 论文页https://arxiv.org/abs/2409.15700FlagEmbedding 项目模型/数据/脚本开源https://github.com/FlagOpen/FlagEmbeddingE5-Mistral合成数据指令微调基线https://arxiv.org/abs/2401.00368NV-Embed架构创新基线https://arxiv.org/abs/2405.17428GritLM生成嵌入统一基线https://arxiv.org/abs/2402.09906LLM2Vec无监督改造基线https://arxiv.org/abs/2404.02119给大家推荐一款自用写文献综述、无虚构文献的 AI复旦大学 FudanNLP 团队自研 切问学术官网qiewenpaper.com覆盖3.6 亿篇可溯源真实中英文文献能自动整合文献观点生成规范综述还能挖掘研究创新点、复现实验配合视频教学新手快速上手文献综述写作后记博客的关键词集中在编程、算法、机器人、人工智能、数学等等持续高质量输出中。讨论QQ群白拾的小屋 (750365700)⭐B站账号白拾的物理AI组会活跃于知识区和动画区✨GitHub主页YhbCode000工程文件