CSV输出模式(新增)
问题:标准CSV格式的分段问题
在标准CSV格式中,CSV有三列:
content: 文本内容 + 分隔符metadata: JSON格式的元数据source: 源文件名
问题 :分隔符在content列末尾,后面还有metadata和source列,Dify可能无法正确识别分隔符的位置,导致分段不准确。
解决方案:Merged模式
Merged模式 将所有信息合并到content列,确保分隔符在最末尾。
CSV格式对比:
Standard模式(三列):
content,metadata,source "文本内容...","{""category"":""vulnerability_mining"",""year"":""2024"",""section"":""Abstract"",""chunk_id"":1}",paper.pdf
- ❌ 分隔符后面还有metadata和source列
- ❌ Dify可能无法正确分段
Merged模式(合并,推荐):
content,metadata,source "文本内容...[Metadata: {""category"":""vulnerability_mining"",""year"":""2024"",""section"":""Abstract"",""char_count"":135,""source_file"":""paper.pdf"",""title"":""Title""}] [Source: paper.pdf]",,
- ✅ 所有信息在content中
- ✅ 分隔符在最末尾
- ✅ Dify可以准确分段
- ✅ 元数据在content中,不会丢失
使用方法
# 默认使用merged模式(推荐) python process_papers.py --input ./papers # 等同于 python process_papers.py --input ./papers --csv-mode merged # 显式指定merged模式 python process_papers.py --input ./papers --csv-mode merged # 使用standard模式(不推荐) python process_papers.py --input ./papers --csv-mode standard
测试两种模式
# 测试CSV输出模式 python test_csv_modes.py
这将生成两个对比CSV文件,并显示详细的格式对比。
元数据精简
在merged模式下,精简了元数据字段,仅保留核心检索字段:
保留的字段:
category: 论文类型category_cn: 中文类型year: 发表年份section: 章节char_count: 字符数source_file: 来源文件title: 论文标题
移除的字段:
- chunk_id: 在merged模式下不需要
Dify导入设置(Merged模式)
- 上传CSV文件到Dify
- 设置分段标识符:
- 开始处理
重要:使用merged模式时,确保Dify的分段标识符与生成的CSV中的分隔符完全一致。