检索增强生成工具选择器

RAG-MCP是一个通过检索增强生成技术优化大型语言模型工具选择的解决方案,有效减少提示膨胀并提高工具选择准确性。

  • by fintools-ai
  • Python
  • 本地部署
  • 7 星标
  • 更新于
在 GitHub 查看 fintools-ai/rag-mcp

使用说明

RAG-MCP:通过检索增强生成减轻LLM工具选择中的提示堵塞

用于构建MCP服务器的包,该服务器将检索增强生成(RAG)原理应用于工具选择。我们维护所有可用MCP元数据的外部向量索引,而不是用所有MCP描述淹没LLM。

研究论文要点

问题陈述

  • 快速金发:随着可用工具(MCP)数量的增长,在单个提示中包含其所有描述会导致上下文窗口饱和和工具选择不佳
  • 决策复杂性:当面对许多类似的选项时,LLM很难选择正确的工具
  • 性能下降:刀具选择精度从少刀具时的>90%下降到多刀具时的~13.62%

RAG-MCP解决方案

RAG-MCP将检索增强生成原则应用于工具选择:

  1. 检索阶段:轻量级检索器对用户查询进行编码,并在MCP索引上执行语义搜索,返回前k个候选MCP
  2. 验证阶段:对于每个检索到的MCP,可以生成几个射击示例来测试兼容性
  3. 调用阶段:仅将单个最佳MCP描述注入LLM提示符

关键利益

  • 减小提示大小:将提示令牌减少50%以上(从2133.84个令牌减少到1084个令牌)
  • 提高准确性:工具选择准确率提高了三倍以上(43.13%对13.62%基线)
  • 较低的认知负荷:法学硕士不再需要筛选数百个干扰因素
  • 资源效率:仅激活选定的MCP服务器,而不是所有已注册的服务器
  • 可扩展性:可以在不重新培训LLM的情况下将新工具添加到索引中

实验结果

MCP压力测试显示:

  • 当候选池较小(<30 MCP)时,成功率较高(>90%)
  • 超过约100 MCP时,性能下降变得明显
  • RAG-MCP即使在大型工具注册表中也能保持更好的性能

架构概述

RAG-MCP的操作分为三个核心步骤:

  1. 用户查询→ 编码并提交给检索器
  2. 检索器→ 搜索向量索引,根据语义相似性对候选者进行排名
  3. LLM → 仅接收选定的MCP模式并执行任务

RAG-MCP管道图

graph LR
    A[Query<br/>Encoding] --> B[Vector Search<br/>& Validation]
    B --> C[LLM<br/>Invocation]
    
    A1[User Query] --> A
    A --> A2[Qwen Retriever]
    
    B1[Vector Index] --> B
    B --> B2[Top-k MCPs]
    
    C --> C1[Use selected MCP]
    C --> C2[f&#40;&#41;]
    
    style A fill:#f9f,stroke:#333,stroke-width:2px
    style B fill:#bbf,stroke:#333,stroke-width:2px
    style C fill:#bfb,stroke:#333,stroke-width:2px

该管道展示了RAG-MCP如何:

  1. 编码 使用Qwen max检索器进行用户查询
  2. 检索并验证 向量索引中的top-k MCP
  3. 援引 所选MCP和LLM仅使用所选工具的模式

目标

主要目标是使LLM能够有效地利用大量外部工具,而不会出现快速膨胀或决策疲劳。

运作原理

传统方法(无RAG-MCP)

User Query → LLM sees ALL tools → LLM selects tools → Execute tools
              (15+ tools, 2000+ tokens)

RAG-MCP方法

User Query → RAG-MCP filters tools → LLM sees ONLY relevant tools → Execute tools
              (using embeddings)        (3-5 tools, ~1000 tokens)

用法示例

想象一下,你有一个法学硕士助理,有20多种工具可供选择:

  • 网络搜索工具
  • 数据库查询工具
  • 计算器工具
  • 文件操作工具
  • API集成工具
  • 还有更多。..

无RAG-MCP

# Current approach - ALL tools sent to LLM every time
response = llm.query(
    user_input="What's the weather in Tokyo?",
    available_tools=[
        weather_api,
        web_search,
        database_query,
        calculator,
        file_reader,
        file_writer,
        api_caller,
        ... # 15+ more tools
    ]
)
# Result: LLM processes 2000+ tokens of tool descriptions
# Often selects wrong tools or gets confused

使用RAG-MCP

# RAG-MCP approach - intelligent pre-filtering
relevant_tools = rag_mcp.get_relevant_tools(
    query="What's the weather in Tokyo?",
    all_tools=tool_registry,
    top_k=3
)
# Returns: [weather_api, web_search, api_caller]

response = llm.query(
    user_input="What's the weather in Tokyo?", 
    available_tools=relevant_tools  # Only 3 tools!
)
# Result: LLM processes ~1000 tokens
# Higher accuracy in tool selection

真实世界用例

1. 多工具AI助手

如果你的AI助手有以下工具:

  • 代码分析
  • 文档搜索
  • 数据库查询
  • API调用
  • 文件 操作

RAG-MPCP确保像“analyze this Python function”这样的查询只能得到代码分析工具,而不能得到数据库或API工具。

2. 交易机器人 (贸易复制品具体示例)

Trade Copilot有17个专用工具:

  • 交易记忆:get_current_bias、store_trading_decision、check_consistance
  • 市场分析:市场结构、公平订单流、数量文件
  • 期权分析:options_order_flow、options_greeks_v2、greeks_metrics
  • 日内工具:ORB_分析、FVG_分析、技术区

存在的问题:每个查询都会加载所有17个工具(约3000个令牌),即使是简单的工具。

RAG-MCP实例:

# Example 1: Simple Market Check
query = "What's the market structure for SPY?"
# Without RAG-MCP: All 17 tools loaded
# With RAG-MCP: Only 3 tools selected
selected_tools = ["get_current_bias", "market_structure_tool", "equity_order_flow_tool"]
# Result: 82% reduction in tool overhead

# Example 2: Options Analysis
query = "Show me Greeks and volatility skew for SPY 0DTE"
# Without RAG-MCP: All 17 tools (including unneeded equity tools)
# With RAG-MCP: Only options-specific tools
selected_tools = ["get_current_bias", "options_greeks_tool_v2", "greeks_metrics_tool", "greeks_insights_tool"]
# Result: 76% reduction, faster Greeks calculations

# Example 3: Opening Range Breakout
query = "Is SPY breaking out of opening range?"
# Without RAG-MCP: All 17 tools (including all options tools)
# With RAG-MCP: Only intraday tools
selected_tools = ["get_current_bias", "financial_orb_analysis", "financial_fvg_analysis"]
# Result: 82% reduction, critical for fast 0DTE decisions

已处理工具依赖关系:RAG-MCP理解 greeks_metrics_tool 需要 options_greeks_tool_v2 首先运行,确保正确选择工具。

何时使用RAG-MCP

当您有以下情况时,请使用RAG-MCP:

  • ✅ LLM提供10多种工具/功能
  • ✅ 具有重叠或相似功能的工具
  • ✅ 由于提示大小较大,性能问题
  • ✅ 过度使用代币带来的成本问题
  • ✅ 用户报告LLM选择了错误的工具

预期改进

基于研究和实际应用:

  • 令牌使用情况:提示令牌减少50%
  • 刀具选择精度:提高3倍(从约14%提高到约43%)
  • 响应时间:由于处理量减少,速度提高了30-40%
  • 成本节约:与代币减少成比例
  • 可扩展性:可以处理100多种工具而不会降低性能