
RAG-MCP:解决大语言模型工具选择中的提示膨胀难题,收藏这一篇就够了!!
大语言模型(LLMs)在自然对话、推理甚至代码生成方面展现了卓越的能力。然而,它们本质上受到参数中编码的知识和在推理时可用的固定上下文窗口的限制。一个没有外部访问权限的LLM只能依赖其训练数据,无法轻松更新知识或执行超出其内置能力的操作。为了克服这一限制,最近的研究工作集中于通过外部工具和函数调用能力来增强LLMs。通过调用工具(例如网络搜索、数据库、计算器)通过定义的函数或API,LLM可以获取
1 引言
1.1 背景与动机
大语言模型(LLMs)在自然对话、推理甚至代码生成方面展现了卓越的能力。然而,它们本质上受到参数中编码的知识和在推理时可用的固定上下文窗口的限制。一个没有外部访问权限的LLM只能依赖其训练数据,无法轻松更新知识或执行超出其内置能力的操作。为了克服这一限制,最近的研究工作集中于通过外部工具和函数调用能力来增强LLMs。通过调用工具(例如网络搜索、数据库、计算器)通过定义的函数或API,LLM可以获取最新信息并执行超出其内置能力的复杂操作。这种范式通常被称为零样本工具使用或函数调用,它使得AI助手能够与最新数据和服务的接口,解锁从实时知识查询到金融和旅行规划等专业任务的应用程序。实际上,主要的AI提供商已经接受了这一趋势:例如,领先的LLM平台现在支持插件API和结构化函数调用,以便像GPT-4或Claude这样的模型可以通过定义良好的接口调用外部服务。
在研究社区中,已经提出了各种方法来启用和改进LLM的工具使用。基于提示的策略(如ReAct)在多轮“思维过程”环境中将推理步骤与动作命令交织在一起,使LLM能够决定何时咨询工具。以模型为中心的方法也出现了:例如,Toolformer对LLM进行微调,使其能够自主决定调用哪个API、何时调用以及如何合并结果,只需要在每个工具上提供少量演示。其他研究人员通过将函数调用演示合并到指令跟随数据集中,并探索能够有效向模型描述可用函数的提示格式来改进工具使用。这些努力显著提高了零样本工具使用的性能。例如,在包含大量工具使用数据的API调用任务上对模型进行微调,可以产生令人印象深刻的结果——Gorilla系统通过相关API文档检索增强了一个基于7B LLaMA的模型,使其在生成各种工具的正确API调用方面甚至超过了GPT-4。这些工作的一个重要见解是,提供及时的相关上下文(无论是通过优化的提示还是检索到的文档)极大地提高了LLM工具选择和使用的准确性,而模型明确决定工具使用的机制(例如用于“回答与行动”的特殊决策标记)可以进一步提高可靠性。
尽管取得了这些进展,但随着我们扩大LLM可用工具的数量,一个新的挑战出现了。大多数先前的研究和部署考虑的工具或API数量相对较少,通常是手工挑选的,并且易于模型在提示中处理。然而,实际上,工具生态系统正在迅速扩展。例如,Anthropic最近推出的模型上下文协议(MCP)定义了一个通用的开放标准,用于将AI系统与外部数据源和服务连接起来。MCP使单个助手能够通过统一协议与许多数据存储库和业务工具接口,取代了零散的一次性集成。因此,一个先进的LLM代理可能很快就会有几十个功能可供使用——从Google Drive和Slack连接器到GitHub、数据库、地图等——所有这些都注册为它可以调用的MCP“工具”。可用工具的这种激增带来了重大障碍。
提示膨胀是一个关键问题:在模型的上下文中提供每个可能工具的定义或使用说明将消耗大量标记,并有可能使模型不堪重负。已经观察到,随着API或工具数量的增加,在单个提示中描述大量API或工具实际上是不可能的,而且许多API具有重叠的功能,只有细微的差别。一次包含太多不仅耗尽上下文长度,还可能使模型混淆——功能可能开始变得模糊。这直接导致第二个问题:决策开销。面对一长串工具(其中许多在范围上相似),模型在选择是否以及调用哪个工具时面临更复杂的决策。选择的范围越大,出错的可能性就越高,例如选择次优工具或误解工具的功能。实际上,即使是最先进的模型在这种设置下也可能出错:例如,在有众多API选项的情况下,据报道GPT-4幻想出一个实际上不存在的API,而Anthropic的Claude为用户请求选择了错误的库。这些失败案例强调,盲目扩大工具集会降低LLM的性能,这是由于提示的容量压力和模型决策过程中的模糊性造成的。
2 相关工作
2.1 LLM中的工具使用
LLM已经通过外部工具得到了增强,以克服在算术、检索和代码执行方面的局限性。Toolformer展示了一种自监督方法,通过这种方法,模型学习何时以及如何调用计算器或搜索引擎等API,提高了跨任务的零样本性能。ReAct将思维链推理与动作步骤交织在一起,与外部环境(例如,维基百科API)交互,产生更具解释性和准确性的多步骤解决方案。WebGPT在模拟浏览器环境中对GPT-3进行了微调,训练它导航、搜索和引用来源进行长篇问答,通过有根据的检索减少幻觉。最近,ChatGPT插件引入了一个生产插件生态系统,允许ChatGPT在受控的、以安全为导向的框架中访问最新信息和第三方服务。
2.2 检索增强生成
检索增强生成(RAG)首次将参数化LLM与非参数化记忆在密集向量索引中结合,在推理时检索相关段落以改进知识密集型任务。随后的工作将RAG扩展到广泛的NLP范式,包括模块化和高级RAG变体,它们根据每个标记或每个查询动态调整检索。RAG对记忆访问和生成的解耦启发了我们的MCP-RAG方法,其中MCP发现被视为一个检索子问题,与核心文本生成正交。
2.3 模型上下文协议
模型上下文协议通过将资源提示、身份验证和参数模式捆绑到模块化的“MCP”服务器中,标准化了LLM到API的交互。MCP充当函数调用扩展,类似于OpenAI的函数调用API,但具有更大的社区可扩展性。MCP存储库的快速增长(截至2025年4月,mcp.so上有4400多个服务器)凸显了对可扩展的发现和验证机制的需求。
3 方法
3.1 提示膨胀和MCP压力测试
现代LLM通常必须在许多可能的外部工具中进行选择,每个工具都由一个MCP模式描述。随着MCP数量的增加,将所有这些描述包含在单个提示中会导致提示膨胀:上下文窗口被干扰物饱和,降低了模型区分和回忆正确工具的能力。
这种现象与针在干草堆中(NIAH)测试类似,该测试在长上下文(“干草堆”)中间嵌入一个随机事实(“针”),并测量LLM在不同上下文长度和深度下检索它的能力。在NIAH中,随着干草堆的增长,性能急剧下降,揭示了上下文内检索的局限性。
受NIAH的启发,我们在WebSearch任务上设计了一个MCP压力测试:对于每次试验,我们向模型提供N个MCP模式(一个真实值和N-1个干扰物),并要求它选择并调用正确的WebSearch MCP。我们将N从1到11100分为26个区间进行变化,测量选择准确性、任务成功、提示标记使用和延迟。这个设置量化了工具选择能力如何随着MCP池大小的增加而下降。
3.2 RAG-MCP框架
为了克服提示膨胀,RAG-MCP将检索增强生成(RAG)原则应用于工具选择。我们不是将所有MCP描述都塞给LLM,而是维护一个所有可用MCP元数据的外部向量索引。在查询时:
-
检索。一个轻量级基于LLM的检索器(例如,Qwen)对用户任务描述进行编码,并在MCP索引上执行语义搜索,返回与任务最相似的top-k候选MCP。
-
验证。对于每个检索到的MCP,RAG-MCP可以生成一些示例查询并测试其响应,以确保基本兼容性,在调用之前充当“健全性检查”。
-
调用。只有单个最佳MCP描述,包括其工具使用参数,被注入到LLM提示或函数调用API中,然后执行规划并执行任务,而无需担心工具发现。这种设计带来了几个好处:
-
- 减少提示大小。通过仅提供相关的MCP元数据,RAG-MCP避免了即使在完整工具注册表很大的情况下也能避免上下文窗口过载。
- 降低认知负荷。LLM不再需要筛选数百个干扰物,提高了选择准确性并减少了幻觉。
- 资源效率。与传统的MCP客户端(例如Claude或早期GPT-4集成)不同,后者必须在交互之前实例化所有注册的MCP服务器,MCP-RAG仅激活选定的MCP,降低了启动成本并支持任意大的工具集而不会遇到基础设施瓶颈。
- 多轮稳健性。在跨越多轮的对话中,LLM无需重新包含所有MCP提示;RAG-MCP的检索器动态处理工具回忆,为任务特定的推理释放上下文空间。
3.3 三步流程图
我们总结了RAG-MCP操作中的三个核心步骤。流程图如图3所示:
- 任务输入→检索器:用户的自然语言任务被编码并提交给检索器。
- 检索器→MCP选择与验证:检索器搜索MCP模式的向量索引,通过语义相似性对候选者进行排名,并可选择通过综合示例测试每个候选者。
- 使用选定的MCP执行LLM:LLM仅接收选定的MCP的模式和参数,并通过函数调用接口执行任务。
通过将工具发现与生成分离,RAG-MCP确保LLM可以扩展到数百或数千个MCP,而不会遭受提示膨胀或决策疲劳,就像RAG系统通过仅检索相关段落来避免用整个语料库压倒LLM一样。
3.4 讨论
我们的方法结合了压力测试的严谨性(通过MCP压力测试)和检索增强工具使用的有效性。压力测试量化了当干扰MCP使提示膨胀时发生的性能急剧下降,这与NIAH评估中的长上下文回忆失败相呼应。然后,RAG-MCP通过动态缩小工具集来对抗这种情况,减少提示标记和决策复杂性,从而恢复——并且通常会提高——任务成功率。
此外,通过使用外部索引,RAG-MCP保持了可扩展性:通过索引其元数据可以添加新的MCP,而无需重新训练LLM。并且,通过按需选择性激活服务器,它避开了先前工具增强的LLM部署在同时MCP实例化方面面临的实际限制。
4 实验
4.1 压力测试
设置为了量化LLM的工具选择能力如何随MCP池的大小而扩展,我们进行了压力测试,其中候选MCP服务器的数量N从1到11100以区间变化,而关键MCP服务器从顶部到底部定位。对于每个N值,我们随机选择一个“真实”MCP(即唯一能够满足任务需求的服务器)和N-1个干扰MCP,这些干扰MCP是从我们超过4,400个公开列出的服务器的全注册表中抽取的。这种设计确保了在每N个候选者中只有一个是相关的。然后,我们向模型提供20个网络搜索任务,要求它(a)选择正确的MCP,(b)发出有效的查询或回答,(c)返回最终结果。
结果图3绘制了随着N的增加的选择准确性和任务成功率。我们观察到一个明显的非单调趋势:这些结果定量地证实了,尽管MCP-RAG极大地缓解了提示膨胀,并在小到中等池中保持了高性能,但随着工具注册表扩展到数千个MCP,其检索精度和整体吞吐量会下降。
4.2 RAG-MCP
设置我们在MCPBench的Web搜索子集中评估了所有方法,我们将其用作我们的保留测试平台。对于每个基线,我们进行20次独立试验,如果基线在20次试验中产生超过10个正确答案,我们认为基线是成功的。在每次试验中,模型最多可以与MCP服务器进行10轮交互,以得出其最终响应。
为了以自动化和可重复的方式评估答案的正确性,我们使用Deepseek-v3作为我们的评估器。由于MCP服务器需要外部网络访问——因此可能对延迟或瞬态故障敏感——我们在所有实验中强制执行受控网络环境,确保没有请求因连接性问题而失败。最后,所有试验均由qwen-max-0125作为我们的基础LLM驱动。
基线我们在实验中使用三种选择策略进行评估:
- 空白条件:将所有N个MCP描述一次性提示LLM,并要求它选择正确的。
- 实际匹配:使用任务描述和MCP元数据的简单关键字匹配对候选池进行预过滤,然后在该减少的集上提示模型。
- RAG-MCP:使用我们的向量索引检索器对所有N个MCP进行语义排名,并将仅top候选的模式注入LLM提示以执行。
指标我们使用三个关键指标评估每个基线方法的性能:
- 准确性(%):模型选择真实MCP的试验百分比。
- 平均提示标记:提示中消耗的平均标记数,包括注入的MCP元数据。
- 平均完成标记:模型作为最终输出生成的平均标记数。
使用基于Llama的验证器(“Llama作为法官”)将模型输出与地面真理进行比较,以自动化判断最终答案。
5 分析
5.1 RAG-MCP结果分析
RAG-MCP的优越性能可以归因于几个因素:
- 专注的上下文过滤:通过仅注入单个最相关的MCP模式,模型避免了不相关工具描述造成的干扰,从而产生了更清晰的决策边界。
- 提示效率:提示标记的显著减少使模型能够将更多的上下文窗口分配给对任务本身的推理,而不是解析额外的元数据。
- 平衡生成:尽管RAG-MCP相对于实际匹配略微增加了完成标记的使用,但这种开销反映了更彻底的推理和验证步骤,这与更高的准确性相关。
总的来说,这些发现证实了检索增强的MCP选择有效地抑制了提示膨胀,并提高了LLM的工具选择可靠性,使RAG-MCP成为可扩展外部工具集成的引人注目的解决方案。
6 结论
我们介绍了RAG-MCP,这是一个简单而强大的框架,通过为每个查询检索仅最相关的模式来驯服大型MCP工具集。通过专注的检索,RAG-MCP:
- 大幅减少提示大小,与一次性提供所有工具相比,标记使用量减少了一半以上。
- 提高选择准确性,在重载下使幼稚和基于关键字的方法的成功率提高了三倍多。
- 保持可扩展性,因为新的MCP可以即时索引,而无需重新训练模型。
从本质上讲,RAG-MCP将拥有数百或数千个工具的庞大图书馆变成了一个精简、按需的工具包。未来的工作将改进极端规模的检索——通过分层索引或自适应策略——并探索多工具工作流程和现实世界的代理部署。
最后的最后
感谢你们的阅读和喜欢,作为一位在一线互联网行业奋斗多年的老兵,我深知在这个瞬息万变的技术领域中,持续学习和进步的重要性。
为了帮助更多热爱技术、渴望成长的朋友,我特别整理了一份涵盖大模型领域的宝贵资料集。
这些资料不仅是我多年积累的心血结晶,也是我在行业一线实战经验的总结。
这些学习资料不仅深入浅出,而且非常实用,让大家系统而高效地掌握AI大模型的各个知识点。如果你愿意花时间沉下心来学习,相信它们一定能为你提供实质性的帮助。
这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费
】

大模型知识脑图
为了成为更好的 AI大模型 开发者,这里为大家提供了总的路线图。它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。
经典书籍阅读
阅读AI大模型经典书籍可以帮助读者提高技术水平,开拓视野,掌握核心技术,提高解决问题的能力,同时也可以借鉴他人的经验。对于想要深入学习AI大模型开发的读者来说,阅读经典书籍是非常有必要的。
实战案例
光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。
面试资料
我们学习AI大模型必然是想找到高薪的工作,下面这些面试题都是总结当前最新、最热、最高频的面试题,并且每道题都有详细的答案,面试前刷完这套面试题资料,小小offer,不在话下
640套AI大模型报告合集
这套包含640份报告的合集,涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。
这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费
】

更多推荐
所有评论(0)