aaihubhub
AI Agent 小白系统课:从大模型到会行动的智能体 · 第 11 课 / 共 20 课 ↗ AI 教程

11|检索 Agent:从搜索工具到可验证答案

搭建搜索、访问网页与引用答案的完整检索 Agent。

kimi
LESSON BRIEFING11 / 20

搭建搜索、访问网页与引用答案的完整检索 Agent。

记忆像酒店前台档案:房号是本次会话,偏好可长期保存,身份证复印件则有严格保留和访问规则。

传统 RAG 检索增强生成流程

本课交付物

为学习助手写记忆策略,包含写入条件、过期时间、更正、删除和用户查看入口。


核心讲解

提示:
您可以通过 此 动手实验 跟随代码实践,该文件支持在 本地实验环境 中运行。

检索增强生成(Retrieval-Augmented Generation,RAG)系统结合了数据检索和生成模型的能力,以提供上下文感知的响应。例如,用户的查询会被传递给搜索引擎,检索结果与查询一起提供给模型,模型随后根据查询和检索到的信息生成响应。

智能驱动的 RAG(Retrieval-Augmented Generation)通过将自主智能体与动态知识检索相结合,扩展了传统 RAG 系统。

传统 RAG 系统使用 LLM 根据检索数据回答查询,而智能驱动的 RAG 实现了对检索和生成流程的智能控制,从而提高了效率和准确性。

传统 RAG 系统面临关键限制,例如依赖单次检索步骤,以及过度关注与用户查询的直接语义相似性,这可能会忽略相关信息。

智能驱动的 RAG 通过允许智能体自主制定搜索查询、评估检索结果并进行多次检索步骤,以生成更定制化和全面的输出,从而解决这些问题。

基于 DuckDuckGo 的基础检索

让我们构建一个能够使用 DuckDuckGo 进行网页搜索的简单智能体。该智能体将检索信息并综合响应来回答查询。通过智能驱动的 RAG,小安 的智能体可以:

  • 搜索最新的超级英雄派对趋势
  • 优化结果以包含奢侈元素
  • 将信息综合成完整方案

以下是 小安 的智能体实现此功能的代码示例:

智能体遵循以下流程:

  1. 请求分析: 小安 的智能体识别查询的关键要素——重点关注装饰、娱乐和餐饮的豪华超级英雄主题派对规划
  2. 执行检索: 智能体利用 DuckDuckGo 搜索最新相关信息,确保符合 小安 对奢侈活动的精细要求
  3. 信息综合: 收集结果后,智能体将其处理为覆盖派对所有方面的可执行方案
  4. 未来参考存储: 智能体存储检索信息以便后续活动规划时快速访问,优化后续任务效率

自定义知识库工具

对于专业任务,自定义知识库非常宝贵。让我们创建可以查询技术文档或专业知识的向量数据库工具。通过语义搜索,智能体可以找到与 小安 需求最相关的信息。

向量数据库(vector database)是通过专业 ML 模型实现丰富文档表示的集合,能够快速搜索和检索文档。

该方法将预定义知识与语义搜索相结合,为活动规划提供上下文感知解决方案。通过专业知识访问,小安 可以完善派对的每个细节。

在此示例中,我们将创建从自定义知识库检索派对策划创意的工具。使用 BM25 检索器搜索知识库并返回最佳结果,同时使用 RecursiveCharacterTextSplitter 将文档分割为更小的块以提高搜索效率:

增强后的智能体能够:

  1. 首先检查文档中的相关信息
  2. 结合知识库的洞察
  3. 在内存中维护对话上下文

增强的检索能力

构建智能驱动的 RAG 系统时,智能体可以采用以下高级策略:

  1. 查询重构: 智能体可以优化原始查询,生成更匹配目标文档的搜索词
  2. 多步检索: 智能体可以进行多次搜索,利用初步结果优化后续查询
  3. 多源整合: 结合来自网页搜索和本地文档等多个来源的信息
  4. 结果验证: 在将检索内容纳入响应前分析其相关性和准确性

有效的智能驱动 RAG 系统需要仔细考虑几个关键方面。智能体应根据查询类型和上下文选择可用工具,记忆系统帮助维护对话历史避免重复检索,后备策略确保在主要检索方法失败时系统仍能提供价值,验证步骤则帮助确保检索信息的准确性和相关性。

资源

  • Agentic RAG: 使用查询重构和自查询加速您的 RAG 系统!🚀 - 使用 smolagents 开发智能驱动 RAG 系统的实践指南

本站实战工作台

记忆是一套数据政策,不是无限聊天记录

会话状态服务当前任务;语义记忆保存稳定事实;情节记忆记录发生过的事件;用户偏好可能跨会话。每类记忆的写入条件、保留期、读取角色与删除路径不同。

学习助手的最小策略

“用户偏好简短解释”可以在明确同意后长期保存;“这道题答错”属于一次学习事件,可保留 90 天;原始语音和身份证不应因个性化而默认保存。每条记忆带 source、createdAt、expiresAt、confidence 与 userVisible。

type Memory = {
  id:string; userId:string; kind:'preference'|'fact'|'episode'
  value:string; source:string; confidence:number
  createdAt:string; expiresAt?:string; userVisible:boolean
}

写入前四问

这条信息对未来任务是否必要?用户是否知道?多久后失效?错误时如何更正?模型推断“用户不擅长数学”不能直接写成事实;应保存可观察事件或征求确认。

检索与隔离

先按 userId 与用途过滤,再做语义检索。绝不能跨用户召回。返回上下文前脱敏并限制条数。敏感记忆加密且与普通向量索引分离。

更正、遗忘与导出实验

写入一条假偏好,用户将其更正,确认旧值不再召回;执行删除,检查主库、向量索引、缓存和派生摘要;最后导出用户可读清单。删除事件本身可保留审计元数据,但不保留已删内容。

评估记忆价值

比较无记忆、正确记忆、过期记忆和错误记忆四组任务。错误记忆可能比没有记忆更糟,因此写入质量、置信度与过期机制和召回率同样重要。

完成标准是用户能看、改、删;系统能解释来源和用途;跨用户隔离有测试;长期保存不是默认选项。