高级特性
本文档介绍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数) / 检索数量