图文档模型替代向量RAG:在法规文件处理中的实践经验
传统的RAG方法——将文本分割成块、向量化并搜索——在处理法规文件时效果不佳。语义搜索能找到相关条款,但忽略了相关的子条款、注释或交叉引用。结果是:答案不完整,模型从孤立的片段中得出结论,丢失了关键上下文。
对于涉及法规链的问题,检索会带来噪音或遗漏关键元素。问题不在于大语言模型,而在于文档的扁平化表示,其中最小的存储单元与意义单元不匹配。
结构化模型:从文本到节点层次结构
文档被建模为可寻址元素的树结构:
- 根节点——整个文档。
- 章节、条款、子条款。
- 表格和公式作为独立节点。
- 节点之间的连接。
- 一个独立的术语定义层。
索引基于解析后的规范化结构,而非原始文本块。这保留了层次结构,并允许精确访问元素。
上下文分组:为何单个节点不够用
原子节点(单个条款)会丢失局部上下文。对于像“最低紧急出口”这样的问题,你需要的不仅是主要条款,还包括:
- 同一级别的相邻子条款。
- 注释。
- 相关表格。
- 对其他章节或文档的交叉引用。
分组基于共同父节点和嵌套级别进行,并设有大小限制。没有通用的块大小:小组会丢失意义,大组会增加检索噪音。结构分组通过将有意义块纳入索引,提高了答案的鲁棒性。
多模式检索:超越向量搜索
语义搜索适用于自由形式查询,但法规文件需要精确性:
- 按条款编号点搜索(例如,6.2.2)。
- 表格搜索(例如,表7.1)。
- 词汇和混合搜索。
- 术语层。
- 交叉引用搜索。
单个查询会并行触发多种策略:按条款点搜索 + 关键词 + 术语。结果由搜索代理在上下文构建器中组合。
术语层处理同义词
用户和文档使用不同的措辞:官方术语、缩写、分散的定义。术语被单独提取:
- 从文档中提取。
- 链接到定义。
- 单独索引。
- 作为检索中的附加信号使用。
这通过概念将查询连接到相关片段,提高了召回率。
连接图:强制上下文
层次结构不能保证拉取相关法规。图添加了类型化关系:
mandatory——节点的强制性伴侣。cross——交叉引用。- 文档 ↔ 节点。
- 节点 ↔ 表格。
- 文档之间。
当发生相关命中时,检索强制添加相关节点,即使它们不在语义上的前k个结果中。这防止了不完整的答案。
实际系统改进
基于图的模型使答案更鲁棒:
- 精确引用带上下文的条款。
- 处理表格而不丢失描述。
- 区分术语与相似短语。
- 法规链而非孤立片段。
系统不再是聊天工具——它变成了提供可验证答案的工具。
关键要点:
- 文档不是扁平文本,而是带有连接图的可寻址层次结构。
- 检索是多层次的:向量 + 点 + 术语 + 连接。
- 按结构而非令牌分组,以保留上下文。
- 强制连接在数据中明确表达。
- 一个问题——多种搜索与结果组合。
复杂领域的经验教训
在法规上下文中,RAG的质量由数据而非模型决定。关键启示:
- 将文档结构化为节点图。
- 按层次结构分块,具有自适应大小。
- 组合检索策略。
- 提取术语和强制连接。
这可以扩展到其他具有刚性结构的领域:代码、规范、合同。
— Editorial Team
暂无评论。