引言
随着大语言模型(LLM)的快速发展,企业和个人开始广泛探索其在实际场景中的应用。然而,通用大模型面临着知识时效性、事实准确性以及幻觉等问题。检索增强生成(RAG)技术应运而生,通过结合外部知识库提升了回答的准确性。但随着应用场景的复杂化,传统的 RAG 逐渐显露出局限性,无法处理多步骤推理和复杂任务规划。智能体(Agent)作为 RAG 的进阶形态,通过引入工具调用、记忆机制和反思能力,成为了解决复杂问题的关键方向。
RAG 技术的痛点
RAG 技术在问答系统、智能助手和信息检索等场景中表现优异。其核心流程是:用户查询 -> 检索相关文档片段 -> 将片段与问题整合输入 LLM -> 生成答案。这种模式有效减少了幻觉,提高了信息时效性。
然而,Naive RAG(基础 RAG)主要适用于简单查询,例如:
- 特定事实查询:"特斯拉的主要风险因素是什么?"
- 单文档提取:"作者在 YC 期间做了什么?"
但在面对以下复杂场景时,RAG 往往失效:
- 总结性问题:需要跨多个文档综合信息,如 "总结 XXX 公司的年度报告"。
- 比较性问题:涉及多实体对比,如 "比较开发者 A 和 B 的开源贡献"。
- 结构化分析:需要语义搜索结合逻辑判断,如 "告诉我美国最高业绩拼车公司的风险因素"。
- 综合性多部分任务:涉及多步推理和格式约束,如 "从文章 A 提取论点 X,从文章 B 提取论点 Y,按内部风格指南制表并得出结论"。
这些任务超出了单纯检索 + 生成的范畴,需要更强的规划与执行能力。
RAG 到 Agent 的演进
从 RAG 到 Agent 的转变并非抛弃检索,而是在此基础上增加更高级的智能层。Agent 能够像高效员工一样,自主选取工具、沟通协作直至交付结果。
Agent 相比传统 RAG 增加了以下核心能力:
- 多轮对话:识别深层意图,进行上下文交互。
- 任务规划层:理解复杂查询,将其拆解为可执行的子任务。
- 外部环境工具接口:调用 API、数据库或计算工具完成任务。
- 反思机制:对执行结果进行评估,若失败则自我修正。
- 记忆管理:维护历史交互,提供个性化服务。
Agent 不仅能理解语言,还能在数字系统中采取行动。它可以通过函数调用访问用户数据,与数据库交互,无缝接入各种系统 API。
案例分析:阿里千问 Agent
阿里千问团队开发了一个基于 RAG 的 Agent,用于理解百万字级的文档。该方案仅使用 Qwen2 模型的 8k 上下文,效果却优于长序列原生模型和传统 RAG。
1. Agent 构建层级
该 Agent 采用了三层复杂度架构,每一层建立在前一层基础之上。
级别一:检索优化
针对关键词匹配不足的问题,采用指令分离策略:
- 指令与非指令分离:将用户输入中的约束条件(如字数、语言)与核心问题分开。
- 输入:"回答时请用 2000 字详尽阐述,我的问题是,自行车是什么时候发明的?请用英文回复。"
- 拆解:{"信息": ["自行车是什么时候发明的"], "指令": ["2000 字", "详尽", "英文"]}
- 多语言关键词推导:利用模型生成中英文关键词。
- 转换:{"关键词_英文": ["bicycles", "invented", "when"], "关键词_中文": ["自行车", "发明", "时间"]}
- BM25 检索:运用传统检索算法获取最相关的文本块。
级别二:分块阅读
解决相关块与查询重叠度低导致漏检的问题:
- 相关性评估:让模型对每个 512 字块评估相关性,输出相关句子或"无"。
- 二次检索:将相关句子作为新的查询词,再次通过 BM25 检索。


