多工具 RAG 编排被严重低估(及其重要性超越了 Agent 的炒作)
摘要
本文强调了多工具 RAG 编排的重要性,认为其被低估且优于当前流行的 Agent 炒作。与单一向量数据库的 RAG 实现不同,多工具 RAG 允许 LLM 根据查询动态选择多个检索源(如网络搜索、向量数据库、结构化数据库),解决了时间滞后、范围限制和查询策略不匹配的问题。这种方法不仅能实现查询自适应检索,还比巨型上下文更具扩展性,并能为 Agent 提供更灵活的数据访问。然而,文章也指出,提取数据的质量是基础,编排会放大数据的优劣,因此确保数据提取的准确性至关重要。
正文
2025 年,大家都在谈论 和 Agentic ,但关于多工具 编排的讨论却出奇地少。多工具 编排是指让 拥有多个检索源,并允许它为每个查询动态选择最合适的源。
我看到的大多数 实现都只使用一个向量数据库来处理所有内容。这会带来一些明显的问题:
时间问题: 你的向量数据库只包含三个月前的快照。当用户询问近期事件时,你返回的信息就会过时。
范围问题: 不同的查询需要不同的数据源。医学问题可能需要历史临床指南(向量数据库)、当前研究(网络搜索)以及精确的药物相互作用(结构化数据库)。单一的检索机制无法优化所有这三者。
查询策略不匹配: “糖尿病的标准治疗方法是什么?”需要通过临床指南进行向量搜索。“今天 FDA 听证会宣布了什么?”需要网络搜索。强迫两者通过相同的管道,哪一个都无法优化。
多工具编排通过定义多个检索工具(网络搜索、向量数据库、结构化数据库、API)来解决这个问题,并让 LLM 分析每个查询以选择合适的源。 你获得的是自适应检索,而不是固定的策略。
使用 OpenAI 函数调用或类似技术可以轻松实现:
tools = [
{
"name": "web_search",
"description": "搜索当前信息、近期事件、突发新闻..."
},
{
"name": "search_knowledge_base",
"description": "搜索既定知识、历史数据、协议..."
}
]
会看到查询,评估使用哪个(些)工具,从合适的源检索信息,然后综合生成响应。
为什么这比人们意识到的更重要:
- 不仅仅是路由: 这是查询自适应检索策略。同一个系统,对于“糖尿病标准治疗”使用向量搜索,对于“最新 FDA 批准”则自动切换到网络搜索。
- 比巨型上下文扩展性更好: 与其将所有内容塞进一个 100 万 的上下文窗口(成本高、速度慢、噪音大),不如从正确的源精确检索所需信息。
- 与 Agent 良好互补: 需要良好的数据源。多工具 为 提供灵活、智能的检索,而不是单一的固定知识库。
但有一点至关重要: 每个工具检索内容的质量非常重要。如果你的向量数据库包含提取质量差的文档(损坏的表格、丢失的结构、OCR 错误),智能路由只会更快地输出垃圾信息。提取质量是基础,无论你是否使用像 Kudra 这样的专业工具处理医学文档,或者只是小心地解析 PDF,都需要干净的数据进入你的向量存储。
在我对一个医疗信息系统的测试中:
- 工具选择准确率:93%( 正确路由了查询)
- 提取质量良好时的答案准确率:92%
- 提取质量差时的答案准确率:56%
完美的编排 + 损坏的数据 = 带有正确引用的自信错误答案。
TL;DR: 多工具 编排实现了单一源 无法比拟的、自适应的、针对特定查询的检索策略。它比巨型上下文方法更实用,并提供了 所需的灵活数据访问。只需确保你的提取管道首先是稳固的,编排会放大数据的质量,无论是好是坏。