菜单

高级 RAG 与代理

相关源文件

本文档涵盖了检索增强生成(RAG)系统和 LLM 代理的高级技术。虽然基础 RAG(在检索增强生成中介绍)侧重于检索相关文档以增强 LLM 回答,但高级 RAG 包含复杂的查询构建、后处理和工具集成。本文档还探讨了使 LLM 能够自主使用工具并通过多个推理步骤做出决策的代理架构。

高级 RAG 架构

基础 RAG 系统根据与用户查询的相似性检索文档,然后将这些文档提供给 LLM。高级 RAG 通过专门的组件进行扩展,用于查询优化、文档处理和生成控制。

高级 RAG 系统架构

与基础 RAG 相比,主要进步包括:

  1. 查询增强 - 转换用户查询以提高检索效果
  2. 多源检索 - 将向量存储中的文档与数据库中的结构化数据相结合
  3. 重排序 - 使用语义模型提高检索精度
  4. 上下文构建 - 智能地组装检索到的信息以供 LLM 使用

来源:README.md356-363

查询构建

查询构建将自然语言问题转换为结构化查询,以便从数据库、知识图谱或其他结构化数据源检索信息。

查询构建工作流程

关键的查询构建技术包括:

  1. Text-to-SQL - 将自然语言转换为用于关系数据库的 SQL 查询
  2. Text-to-Cypher - 为图数据库生成 Cypher 查询
  3. 元数据感知查询构建 - 使用模式信息来约束查询
  4. 少样本查询构建 - 使用示例指导 LLM 构建正确的查询

查询构建的好处

  • 能够精确访问结构化数据
  • 通过将回答 grounding 在数据库事实中来减少幻觉
  • 允许进行聚合、连接和过滤等复杂操作

来源:README.md357 README.md366-367

代理与工具

代理是自主的 LLM 系统,它们可以计划和执行多个步骤来完成任务,并在需要时利用外部工具。代理架构支持复杂的推理和任务分解。

LLM 代理架构

常见的代理框架和范例

  1. ReAct (推理 + 行动) - 交替进行推理和行动步骤
  2. 工具使用范例:
    • 使用预定义函数的工具调用
    • 通过自然语言命令使用工具
    • 自我反思式工具选择
  3. 代理内存类型:
    • 短期工作记忆
    • 长期持久内存
    • 用于过去交互的事件内存

流行的代理框架包括 LangChain 的代理、AutoGPT 和面向任务的框架(如 Gorilla)。

来源:README.md358 README.md368-370

后处理技术

后处理在将检索结果发送给 LLM 之前对其进行增强,以确保更高级别的上下文质量。

后处理流程

关键的后处理技术

  1. 重排序 - 应用第二个更复杂的排序模型来优化初始检索结果
  2. RAG-fusion - 结合多种检索策略(例如 BM25 和语义搜索)以利用各自的优势
  3. 聚类 - 对相似文档进行分组,以减少冗余并保持多样性
  4. 过滤 - 根据元数据或内容分析删除不相关或低质量的文档

后处理的好处

  • 提高检索文档的相关性
  • 增加提供给 LLM 的信息多样性
  • 通过消除冗余信息来减少 token 使用量

来源:README.md359 README.md369-370

使用 DSPy 进行程序化 LLM

DSPy 是一个框架,允许开发人员定义可通过自动评估进行优化的 LLM 驱动的模块。它为构建和改进 RAG 系统提供了编程模型。

DSPy RAG 优化流程

DSPy 支持

  1. 声明式 LLM 编程 - 通过类型化签名定义输入、输出和中间步骤
  2. 自动提示优化 - 基于评估指标优化提示
  3. 可组合模块 - 从更简单、可重用的组件构建复杂的系统
  4. 自改进系统 - 系统可以通过程序化反馈从错误中学习

RAG 的示例 DSPy 模式

  • 用于更好检索的查询转换器
  • 从用户反馈中学习的自适应检索器
  • 用于复杂信息需求的链式多跳推理

来源:README.md360 README.md370-371

集成的高级 RAG 代理系统

此图展示了所有组件如何在一个完整的高级 RAG 代理系统中协同工作

这个集成系统展示了如何将高级 RAG 技术和代理功能结合起来,创建能够:

  • 直接从检索到的文档中回答问题
  • 在需要时生成结构化数据库查询
  • 为复杂任务规划多步流程
  • 使用外部工具来增强能力
  • 在多次交互中保持上下文

来源:README.md356-371

对比:基础 RAG vs. 高级 RAG

下表比较了基础 RAG 实现与高级 RAG 系统

功能基础 RAG高级 RAG
查询处理直接相似性搜索查询扩展,假设文档生成
检索来源仅向量存储向量存储 + 结构化数据库 + 知识图谱
文档选择按相似性排序的前 k 个重排结果 + 融合技术
上下文构建简单串联过滤、去重、聚类的信息
决策制定单次生成带工具使用的多步推理
内存简单的对话历史工作内存 + 长期存储
优化手动调优程序化评估和改进
响应生成直接 LLM 完成从多个来源合成的回答

高级技术在多个维度上显著提高了 RAG 系统的性能

  • 更准确的检索
  • 更高的答案相关性和事实性
  • 处理复杂、多步查询的能力
  • 更好的推理能力

来源:README.md356-371

实现框架

多个框架有助于实现高级 RAG 和代理系统

  1. LangChain - 拥有代理、工具和高级检索器一流支持的综合框架
  2. LlamaIndex - 专注于 RAG,具有强大的查询转换和结构化数据能力
  3. DSPy - LLM 应用开发的程序化方法,支持优化
  4. FastRAG - 高性能 RAG 实现,专注于速度和可伸缩性
  5. Transformers Agents - Hugging Face 的代理框架,具有工具使用能力

每个框架在易用性、灵活性和性能之间提供不同的权衡。

来源:README.md358 README.md366-370

结论

高级 RAG 和代理技术代表了 LLM 应用开发的前沿,使系统能够访问多个知识源、对复杂信息进行推理并采取行动来完成任务。这些功能极大地扩展了 LLM 在基础 RAG 实现之上的可能性。

有关在生产环境中部署这些系统的信息,请参阅部署与优化