跳到主要内容

高级特性

本文档介绍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内容的向量检索
  • 图文融合生成: 结合图片信息和文本内容生成答案

应用场景

  • 技术图表和流程图理解
  • 扫描文档的文字提取
  • 表格和图表数据分析
  • 手写笔记和标注识别

🔗 相关文档