高级特性
本文档介绍Bella-RAG系统的核心高级特性,包括Contextual RAG、Small2Big检索策略和多模态文档理解。
🧠 Contextual RAG
什么是Contextual RAG
Contextual RAG是Bella-RAG的核心创新特性,专门针对大量信息类似但差异信息集中在标题上的知识库场景设计。例如,同一款产品的多种型号文档,文档内容格式几乎一致,核心区别在标题和关键参数上。
适用场景
- 产品规格文档: 同一产品多型号的规格说明
- 技术标准文档: 相似结构但参数不同的标准文档
- 配置指南: 同类型但配置项不同的系统文档
- 政策法规: 结构相似但条款细节不同的法规文档
核心提取流程
1. 文档结构还原
通过文件ID查询所有节点,并还原节点关系树,保持文档的原始层次结构。
2. 智能节点分组
粗分阶段:
- 定义最大组token阈值(如4000 tokens)
- 对文档树进行前序遍历
- 确保每个节点及其所有子节点的token量低于最大限制
- 表格类型节点不做token限制,单表必为一个独立分组
- 所有分组保持与文档阅读顺序一致
细分阶段:
- 设置组最小token阈值
min_force
(300 tokens) - 设置允许合并的最小token阈值
min_allowed
(800 tokens) - 如果分组token数 <
min_allowed
且与相邻组合并后不超过最大阈值,则与相邻token数较小的组合并 - 如果分组token数 <
min_force
,则无视最大阈值限制,强制与相邻token数较小的组合并 - 递归执行直到满足条件
3. 背景信息切割
针对超大文档的长尾情况,解决以下问题:
- 模型容量限制: 超过128k输入无法处理
- 节点分组过多: 输出4096 token限制导致结果截断,分组数过多影响模型总结质量
切割策略:
- 对分组按顺序进行size和overlap的划分
- 目前overlap设置为0,批次间信息不交叉
- 核心信息(标题等)会添加到prompt中
- 控制每批总结在30组内,确保模型输出质量
4. 持久化存储
- 构建新的context节点,metadata中附带context_id
- 节点同时存储到MySQL、Elasticsearch和向量数据库
- 建立context节点与原始节点的关联关系
🔍 Small2Big 检索策略
核心思想
Small2Big策略通过小粒度检索、大粒度补全的方式,在保证检索精度的同时提供充足的上下文信息。
Token计算策略
根据大模型的最大token限制,使用以下公式计算每个切片补全的最大token数:
切片最大token数 = (模型最大token数 - 用户提问token数 - 输出预留token数) / 检索数量
补全算法流程
1. 父级遍历
- 从检索到的节点开始,向父层级遍历
- 直到找到一个父节点的token数超过限制则停止
- 以该父节点为边界确定补全范围
2. 兄弟节点补全
- 在边界父节点的子节点中前后遍历
- 如果兄弟节点的token数可以容纳,则加入待补全列表
- 优先补全与检索节点相邻的兄弟节点
3. 父节点边界补全
- 如果最靠前的兄弟节点补全后token仍有余量
- 将边界父节点的文本内容补上
- 提供更完整的上下文信息
4. 文本拼接
- 按照文档顺序遍历待补全列表中的每个节点
- 递归包含所有子节点的文本内容
- 保持原始文档的阅读顺序
表格节点特殊处理
表头补全:
- 检索到表格节点时,首先查找并补全表头行(默认为第一行)
- 确保表格结构的完整性
行列补全:
- 根据检索到的行,向上下各补全一行
- 如果token数超限则直接退出
- 按照markdown格式输出,便于模型理解
去重机制:
- 如果某个节点在前一个节点遍历过程中已被补全
- 该节点在后续处理中直接跳过
- 避免重复内容影响模型理解
🖼️ 多模态文档理解
图片OCR理解
Bella-RAG支持图片内容的OCR识别和理解,将图片中的文字信息纳入检索和 生成流程。
核心能力:
- 图片OCR提取: 自动识别图片中的文字内容
- 多模态检索: 支持图片OCR内容的向量检索
- 图文融合生成: 结合图片信息和文本内容生成答案
应用场景:
- 技术图表和流程图理解
- 扫描文档的文字提取
- 表格和图表数据分析
- 手写笔记和标注识别
🔗 相关文档
- 快速开始 - 基础使用指南
- Deep RAG介绍 - 智能agent模式详解
- API文档 - 完整接口规范
- 项目主页 - 返回概览页面