快速结论:该问题出现在 RAGFlow 的 Go 语言 QA 分块流程中:当上传的 .xlsx 文件被解析为 json 输出格式时,#18800 之后的版本会让每个 .xlsx 文件都生成 0 个 QA chunk,而不是按行列生成问答对。优先排查 xlsx_parser.go 的输出格式是否被改成了 json,以及 QA chunker 是否仍走 CSV/TSV 解析路径。
适用环境:Issue 中确认的信息为:RAGFlow 源码构建(commit 4168b3f9d),非官方镜像;macOS 26.6.2;Apple M1 Pro;Go 1.27.1;CGO_ENABLED=0。未验证的 Python、CUDA、PyTorch、显卡与依赖版本不在本文范围。
最快修复方案:Issue 中已确认 main 分支的 3aba7b47a 修复了该问题,并由 #19198 携带修复、补充了回归测试。升级或切换到包含该提交的 main 代码即可。Issue 中没有提供单行补丁或命令形式的一步修复方案。
注意事项:修复提交仅限于该 Issue 确认的 Go QA 分块路径;#19536、#19611 后续又改动过同一测试文件,说明该区域仍在演进。#19235 虽曾引用本 Issue,但其修复的是同路径上的另外两种输入形态,且不依赖该问题,因此不要把它当作本问题的修复依据。
问题场景
在 RAGFlow 中对 .xlsx 电子表格做 QA 分块(Q&A chunking)时触发。用户用一个包含“question”列和“answer”列的表格上传,期望每个数据行产出一个 QA chunk,但实际每个 .xlsx 文件都返回 0 个 chunk。Issue 中的复现测试位于 internal/ingestion/component/chunker/xlsx_qa_regression_test.go,直接调用 parser.NewXLSXParser 得到解析结果后,再交给 NewQAChunker 处理,用于隔离解析层与分块层的交互。
报错原文
format="json" QA chunks=0
expected 3 chunks, got 0
--- FAIL: TestXLSXQARegression (0.00s)
FAIL ragflow/internal/ingestion/component/chunker 0.833s
对照提交 6c2bca893(#18800 的父提交)的同一测试结果为:
format="html" QA chunks=3
--- PASS: TestXLSXQARegression (0.00s)
ok ragflow/internal/ingestion/component/chunker 0.830s
原因分析
已确认的直接原因来自一行改动:git log -L 150,155:internal/parser/parser/xlsx_parser.go 显示 82e363919 feat: extract images from xlsx parser (#18800) 把 xlsx_parser.go:152 的 OutputFormat 从 "html" 改为 "json",并将渲染后的 HTML 表格放进每个 item 的 text 字段。随后 qa.go:121 把该 item 文本交给 extractQAJSON,后者调用 extractQAText;extractQAText 按换行切分、运行 detectDelimiter,再把字符串当作 CSV 或制表符分隔文本解析。HTML <table> 字符串中不存在包含两个字段的 CSV 记录,因此永远无法构建问答对,最终 chunk 数为 0。
换句话说,渲染出的 HTML 本身是正确的,问题在于通向它的路由被改成了 json,而下游 QA 解析器仍按 CSV/TSV 方式处理文本。复现测试也证实:同一种表格、同一份渲染 HTML,在 #18800 之前得到 3 个 chunk,之后得到 0 个。
环境排查
- 确认 RAGFlow 代码版本:Issue 报告基于 commit
4168b3f9d,修复位于3aba7b47a;请比对当前部署是否早于该修复。 - 确认 Go 版本与构建方式:Issue 环境为 Go 1.27.1、
CGO_ENABLED=0、源码构建。 - 确认操作系统与硬件:macOS 26.6.2、Apple M1 Pro;其他平台未在 Issue 中确认。
- 确认
xlsx_parser.go中OutputFormat的取值,以及qa.go中extractQAJSON/extractQAText的调用路径。 - 确认是否已包含
#19198带来的回归测试;该测试文件位于internal/ingestion/component/chunker/xlsx_qa_regression_test.go。
解决步骤
- 把 RAGFlow 代码升级到
main分支上包含3aba7b47a的版本,该提交已由 Issue 作者确认修复并关闭问题。 - 确认
#19198引入的回归测试已存在于工作树中,路径为internal/ingestion/component/chunker/xlsx_qa_regression_test.go。 - 在
CGO_ENABLED=0的构建环境下重新编译并运行该测试,预期结果为通过,并且日志中的 QA chunks 计数为 3。 - 如果因其他分支策略不能立即升级,可优先尝试把
xlsx_parser.go的OutputFormat恢复为"html",使下游 QA 解析路径回到#18800之前的行为。注意:此项为基于 Issue 中一行 diff 的推测性回退,Issue 并未将其作为官方验证过的修复方案,且可能与#18800引入的图片提取功能冲突。
验证方法
使用 Issue 中给出的回归测试或等价场景:上传一个含“question”列和“answer”列的 .xlsx 文件,观察 QA 分块结果。修复前的参照值为 format="json" QA chunks=0,修复后的参照值为 QA chunks=3(3 行数据、含表头共构造 3 个预期 chunk 的测试用例)。若日志中 QA chunks 计数恢复为预期行数,即说明该回归已修复。
参考来源
AI 工具推荐
想把多个 AI 模型放在一个入口?
GamsGo AI 集成 ChatGPT、DeepSeek、Gemini、Claude、Midjourney、Veo 等常用模型,适合写作、绘图、视频和日常 AI 工作流。
推广链接:通过此链接购买,我可能获得佣金,不影响你的价格。
这个方案解决了吗?
可以继续搜索完整报错,或查看同一工具的其他排查指南。


![[Bug] Queued PDF loses original media payload when merged with a text follow-up](https://www.chat-gpts.plus/wp-content/uploads/2026/09/19367-7e7c936b-768x403.jpg)