说明:每个文档的分段策略可以不同,但检索策略相同
1、通过create_by_text或create_by_file创建文档未按照自定义的策略分段问题 当你上传PPT导出的PDF文件时可能会遇到此问题,一个分段里只有很少的字符,即使你将分段字符设置为“###”而文档里根本没有这个字符
原因:Dify会预先对文档进行分页处理,然后再把分页后的列表元素再进行分段,最后存入向量数据库。分页处理在应用和API层无法设置,使用默认的\n\n\n,除非修改源码。
解决办法:在不修改源码的情况下,可以这样做:将PDF文件解析成文本,将\n\n\n替换成\n\n,然后就可以按预想的策略分段了。
2、create_by_text接口格式 比create_by_file要求更严格,需要有pre_processing_rules
data = {
"name": filename,"text": content,
"indexing_technique":"high_quality",
"process_rule":{"mode":"custom", "rules": {
"pre_processing_rules": [
{"id": "remove_extra_spaces", "enabled": "True"},
{"id": "remove_urls_emails", "enabled": "True"}
],
"segmentation":{"separator":"###,\n\n", "max_tokens":4000,
"chunk_overlap": 10}}}
}
headers = {
"Authorization": f'Bearer {dify_api_key}',
"Content-Type": "application/json"
}
如果text过大上传成功,但知识库会有错误,这种情况只能用文件上传了。