ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

Dify分隔符功能说明

Dify分隔符功能说明

🔧 Dify分隔符功能说明

功能概述

为了在Dify上传CSV时保持chunk的元数据完整性,在每个chunk的末尾添加一个唯一的、不会出现在正文中的特殊分隔符。Dify可以使用这个分隔符来准确切割chunk,避免误切。

默认分隔符

设计特点

  1. 独特性:包含特殊字符<>和下划线
  2. 长度适中:43个字符,既不太长也不太短
  3. 包含日期:避免未来重复
  4. 描述性强:明确标识这是chunk结束分隔符

CSV输出格式

单个chunk的CSV行

"论文文本内容...","{""category"":""vulnerability_mining"",""year"":""2024"",""section"":""Abstract"",""chunk_id"":1}",paper.pdf

示例

content,metadata,source "This paper presents a novel approach for vulnerability detection using deep learning.","{""category"":""vulnerability_mining"",""year"":""2024"",""section"":""Abstract"",""chunk_id"":1}",paper.pdf "The proposed method consists of three main components...<>","{""category"":""vulnerability_mining"",""year"":""2024"",""section"":""Method"",""chunk_id"":2}",paper.pdf

使用方法

默认使用(推荐)

python process_papers.py --input ./papers

禁用分隔符

python process_papers.py --input ./papers --no-separator

自定义分隔符

python process_papers.py --input ./papers \ --separator "<<<MY_CUSTOM_SEPARATOR>>>"

Dify导入步骤

1. 上传CSV文件

  1. 登录 Dify Cloud
  2. 创建或进入知识库
  3. 点击"文档" → "导入"
  4. 选择"上传文件" → 选择生成的CSV文件

2. 配置分段设置(重要!)

在Dify的分段设置中:

  • 分段标识符
  • 索引模式:高质量
  • Embedding模型:选择支持中英文的模型

3. 开始处理

点击"开始处理",Dify会使用你指定的分隔符来切割chunk。

为什么需要分隔符?

问题场景

使用\n\n作为分隔符(不推荐)

CSV内容: "论文内容1\n\n论文内容2" Dify分割: Chunk-1: 论文内容1 Chunk-2: \n论文内容2 ❌ 错误!

使用.pdf作为分隔符(不推荐)

CSV内容: "Scaling Laws for Neural Language Models.pdf<<<CHUNK_END...>>>" Dify分割: Chunk-1: Scaling Laws for Neural Language Models ❌ 错误! Chunk-2: <<<CHUNK_END...>>>

解决方案

使用自定义分隔符(推荐)

CSV内容: "论文内容..." Dify分割: Chunk-1: 论文内容... ✅ 正确! 元数据完整保留!

自定义分隔符建议

原则

  1. 不要使用常见字符:避免使用\n.,:
  2. 使用特殊符号<>|#~
  3. 足够长:至少20个字符
  4. 包含描述性文字:如 "CHUNK_END"、"SEPARATOR" 等
  5. 添加日期/版本号:避免与现有内容冲突

推荐格式

# 格式1:三尖括号格式 # 格式2:管道符格式 |||||| # 格式3:井号格式 ###CHU2### # 格式4:波浪号格式 ~~~CHU2~~~

不推荐的分隔符

# ❌ 太短,容易误切 "###" # ❌ 常见字符,可能出现在正文中 "\n\n" "---" ".pdf" # ❌ 没有描述性 "X" "END"

测试工具

验证分隔符功能

python test_dify_separator.py

这将显示:

  • 默认分隔符
  • 每个chunk的处理结果
  • CSV文件内容预览
  • 验证所有chunk都有分隔符

配置文件修改

如果需要修改默认分隔符,编辑src/pdf_processor/config.py

OUTPUT_CONFIG = { # ... 其他配置 # Dify专用chunk分隔符 "dify_chunk_separator": "", }

常见问题

Q1: 分隔符会出现在正文中吗?

A: 默认分隔符非常独特(包含<>和日期),几乎不可能出现在学术论文正文中。如果担心,可以使用更特殊的分隔符。

Q2: Dify支持这种分隔符吗?

A: 支持。Dify的分段标识符可以设置为任意字符串,包括特殊字符。

Q3: 分隔符会影响检索质量吗?

A: 不会影响。分隔符只是用于分段,检索时仍然基于内容本身。

Q4: 可以禁用分隔符吗?

A: 可以,但不推荐。禁用后Dify会使用其他方式(如按字符数)分段,可能导致元数据不完整。

Q5: 上传到Dify后,chunk中还会保留分隔符吗?

A: 会保留。这是正常的,因为分隔符是chunk的一部分。检索结果中会显示分隔符,但不影响语义理解。

Q6: 如果不小心在正文中包含了分隔符怎么办?

A: 在Dify中可能会出现错误的分段。解决方法:

  1. 使用更独特的分隔符
  2. 或者在处理前清洗文本,移除可能的冲突

完整工作流

# 1. 处理论文(添加分隔符) python process_papers.py --input ./papers # 2. 查看生成的CSV # output/cyber_security_papers_XXX.csv # 3. 在Dify中导入 # - 上传CSV文件 # - 设置分段标识符: # - 开始处理 # 4. 测试检索 # - 在知识库中测试查询 # - 验证chunk边界是否正确

示例场景

场景1:处理200篇论文

# 使用默认分隔符 python process_papers.py --input ./papers # Dify设置: # 分段标识符:

场景2:自定义分隔符

# 使用自定义分隔符(更独特) python process_papers.py --input ./papers \ --separator "" # Dify设置: # 分段标识符:

场景3:批量处理多个目录

# 处理漏洞挖掘论文 python process_papers.py --input ./papers/漏洞挖掘 \ --separator "<<<VULN_MINING_CHUNK_END>>>" # 处理LLM安全论文 python process_papers.py --input ./papers/LLM安全 \ --separator "<<<LLM_SECURITY_CHUNK_END>>>"

总结

Dify分隔符功能确保了:

元数据完整性:每个chunk的元数据准确对应 ✅准确分段:Dify按指定分隔符切割,避免误切 ✅灵活配置:支持自定义分隔符 ✅易于验证:测试工具可验证分隔符是否正确添加

推荐配置:使用默认分隔符

返回列表