快速结论:该问题发生在 RAGFlow 使用 use_sql 构建 Markdown 表格并开启 Source 列时。优先排查 api/db/services/dialog_service.py 文件中第 1307 行的分隔符构建逻辑,确认是否存在 docid_idx 被重复检查的复制粘贴错误。
问题场景
用户在 RAGFlow 中启用了 Source 列(即文档 ID 和文档名称列),并通过 use_sql 功能生成 Markdown 格式的表格时,发现分隔符行(separator line)多出一个空列,导致 GFM(GitHub Flavored Markdown)表格渲染异常。
报错原文
Markdown table separator has extra column when Source is enabled
The separator line uses docid_idx and docid_idx instead of docid_idx and doc_name_idx, producing malformed GFM tables.
原因分析
这是一个已确认的复制粘贴错误。在 api/db/services/dialog_service.py 第 1307 行,分隔符构建代码中的条件判断重复检查了 docid_idx 两次(即 docid_idx and docid_idx),而不是正确检查 docid_idx and doc_name_idx。此外,该行代码在条件成立时仅添加一个 |------| 段,而添加 Source 列(文档 ID 和文档名称)时应该添加两个 |------| 段,与表头的构建逻辑保持一致。
环境排查
- 检查 RAGFlow 版本:确认是否使用了受影响的分支(例如
1fc02606ea9df6645169f495db207172d0d2cab8或相近版本)。 - 确认
api/db/services/dialog_service.py文件是否存在,以及第 1305-1323 行的代码逻辑。 - 确认是否在
use_sql功能中启用了 Source 列。
解决步骤
- 定位到
api/db/services/dialog_service.py文件的第 1307 行。 - 找到分隔符构建代码:
line = "|" + "|".join(["------" for _ in range(len(column_idx))]) + ("|------|" if docid_idx and docid_idx else "") - 修复为正确的逻辑:
line = "|" + "|".join(["------" for _ in range(len(column_idx))]) + ("|------|------|" if docid_idx and doc_name_idx else "")主要修改包括:
- 将条件判断中的重复
docid_idx改为docid_idx and doc_name_idx。 - 将条件满足时添加的单个
|------|改为两个|------|------|,以匹配 Source 列的两列。
- 将条件判断中的重复
- 保存文件并重启 RAGFlow 服务。
验证方法
重新执行 use_sql 查询并启用 Source 列,检查生成的 Markdown 表格分隔符行是否与表头列数一致,且 GFM 表格渲染无额外空列。
参考来源
AI 工具推荐
想把多个 AI 模型放在一个入口?
GamsGo AI 集成 ChatGPT、DeepSeek、Gemini、Claude、Midjourney、Veo 等常用模型,适合写作、绘图、视频和日常 AI 工作流。
推广链接:通过此链接购买,我可能获得佣金,不影响你的价格。
这个方案解决了吗?
可以继续搜索完整报错,或查看同一工具的其他排查指南。


