构建金融文档高精度语义证据/RAG系统——寻求反馈

Reddit r/AI_Agents 新闻

摘要

本文概述了一个用于金融文档的高精度语义证据和RAG系统的多门架构,强调了可追溯性、对账和混合检索,并征求对其设计的反馈。

我正在设计一个本地、单用户的语义证据/知识系统,用于不断增长的金融和经济PDF库以及结构化Excel文件。该系统有两个目标:证据完整性:重要的数字和声明必须可追溯到原始来源,不支持的信息不应被自信地返回。语义检索:用户应该能够用自然语言提问,并检索相关证据,即使来源使用不同的术语。例如,一份文档说:“净利息收入因平均贷款余额增加而增长8%。”我应该能够问:“是什么推动了NII的增长?”并检索到该证据。 架构 我考虑的架构 PDF / EXCEL │ ┌────────────┴────────────┐ │ │ ▼ ▼ 第一关——主要读取 第一关——Excel读取 ────────────────────── ─────────────────── PDF: PyMuPDF + pdfplumber openpyxl 提取: 提取: • 文本 • 文本 / 注释 • 数字 • 表格 • 坐标 • 公式 • 图像 / 矢量 • 日期 • 工作表 / 单元格 │ │ ▼ ▼ 第二关——再读取 结构检查 ────────────────────── ─────────────────── Docling / Camelot 公式 / 总计 Tesseract(如需) 行-列一致性 │ │ └────────────┬────────────┘ ▼ 第三关——提取对账 ────────────────────── 比较同一来源的独立读取: • 值 • 文本 • 坐标 • 表格结构 • 算术 ┌─────────┴─────────┐ ▼ ▼ 同意 冲突 │ │ ▼ ▼ 接受 隔离 如有重大问题,则人工审核 ▼ 第四关——语义解释 ────────────────────── GPT-5.6 Luna via OpenRouter • 概念分类 • 术语映射 • 实体 / 期间识别 • 叙事理解 绝不发明或更改来源值。 ▼ 第五关——跨来源对账 ────────────────────── 比较 PDF ↔ Excel ↔ 其他文档 • 相同指标? • 相同期间? • 相同定义? • 重述? • 真实冲突? ▼ 第六关——知识 / 检索 ────────────────────── 数值 → DuckDB 词汇 → BM25 语义 → 向量搜索 返回:证据 + 来源 + 冲突 + 缺口 ▼ 第二层 推理 / 综合 我试图强制执行的一些原则 先提取,后解释。 不要信任单个PDF提取引擎;对账独立读取。 不要默认将每个图表栅格化,因为许多PDF包含可恢复的文本/矢量数据。 OCR是扫描/不可读页面的升级路径,而非默认。 图表的视觉/LLM解释是最后手段;视觉估计的数字不会自动被信任。 Excel是完整的证据来源:金融数字和分析师注释/文本在摄取时包含工作表/单元格来源。 金融数字以结构化方式存储,而不是依赖向量相似性。 叙事证据同时使用词汇和语义检索。 冲突来源被保留,而不是静默解决。 该系统建立并检索证据 我真的希望能得到以下方面的反馈: 1. 这个多门架构是否合理,或者我是否过度设计了摄取过程? 2. 独立提取 + 对账是控制静默PDF/OCR错误的良好实践方法吗? 3. 你会使用 PyMuPDF + pdfplumber + Docling,还是简化PDF提取栈? 4. 混合检索(结构化数值 + BM25 + 向量/语义搜索)是否适用于金融/经济文档? 5. 我遗漏了哪些重要的故障模式,特别是在金融表格、图表、OCR、重述、冲突来源和基于Excel的分析师注释方面? 在实现路径上走得太远之前,我正在寻求架构批评。 感谢 u/terrible_Put8617 提供的早期指导。
查看原文

相似文章