Deep RAG - 智能Agent模式
Deep RAG是Bella-RAG系统的核心创新功能,基于Planning and Solve模式实现的智能agent,模拟人类在书架上查找答案的方式,提供比传统RAG更优的问答效果。
💡 什么是Deep RAG
核心理念
随着大语言模型能力的不断提升和上下文窗口的扩大,我们设计了一种让模型模拟人在书架上查找答案的方式,实现deep search模式的RAG。
核心思路:
- 圈定文件范围 - 像人类一样先确定可能包含答案的文档
- 阅读文档内容 - 深度阅读相关文档的完整内容
- 反思验证 - 对搜索和阅读结果进行反思验证
- 动态调整 - 根据执行结果动态调整后续计划
传统RAG vs Deep RAG
对比维度 | 传统RAG | Deep RAG |
---|---|---|
检索方式 | 基于embedding的片段检索 | 基于文档级别的智能搜索 |
内容理解 | 依赖切片,可能破坏文档结构 | 阅读完整文档,保持原始结构 |
推理能力 | 单步检索生成 | 多步骤规划和执行 |
准确率 | 72%+ | 84%+(相比传统模式提升12pp) |
适用场景 | 简单问答 | 复杂问题分析和推理 |
🔧 核心工具
Deep RAG封装了两个核心工具来实现智能搜索:
1. file_search工具
- 功能: 根据用户提问查询相关文件列表
- 实现方式: 结合文件摘要和检索技术,智能圈定相关文件范围
- 优化: 支持分页查询,避免信息过载
{
"name": "file_search",
"purpose": "查询与用户提问相关的文件列表,并返回文件内与提问相关的内容片段,可翻页查询",
"input_schema": {
"type": "object",
"properties": {
"question": {
"type": "string",
"description": "用户提问"
},
"page": {
"type": "integer",
"description": "分页检索序号(从1开始)"
}
}
}
}
2. read_file工具
- 功能: 根据文件ID读取完整文档内容
- 实现方式: 读取文件流并转换为模型友好的markdown格式
- 优势: 保持文档原始结构,提供完整上下文
{
"name": "read_file",
"purpose": "读取指定文件的详细内容",
"input_schema": {
"type": "object",
"properties": {
"file_id": {
"type": "string",
"description": "通过file_search获取的文件标识"
}
}
}
}