CoHyDE: LLM 改写器与密集编码器的迭代协同训练用于工具检索
大型语言模型代理在大型 API 目录上进行工具检索时面临核心瓶颈:用户查询使用口语化、常不明确的语言,而目录使用技术 API 词汇,没有固定编码器能独自桥接这一鸿沟。两种主流训练方法——对比编码器微调和冻结 LLM 的 HyDE 式查询扩展——从相反方向解决该问题,但在互补方向上失败:微调编码器在查询表面形式已匹配目录时表现出色,但在不匹配时崩溃;零样本 HyDE 对不明确查询更鲁棒,但生成不感知目录的假设描述,在查询良好形式时降低检索质量。 我们提出 CoHyDE,一种迭代过程,将密集编码器和 LLM 改写器训练为单一协同进化系统:编码器使用改写器生成的目录风格假设描述通过 InfoNCE 重新训练,改写器通过 DPO 针对编码器的检索分数进行偏好对齐,两者在循环开始前在工具目录上预热。在 ToolBench 目录约 10k 工具子集上,三轮 CoHyDE 在标准查询上比最强单组件基线提升 +2.5 个百分点 NDCG@5,在保留的模糊查询上提升 +6.3 个百分点,在最难模糊分层上提升高达 +8 个百分点。消融实验证实协同训练是关键:单独使用任一组件无法在良好形式和模糊查询上匹配 CoHyDE,模糊查询损失高达 -8 个百分点。
论文精读
TL;DR CoHyDE 通过迭代协同训练稠密编码器与 LLM 改写器,让二者互相适配,显著提升了对规范查询和模糊查询的工具检索效果,尤其将模糊查询 NDCG@5 最高提升 8 个百分点。
问题
问题背景
LLM 智能体执行复杂任务时,常需调用外部工具 API。从包含数万工具的 API 目录中精准检索匹配用户意图的工具,是智能体规划的关键前提。用户查询(query)多使用口语化甚至模糊的自然语言,而工具描述使用结构化技术术语,两者存在显著语义鸿沟。
现有方法局限
当前主流方案分为两类,但各自存在根本缺陷:
- 对比式稠密编码器微调(contrastive fine-tuning):在查询和工具描述的表层形式匹配时表现良好,但一旦查询偏离训练分布(如极度模糊或口语化),检索性能急剧退化,缺乏对未见于训练数据的表达方式的泛化能力。
- HyDE 风格查询扩展(HyDE-style query expansion):使用冻结的 LLM 生成假设性工具描述(hypothetical description),以此作为桥梁检索。该方法对模糊查询鲁棒,但生成的描述与真实工具目录脱节,可能引入噪声,在查询本身已足够明确时反而降低检索质量。 更糟糕的是,简单组合二者(如对 fine-tuned 编码器输入 HyDE 描述)往往导致性能互斥:编码器被训练以适应一种数据分布,难以同时兼容扩展后的分布,出现“+HyDE 反而更差”的现象。
为什么这个问题重要且困难
工具检索的难点在于查询的异质性(从极度模糊到高度具体)与工具目录的庞大、专业化之间的矛盾。单一固定的检索模型无法同时应对两端情况:精细调优的模型无法泛化到未见的表达,而通用的语言模型缺乏领域知识。业界对 LLM 智能体的落地需求日益迫切,工具检索作为基础瓶颈,直接决定智能体任务完成的成功率。如何设计一个能自我适应查询分布、并在训练过程中动态协调编码器与重写器的系统,是一个开放且具有实用价值的研究课题。
行业类比
类似搜索引擎中的查询理解和文档召回——用户意图经常模糊(“怎么修那个漏水”),而技术文档使用精确术语;需要同时利用查询重写与领域微调的召回模型协同工作,才能既覆盖口语化表达又保持高精度。
核心洞察
- 迭代式协同训练使编码器与 LLM 改写器形成闭环互促,克服了单一方法在标准查询与模糊查询上的互补性失败:编码器微调仅在查询表面形式与目录匹配时有效,而零样本 HyDE 虽对模糊查询更鲁棒但会产生脱离目录的假设描述。CoHyDE 让编码器在改写器生成的目录风格描述上重训,同时改写器通过 DPO 根据编码器检索评分对齐偏好,二者协同进化,在双方弱项上同步改进,消融实验显示任一组件独立使用都会导致模糊查询最高 8 个百分点的损失。
- 通过 DPO 将检索信号作为偏好反馈注入 LLM 改写器训练,实现了查询重写的目录感知:传统 HyDE 式扩展仅依赖 LLM 内化知识生成假设文档,无法利用工具目录结构,可能引入噪声甚至误导检索。CoHyDE 利用编码器的 InfoNCE 检索得分构建偏好对,引导改写器学习生成更贴合目录中 API 描述的重写查询,从而弥合口语化查询与技术术语间的词汇鸿沟,在保持对模糊查询鲁棒性的同时提升标准查询精度。
方法
CoHyDE 将密集编码器与LLM重写器视为协同进化的双子系统,通过迭代训练联合优化工具检索。
训练流程
- 暖启动:编码器以 InfoNCE 损失在工具目录描述上预训练,学习将查询与正确 API 匹配;重写器通过 SFT 在多格式工具渲染数据上学习生成目录风格描述。
- 引导生成(Bootstrap):对每个训练查询,当前重写器生成多个“假设描述”(hypothetical descriptions),作为后续编码器训练的增强正样本。
- 编码器重训练:使用生成的假设描述与原始目录描述混合,以 InfoNCE 损失重新训练编码器。该步骤使编码器适应重写器的输出分布,提升对模糊查询的鲁棒性。
- DPO 对齐重写器:重写器为同一查询生成候选描述,编码器的检索分数转换为偏好信号,通过 DPO(直接偏好优化) 更新重写器策略,鼓励生成能提高检索排名的描述。
- 迭代循环:交替执行步骤 3 和 4,形成共同进化过程。多次迭代后两组件彼此适配,分别在表示空间和生成策略上达到互补最优。
输入与输出
- 输入:工具目录(API 定义与描述),用户查询(可能口语化、信息不全)。
- 模块:
- 稠密编码器:将查询或工具描述映射到统一嵌入空间。
- LLM 重写器:将查询扩展为详细的目录风格描述,桥接语义鸿沟。
- 输出:训练完成的编码器与重写器,推理时对任意查询先由重写器生成假设描述,再与查询拼接后由编码器检索。
与同类方法的差异
不同于单独微调编码器(对非匹配表面形式失效)或冻结 LLM 的 HyDE 式查询扩展(在查询已明确时损害检索),CoHyDE 通过共同训练使组件协同:编码器学会理解重写器的输出,重写器学会生成对编码器友好的描述。消融实验表明,若孤立使用任一组件,在模糊查询上损失高达 -8 pp NDCG@5,证明共同进化是关键机制。
实验
实验设计
实验基于 ToolBench 约 1 万工具的子集构建检索库,并将查询分为标准查询(surface form 与 API 文档匹配度高)和模糊查询(口语化、欠指定)两个评估集。方法分为预热阶段和共训练循环:
- S1 预热:用 InfoNCE 损失训练密集编码器(warmup encoder),并用监督微调(SFT)预热 LLM 重写器,使其初步适应工具描述生成。
- 共训练循环(共 3 轮):
- 重写器生成假设性工具描述(bootstrap 数据)。
- 编码器用这些描述重新训练(S3)。
- 重写器根据编码器的检索分数通过 DPO 进行偏好对齐(S4)。
主要评估指标为 NDCG@5,并与仅微调编码器、零样本 HyDE、查询改写等基线对比,同时通过消融分析验证各组件和预热的重要性。
关键发现
- 单组件方法存在互补性失败:编码器微调在查询与目录术语匹配时表现好,但对模糊查询脆断;零样本 HyDE 对模糊查询鲁棒,却因生成不依赖目录的假设而在标准查询上退化;两者直接结合(如 HyDE-concat)甚至导致性能下降。
- CoHyDE 同时解决了两种失败模式:3 轮共训练后,标准查询 NDCG@5 提升 +2.5 pp,模糊查询提升 +6.3 pp,最难的模糊子集提升可达 +8 pp,在所有粒度的查询上均优于最强单组件基线。
- 消融实验确认共训练是核心:移除任一组件或跳过预热,性能大幅下滑(模糊查询损失高达 -8 pp);重新训练的编码器必须配合联合训练的重写器才能发挥效果。
与基线的深度对比解读
传统工具检索往往把查询扩展与编码器视为流水线中独立环节:编码器微调试图拉近查询与文档的表示,但只能在已有词汇重叠上作用;HyDE 用 LLM 生成伪文档以缓解词汇缺失,却因生成内容脱离目录分布而引入噪声。CoHyDE 的共训练让两者互相学习:
- 编码器不再只拟合原始查询,而是学习重写器产生的目录风格描述,使其对模糊查询的表示更贴近实际工具文档。
- 重写器通过 DPO 接收来自编码器的检索反馈,学会生成能最大化检索分数的描述,从而自行对齐到目录分布。
这种双向适应使得系统在面对全新 API 和口语化查询时,仍能保持高检索精度,比单独的微调或零样本重写都更鲁棒。对实际工程而言,该设计启示我们:在 LAM(大模型智能体)工具检索场景中,将重写和检索视作一个可共同演化的系统,而不是两个独立优化模块,能显著缩小自然语言指令与结构化 API 目录之间的语义鸿沟。
行业影响
落地场景
CoHyDE 主要解决 LLM Agent 在庞杂 API 目录下的工具检索瓶颈,尤其擅长处理口语化、欠指定查询。可直接应用于:
- 插件生态型产品:如代码助手(Copilot 类)、低代码 Agent 平台(LangChain、Dify 等),当用户意图模糊时仍能精准匹配上千个工具。
- 企业自动化工作流:客服机器人、ITSM 工单系统,需动态调用后端数百个服务 API。
- RPA 与数字员工:面向复杂业务流程,需从海量 SaaS 连接器中检索正确工具。
商业价值
- 降本效果显著:提升工具检索准确率(模糊查询 NDCG@5 最大 +8 pp)意味着 Agent 任务成功率大幅提升,减少人工兜底与重复询问,直接降低运营人力成本。
- 体验升级驱动增收:在 toC 超级应用中,更准确的工具调用让语音助手、智能推荐更“懂”用户,提升日活与付费转化;对 toB 服务,更高的自动化率成为议价关键。
- 泛化性优势:CoHyDE 同时提升标准查询(+2.5 pp)与模糊查询(+6.3 pp),消除传统方法单边失效问题,避免在生产环境因查询类型不同而性能跳水。
与现有产品/工作流的接口
CoHyDE 是一种训练范式,不改变推理架构,可无缝嵌入现有检索增强生成流水线:
- 替换 Retriever 组件:用 CoHyDE 联合训练的 dense encoder 替换原有 fixed encoder,直接对接向量数据库(如 FAISS、Milvus)。
- 升级 LLM Rewriter:使用偏好对齐后的 LLM 作为查询改写器,接收用户原始输入,输出目录感知的假设描述,再送入 encoder;该步骤可作为现有 LLM serving 的一个 prompt 模块。
- 离线迭代优化:按照预热→数据生成→encoder 重训→DPO 对齐的循环,可在现有 CI/CD 中加入定期更新,适配工具库迭代。
具体落地用例
金融投研 Agent:某量化平台的对话助手需调用行情、财报、新闻等 500+ API。用户语音输入“看看最近跌得狠的科技股”,传统方法可能误召回通用搜索工具。CoHyDE 的 rewriter 生成“查询日跌幅 top 5 科技股 + 相关新闻总结”的目录风格描述,encoder 精准匹配到「行情排行」「新闻聚合」两个 API,任务完成率提升。
跨境电商智能客服:用户输入“上次买的那个充电器怎么还不能用?”,常规检索可能被“充电器”误导至商品推荐 API。CoHyDE 将其改写为“客户查询最近订单中电子配件的售后状态”,最终调起「订单状态」「售后入口」工具,减少无效跳转,缩短平均处理时长。
局限
- **实验规模与泛化性受限** 评估仅在 ToolBench 的一个约 10k 工具子集上进行,未在更大规模或跨领域 API 目录(如 RapidAPI 等)验证。迭代联合训练的计算开销较高,论文未充分讨论推理延迟与资源消耗对实际部署的影响,在受限环境下的可行性存疑。此外,训练数据中的模糊查询是人工构造的,真实场景的分布可能不同,泛化性能有待进一步检验。
- **训练流程复杂且依赖预热** CoHyDE 需要分别对编码器和重写器进行预热(warmup),然后多轮迭代,引入了额外的调参和工程复杂度。最终性能对预热数据的质量和覆盖范围敏感,若工具目录动态变化,重新训练的成本较高,论文未探讨增量更新或在线适应策略,限制了其在实际动态系统中的适用性。
- **评估维度单一** 主要采用 NDCG@5 衡量检索质量,缺乏对召回率、精确率等指标的全面分析,也未评估检索结果对下游任务(如对话生成)的实际影响。在标准查询上提升仅 +2.5pp,改进主要集中于模糊查询,通用性有限。同时,实验仅采用单一随机种子,可能高估方法的稳定性。