文档附件解析管线
分块:按结构切,不是按字符切
流程是 上传 → 提取结构 → 生成带位置的块 → 当前问题检索相关块 → 送入模型,不是每隔若干字符切一刀。
- Word / Markdown / TXT:优先按标题、段落、列表、表格切分;超长章节再拆成约
800–1200 tokens的块。 - PDF:保留页码和页面内段落,扫描件先 OCR;引用时能定位到「文件名 · 第 12 页」。
- 表格:按工作表处理,每块都带工作表名、表头和连续数据行;表头在每块重复,同时保留行号、列名、公式文本和计算值。
- 图片:不做文本分块,生成 OCR 文本 + 视觉描述,作为独立图片 context。
- 跨块只保留少量重叠,防止一句话被切断,不大面积复制内容。
要点是块要自带定位信息(页码/表头/行号),否则引用时无法回指原文。
表格:工具算,模型解释
只做「分块 + 检索」无法可靠完成求和、筛选、排序、找异常、生成图表。表格附件应同时进入隔离的表格执行器,由工具计算,模型负责解释结果 —— 不要让模型心算整张表。
全局任务:遍历全部块
按问题检索只适用于「问具体问题」。但「总结整份文件」「比较全部工作表」这类全局任务要遍历所有块:先分块总结,再汇总最终结论。只取搜索排名靠前的几块会漏掉内容。
生命周期:块绑定 Session + TTL
可以复用已有的 embedding 能力,但附件块必须独立绑定 Session,并按 7 天 TTL 清理。既有向量是按整篇笔记/剪藏建立的,不具备附件级的文件对象、解析状态、过期时间和 chunk 模型 —— 不能把文件硬塞进旧的 attachment 结构。
格式分流:能本地做的不要花钱上 OCR
不是所有格式都值得走 OCR 服务,按「本地解析够不够」分流:
- PDF、DOCX、JPEG、PNG、WebP → 外部 OCR(需要结构、页码、坐标)
- TXT、Markdown → 本地解析,没必要付 OCR 费用
- XLSX、CSV → 本地表格解析,保留 sheet、行列、公式与计算值
- 旧版
.doc/.xls→ 先隔离转换再解析 - HEIC / HEIF → 先转 JPEG/PNG
选型判据是依赖与部署复杂度最低:OCR 服务只负责提取,不承担 Session 存储与 TTL;首批因此不必引入重型自建解析容器。
相关
- 内置能力只覆盖它声明的那一段 —— 复用框架已有的图片入口,别重造协议
- 知识库先编译再查而不是查询时拼原文
- 混合检索先用RRF融合
- 检索要按难度迭代
- 上下文按信任等级分层
- 按实际规模选型而不是按方案先进性