文档接入与高精度切片流水线
这是整个系统的地基——下游所有能力的上限,都由这一步的切片质量与物理锚定决定。
多格式高保真结构解析
按来源自适应分派解析器:PDF 走 PyMuPDF 高速逐页提取,SEC 归档走标准章节识别,Markdown 走语义层级。 自动提取券商、评级、目标价、发布日期元信息,为后续时序截断与横向共识矩阵提供基础。
Sentence-Window 语义窗口切片
抛弃机械定长切分,以 2~3 句为核心窗口,外延包含上下文窗口,并维持 120~350 字符约束。 每个切片自包含物理页码、章节名及事件时间/发布时间双时间戳,绝不产生无谓词碎片。
质量闸门与单事务原子去重 ← 重点踩坑治理
噪声过滤:剔除表单复选框(☒)、无实质内容的短标题(<80 字符且无动词数字)、通用免责声明。
原子入库事务:内存中预先生成并校验全量切片,DB 删除与写入被严格包裹在单事务中(with conn:),杜绝异常时出现旧数据已删、新数据未进的空洞。
SEC 真实报告页码注册表 ← 典型架构演进
SEC EDGAR 原生 HTML 无分页注释,早期曾导致整份 10-K 的 800+ 切片全部堆在 P1。
现在将映射抽象为按表单类型解耦的注册表(10-K / 10-Q / 8-K 各独立维护),支持运行时动态注册新表单,彻底解决了换文档类型即失效的问题。
三态物理底座设计
金融数据形态差异巨大,通用存储必然妥协。系统将数据解耦为三个物理独立的专用引擎:
态 1:文本证据库 (SQLite FTS5 + 双时间戳)
全文倒排索引 + 结构化元数据。支持按标的、类型、年份及发布时间硬截断。
时间截断是物理级防前视偏差的核心设计:指定 as_of_date 时,任何晚于基准日发布的数据绝不进入候选池。
| 文档类型 | 切片数量 | 核心覆盖范围 |
|---|---|---|
| 10-K 年报 | 570 条 | 三大审计报表、MD&A、分销与供应链、附注 |
| 10-Q 季报 | 218 条 | 季度财报、最新监管诉讼、未结清款项 |
| 卖方 / 产业研报 | 268 条 | 大摩、高盛、巴克莱、伯恩斯坦、TrendForce |
| 业绩电话会 | 23 条 | Q4 FY24 财报电话会高管问答全文 |
| 新闻与监管 | 9 条 | 欧盟 DMA 法案调查、反垄断进展 |
态 2:时序量化库 (列存行情与技术面)
列式存储的高频日线与分钟线,用于估值锚定与技术面统计。计算下推至存储层执行向量化聚合,避免将千万级行情数据反序列化至上下文。
态 3:实体关系图 (SQLite Graph · 悬空引用 = 0)
当前包含 52 个核心实体 / 61 条因果三元组。悬空引用率为 0%——每条边必须绑定一个真实存在的证据切片 ID,这是系统的硬约束。
为什么“悬空引用 = 0”是不可妥协的底线?
图谱中最致命的隐患不是漏边,而是边的出处指向了不存在的片段或占位符。这会导致下游模型看似有据可查,实则推理链建立在空中楼阁之上。 系统在入库与归一化时提供三态诊断暴露:
| 状态 | 含义 | 诊断意义 |
|---|---|---|
matched | 图谱中存在且具备活跃边 | 正常参与 Personalized PageRank 扩散 |
registered_isolated | 已在实体表登记但度数为 0 | 明确暴露结构性缺边,绝不隐瞒 |
unmatched | 完全未被识别 | 暴露词表与同义词映射缺口 |
编译层:公司知识主页 (Wiki)
在检索之上再叠一层零 Token 消耗的确定性编译产物——把一家公司的核心事实固化成结构化看板, 让后续分析无需从零翻找万行语料。
公司知识主页的核心构成
- 核心审计财报大盘:三大表摘要、同比增幅、分部营收,每个数字精确绑定原件页码。
- 无损骨架目录树 (TOC):章节 → 真实物理页码 → 文档指纹 (Hash),附带定向检索命令。
- 量纲与底表锚点:显式给出底表拆解公式与量纲缩放因子(例如百万换算为十亿显式包含
/ 1000)。 - 业绩会与产业前瞻信号:高管供给指引、DRAM/NAND 成本通胀预警。
- 卖方横向共识矩阵:大摩、高盛、巴克莱目标价、P/E、ASP、出货量口径横向对比。
目录树绑定文档指纹的必要性
页码映射是极度脆弱的:一旦重新解析导致分页漂移,整张目录树就会静默失效。比没有目录更糟的是让分析师自信地读错章节。 因此每个目录条目均绑定文档 SHA-256 内容哈希,一旦源文件变更便强制校验,防止分页漂移。
在线问答:四阶段确定性推理链
核心设计原则:让每一层只做它最擅长的事——词法负责高召回,图谱负责因果排序,沙箱负责算术,门禁负责事实一致性。
粗筛召回 + 行业单向渗透
词法检索提供毫秒级高召回,并通过中文领域别名自动展开(如将“存储芯片涨价”自动转为 DRAM 相关检索式)。
行业渗透单向门禁:分析 Apple 成本时,检索范围允许向上下游半导体智库(TrendForce)单向渗透,但严禁渗透进入 SEC 官方财报科目,防止非审计估算污染官方财务底表。
HippoRAG 个性化拓扑扩散 (PPR)
以查询种子为激活源,在加权因果图上进行随机游走重排。针对 Apple、NVIDIA 等 Super-Hub 实体施加 0.15 初始能量阻尼与度数平滑, 确保激活能量精准流向具体的业务因果链(如 DRAM 供给紧缺 → 现货涨价 → 硬件毛利承压)。
确定性复算沙箱 (AST 安全求值)
报告中所有计算推导强制剥离出 LLM,交给专用的 Python AST 白名单沙箱求值。
严格限制为单行纯算术表达式(支持 abs, round, min, max, sqrt),硬拦截换行、赋值、模块 import,从根本上隔离任意代码执行(RCE)风险。
事实蕴含门禁 (生成与裁决解耦)
由独立的本地判别模型裁决“证据切片是否真正蕴含该陈述”,打破模型自问自答的证实偏见。
对未校准的置信度采取保守宽松筛,避免硬阈值造成假阴性误伤。
底层技术选型与实现理由
所有核心组件均可在本地与无网隔离环境下独立闭环运行,不产生外部 API 计费依赖。
| 系统层级 | 选用技术 | 设计选型理由 |
|---|---|---|
| 文本证据库 | SQLite 3 (FTS5 + 触发器) | 单文件零依赖、进程内无 IPC 开销、强事务与双时间戳复合过滤 |
| 时序行情库 | DuckDB + Parquet 列存 | 列式存储、向量化执行引擎,高频聚合与指标计算下推至存储层 |
| 图计算引擎 | 纯 NumPy 矩阵幂迭代 | 免装庞大图数据库,HippoRAG 扩散在 15ms 内收敛,随机游走完全可复现 |
| 算术校验器 | AST 白名单求值器 | 零依赖、严格白名单函数约束,彻底阻断 Prompt 注入引致的任意代码执行 |
| 事实门禁 | 本地轻量判别模型 | 裁决与生成分离,私有化部署保障数据绝对不出内网 |
| 对外服务协议 | 标准 MCP / JSON-RPC | 即插即用,任何合规客户端或命令行环境均可一键挂载 |
📦 获取完整开源插件端代码 GitHub
可直接通过 Git 克隆并在本地一键跑通全量 45 项单元与集成回归测试:
git clone https://github.com/justbugs/dsh-financial-agent.git
cd dsh-financial-agent
# 2. 安装依赖并运行全量测试
pip install -e .
python -m unittest discover tests