Dify内置知识库实践

39 阅读1分钟

说明:每个文档的分段策略可以不同,但检索策略相同

1、通过create_by_text或create_by_file创建文档未按照自定义的策略分段问题 当你上传PPT导出的PDF文件时可能会遇到此问题,一个分段里只有很少的字符,即使你将分段字符设置为“###”而文档里根本没有这个字符

image.png 原因: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过大上传成功,但知识库会有错误,这种情况只能用文件上传了。

image.png