Skip to main content
AgentScope 提供内置 RAG 支持,使 Agent 能够访问外部知识库。

概述

核心组件

AgentScope 中的 RAG 模块由两个核心组件组成:
  • Reader(读取器):负责读取和分块输入文档,将其转换为可处理的单元
  • Knowledge(知识库):负责存储文档、生成嵌入向量以及检索相关信息

支持范围

AgentScope 支持多种类型的知识库实现:

集成模式

AgentScope 支持两种 RAG 集成模式:

Generic 模式

在 Generic 模式下,知识会自动检索并注入到用户的消息中:
工作原理:
  1. 用户发送查询
  2. 知识库自动检索相关文档
  3. 检索到的文档被添加到用户消息之前
  4. Agent 处理增强后的消息并响应

Agentic 模式

在 Agentic 模式下,Agent 拥有 retrieve_knowledge 工具并决定何时使用它:
工作原理:
  1. 用户发送查询
  2. Agent 推理并决定是否检索知识
  3. 如果需要,Agent 调用 retrieve_knowledge(query="...")
  4. 检索到的文档作为工具结果返回
  5. Agent 使用检索到的信息再次推理

本地知识库(SimpleKnowledge)

快速开始

Reader 配置

AgentScope 为 SimpleKnowledge 提供了多种内置 Reader: 分割策略:CHARACTERPARAGRAPHSENTENCETOKEN

向量存储

云托管知识库(Bailian)

阿里云百炼知识库,支持 reranking、查询重写、多轮对话。通过 百炼控制台 管理文档。

快速开始

高级配置

多轮对话检索

完整配置示例

Dify 知识库集成

支持云服务和自托管,提供关键词、语义、混合、全文四种检索模式。通过 Dify 控制台 管理文档。

快速开始

检索模式

高级配置

完整配置示例

RAGFlow 知识库集成

开源 RAG 引擎,支持 Docker 部署、强大 OCR、知识图谱、多数据集检索。

部署

快速开始

多数据集和文档过滤

注意dataset_idsdocument_ids 至少要设置一个。如果只设置 document_ids,确保所有文档使用相同的嵌入模型。

元数据筛选

完整配置示例

支持的比较操作符:
  • = - 等于
  • - 不等于
  • >, <, , - 数值比较
  • contains - 包含
  • not contains - 不包含
  • start with - 以…开头
  • empty - 为空
  • not empty - 不为空

自定义 RAG 组件

AgentScope 鼓励自定义 RAG 组件。你可以扩展以下基类:

自定义 Reader 示例

最佳实践

  1. 分块大小:根据模型的上下文窗口和使用场景选择分块大小。典型值:256-1024 个字符。
  2. 重叠:使用 10-20% 的重叠以保持块之间的上下文连续性。
  3. 分数阈值:从 0.3-0.5 开始,根据检索质量调整。
  4. Top-K:初始检索 3-5 个文档,根据上下文窗口限制调整。
  5. 模式选择
    • 使用 Generic 模式:简单问答、一致的检索模式、较弱的 LLM
    • 使用 Agentic 模式:复杂任务、选择性检索、强大的 LLM
  6. 向量存储选择
    • 使用 InMemoryStore:开发、测试、小型数据集(<10K 文档)
    • 使用 QdrantStore:生产环境、大型数据集、需要持久化
    • 使用 ElasticsearchStore: 生产环境、大型数据集、私有部署服务。

完整示例