Agentic RAG
作者:Ai Flowi · 发布于
Agentic RAG 是由智能体决定何时检索证据、以及如何利用证据完成回答任务的检索增强生成。固定 RAG 工作流按预定义路径检索;智能体方案则将检索作为可用工具。应从固定检索开始,再在问题需要不同搜索或澄清时考虑使用智能体。
本指南提出 AI Flowi Workflow 中的受限检索工具和比较流程。组件契约已在组件目录中说明;Ai Flowi 未进行生产环境测试。这里没有检索工具与回答路径组合后的运行时结果记录。
1. 定义智能体可以决定什么
给 Agent 一个范围明确的任务:依据一个已批准的知识库回答问题,指出支持答案的来源,并在证据缺失时停止。文档导入、权限和更新应留在任务之外。检索到的文档是待检查的证据,不是运行其他工具或更改工作流的许可。将这一区别写入 system_prompt,并用包含类似指令文本的文档进行测试。
创建和检查知识库,请使用现有的知识库设置指南。本设计从语料库准备就绪后开始。记录哪些文档版本可以参与检索,以及哪些问题需要澄清。如果每个请求都只需要相同的单次搜索,知识库聊天机器人设计可以提供更简单的比较路径。
2. 准备账户和仅用于检索的工作流
你需要能访问构建器、已有内容的知识库、嵌入服务提供商要求的凭据,以及已配置的语言模型提供商。在需要时使用你自己的提供商账户和 API 密钥;提供商对使用量单独计费。凭据应按照模型配置设置,不要将密钥放入工具描述或提示词。
根据有文档说明的 Knowledge Base 检索路径构建搜索部分,再在将其作为工具前,验证已加载工作流的查询和返回映射。
这项设计中特有的选择,是允许智能体在多大程度上改写查询。设想一个虚构问题:某项安排延期期间能否继续保留设备。有用的搜索应同时包含设备和延期;如果替换成关于归还的宽泛问题,就可能遗漏引发请求的条件。将原始请求与拟定的搜索措辞一起保存,检查主题和条件是否仍在。改写应消除对话中的歧义,不能提前决定政策答案。
3. 描述工具及其边界
受限检索设置:示例配置,并非有记录的测试
| 组件 | 需设置的组件目录输入 | 继续前的检查 |
|---|---|---|
| Knowledge Base | knowledge_base:你的已批准语料库;top_k:4;include_metadata:true。 | 检查 Results 中的段落文本和来源标识符;四只是示例候选数量。 |
| Flow as Tool | flow_name:选择已保存的检索工作流;tool_name:policy_lookup;tool_description:针对一个问题搜索已批准的政策段落;return_direct:false。 | 检查查询参数映射和实际返回结构;导出的输入定义没有说明这两项内容。 |
| Agent | model:已配置的 LanguageModel 连接;tools:检索 Tool;max_iterations:3;system_prompt:下方的证据规则。 | 迭代值是试用设置,不是实测的调用预算,也不是经验证的终止保证。 |
连接已保存的检索工具时,应遵循 Agent 输入参考文档中说明的工具类型边界。
比较该边界上的两种潜在错误:工具描述可能过于宽泛,无法指导查询选择;也可能过于狭窄,使智能体面对同义改述时始终不选择该工具。保持同一个已保存工作流,只修改描述。检查所选查询是更具体、更宽泛,还是不变;新描述如果只是生成了更长的回答,并不能证明检索决策有用。
4. 将检索指令与回答指令分开
检索后,应采用知识库聊天机器人中的回答证据约束契约;为本次智能体试用增加以下查询选择指令。
Before search, identify the requested subject and condition.
Ask the user to resolve an unstated subject before building a query.
Carry the subject and condition into the retrieval argument.
Do not rewrite a question into an assumed policy answer.
If another search is proposed, state which missing fact it seeks.
将这段文本设置在 Agent.system_prompt 中。让 tool_description 描述搜索范围和返回的证据,不要宽泛地承诺能解决任何问题。有用的描述应区分政策查询和无关操作。避免将写入或外部消息工具连接到本实验:它们会增加检索问题并不需要的权限。
使用 AI 智能体评估记录工具观测,并标明尚未观测的行为。
对于此任务,关键观测是检索工作流实际收到的搜索查询。一份写得很好的最终答案,并不能说明延期条件是否传入了该查询。将已加载工作流收到的参数与原始请求一起保留;这样也能区分,是智能体改写不佳,还是正确改写在工具绑定过程中丢失。
5. 用相同问题与固定检索比较
两种设计应使用相同的语料库、模型、证据指令和问题集。在固定路径中,将问题直接提交给 Knowledge Base.search_query。在智能体路径中,将问题提交给 Agent.input_value。保存每次尝试实际检索到的段落和最终回答,区分检索变化与生成变化。
| 查询试验 | 需检查的智能体决策 | 固定路径比较 |
|---|---|---|
| 包含延期条件的设备问题 | 改写后是否同时保留设备和条件? | 将所得段落与使用原始措辞返回的段落比较。 |
| 未明确指代对象的代词 | 是否在构建搜索参数前先澄清? | 不要拿尚未明确指代的代词,与完整明确的智能体查询比较。 |
| 包含附带细节的长问题 | 移除了哪些细节,其中是否有会改变适用性的内容? | 保留原始完整查询作为基线。 |
| 搜索没有得到可用段落 | 追加查询是否改变含义,而非重复原查询? | 将重复搜索与新证据分开记录。 |
记录是否发生检索、查询是否针对任务,以及智能体是否适当地停止。流畅的回复可能掩盖不相关的搜索。使用 RAG 评估,分别标注段落覆盖情况和回答的证据依据;不要仅因智能体方案搜索次数更多,就认定它更好。
6. 智能体检索何时不需要?
将一般工具权限和停止条件检查保留在 AI 智能体评估中,并与这项检索比较一起使用。
如果智能体反复构建的查询与你已有的查询相同,就选择固定路径。如果用户所指的对象尚未明确,无论采用哪条路径,都应先澄清。只有保存的观测表明,同一任务中的查询选择出现了有用差异,才考虑由智能体选择工具进行检索。这个决策取决于你的具体问题;仅增加搜索次数,不足以证明还需要一次模型决策。
组件目录未定义 Flow as Tool 的参数绑定、Agent 的迭代限制行为、自动重试或失败恢复。这些字段边界请查阅 Agent 参考文档。如果在你的环境中无法观测工具选择和返回证据,应保留固定检索路径,直到不确定性得到解决。重复调用模型和检索也会增加工作量;选择设计前,应测量其使用量。
用量规划
套餐:Go 年付方案每月 USD8 起(月付 USD10),Plus 年付方案每月 USD16 起(月付 USD20),Pro 100 年付方案每月 USD80 起(月付 USD100),Pro 200 年付方案每月 USD160 起(月付 USD200),Pro 500 年付方案每月 USD400 起(月付 USD500),每月包含 5,000 至 250,000 个 Flowi Tokens,并支持充值;每次节点运行消耗 1 个 token;不包含第三方 API 和模型使用费用。
统计每次搜索和回答尝试中实际执行的节点。配置的迭代设置不是计费估算,模型 token 与工作流节点运行次数也是不同的计量单位。