[Question]: Letter ‘n’ missing when parsing documents

用户使用 RAGFlow 的 Python API 创建数据集(dataset)时,通过 parser_config 自定义文档解析分隔符(delimiter),或者完全不指定 parser_config 使用默认值。预期按换行符( \n )分割文档,但实际解析后文档中的字母 'n' 被无故剥离。问

[Question]: Letter 'n' missing when parsing documents

[Question]: Letter ‘n’ missing when parsing documents

快速结论:该问题通常在使用 RAGFlow Python API 创建数据集并配置 parser_config 中的 delimiter 参数时触发。优先检查 delimiter 中是否使用了双反斜杠(如 "\\\\n"),这会导致后端将 \\n 解释为字面量反斜杠加字母 ‘n’,从而在解析时错误地剥离文档中的字母 ‘n’。

问题场景

用户使用 RAGFlow 的 Python API 创建数据集(dataset)时,通过 parser_config 自定义文档解析分隔符(delimiter),或者完全不指定 parser_config 使用默认值。预期按换行符(\n)分割文档,但实际解析后文档中的字母 ‘n’ 被无故剥离。问题可影响 Markdown 及其他所有文档类型。

报错原文

When I use the python api to create dataset, either
1. i specify parser_config and cannot parse documents(.md) at all (delimiter: '\n')
2. i don't specify parser_config and the parsed documents strips letter 'n' (delimiter: '\\n')

原因分析

根本原因是 RAGFlow 对 parser_configdelimiter 参数的转义序列处理不一致。

  • 如果在 Python 代码中设置 delimiter = "\\n",Python 解释器会将其解释为一个真正的换行符(单反斜杠 + n),这是正确的用法,可以按换行分割文档。
  • 如果错误地设置了 delimiter = "\\\\n"(双反斜杠),Python 传递的实际字符串是字面量反斜杠后跟字母 ‘n’(即 \n 文本)。RAGFlow 后端不会对转义序列进行标准化,它会按字面量字符串分割,即把字母 ‘n’ 作为分隔符,导致所有 ‘n’ 字符被移除。
  • 不指定 parser_config 时,默认 delimiter 可能也被错误解释,引发相同问题。

这是已知代码缺陷(参见 #8668),后端未对 delimiter 字符串做转义序列的统一转换或标准化。

环境排查

  • 确认 Python 客户端中传递的 parser_configdelimiter 的原始字符串值(建议打印并检查反斜杠数量)
  • 确认 RAGFlow 版本(避免编写版本号,但可参考 Issue 讨论中的已知缺陷)
  • 确认受影响文件类型(不限于 Markdown)

解决步骤

  1. 检查 Python 代码中的 delimiter 设置:始终使用 "delimiter": "\\n"(单反斜杠),让 Python 将其解释为换行符。不要写成 "\\\\n"(双反斜杠)。
  2. 建议打印出实际发送给 API 的 parser_config JSON 字符串,确认 delimiter 字段值为 "\\n"(在 JSON 中表示一个换行符)。
  3. 如果完全不指定 parser_config 仍然出现问题,可尝试显式设置正确的 delimiter 以覆盖可能的错误默认值。
  4. 此问题已记录为已知缺陷,可关注后续版本修复。当前通过步骤 1 和 2 可有效规避(可优先尝试)。
# 正确示例
parser_config = {
    "delimiter": "\n"  # 在 Python 字符串中只有一个反斜杠
}

# 错误示例(会导致字母 n 被剥离)
parser_config = {
    "delimiter": "\\n"  # 双反斜杠,实际传递的是字面量 \n
}

验证方法

使用修正后的 delimiter 重新创建数据集并解析一个包含字母 ‘n’ 的测试文档(如 Markdown 或纯文本)。解析完成后,检查文档内容中所有字母 ‘n’ 是否完整保留,并且文档是否按预期换行符正常分割段落。

参考来源

infiniflow/ragflow #8724

关联缺陷 #8668

GamsGo AI

AI 工具推荐

想把多个 AI 模型放在一个入口?

GamsGo AI 集成 ChatGPT、DeepSeek、Gemini、Claude、Midjourney、Veo 等常用模型,适合写作、绘图、视频和日常 AI 工作流。

了解 GamsGo AI

推广链接:通过此链接购买,我可能获得佣金,不影响你的价格。

celebrityanime
celebrityanime
文章: 14626

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注