1. 金融RAG系统的结构性困境与破局思路
在金融、医疗等强监管领域,文档通常具有严格的层级结构和复杂的逻辑嵌套。一份标准的保险条款可能包含数十个章节,每个章节下又有层层嵌套的子条款。这种结构化的知识表达方式,恰恰是传统RAG(检索增强生成)系统最棘手的场景。
我们曾遇到一个典型案例:用户询问"主险和附加险在保障范围上的区别"。传统向量检索系统(即使采用Dense+Sparse混合检索+重排序)的表现令人失望——系统返回的所有结果片段都集中在主险的"保险责任"章节,完全遗漏了位于文档第15页的附加险条款。这不是偶然失误,而是架构层面的根本缺陷。
问题本质分析:向量检索本质上是一种"自底向上"的盲搜过程。它将结构严密的文档拆解为数百个独立片段,在语义空间中进行最近邻搜索。这种处理方式丢失了三个关键信息维度:
- 文档的全局目录结构
- 章节间的层级关系
- 条款间的排除与附加关系
当问题涉及跨章节的逻辑对比时,这种碎片化的检索方式就像让盲人摸象——每个片段都真实,但拼凑不出完整图景。在金融场景下,这种结构性缺陷可能导致严重的业务风险。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. FoC架构设计:双引擎并发检索
2.1 核心设计理念
条款森林(Forest of Clauses,FoC)架构的核心创新在于将文档结构提升为"一等公民"。其设计哲学是:在具有严格层级的专业文档中,结构本身就是最强烈的检索信号。就像人类阅读合同时会先查看目录定位相关章节,FoC让LLM具备同样的"上帝视角"。
技术实现上采用松耦合的双路并发架构:
- Bottom-up向量检索:处理细粒度实体匹配(如特定术语定义)
- Top-down结构检索:通过LLM理解文档整体结构,定位相关章节
两路检索结果在内存中动态合并,形成既保留语义相关性又具备结构完整性的上下文。
2.2 系统架构详解
离线处理流程(Ingestion Phase)
- 文档解析:使用自研栈式解析器处理非标Markdown文档
- 树形构建:生成带层级关系的条款森林(ClauseForest)
- 片段标注:为每个文本块标记
clause_id和clause_path - 双路存储:
- 树形结构存入PostgreSQL(JS
