跳转至

Dify接入外部知识库

Dify中的RAG一直被诟病,它的知识库设置不够丰富和灵活,对于不同形式的文档上传,尤其是pdf扫描版,上传识别效果不好,知识库根本回答不了PDF内的内容。为了解决这这些Dify提供了外部知识库API,这样就可以连接到 Dify 之外的知识库并从中检索知识。接下来给大家重点介绍Dify连接RAGFlow外部知识库的内容。

1.ragflow简介

RAGFlow是一款基于**深度文档理解**(deepdoc)构建的开源 RAG引擎。深度文档理解是RAGFlow对文档解析的一个解决方案,它包含两个组成部分:视觉处理和解析器。其中视觉处理是通过OCR,布局识别,表结构识别来完成图像,PDF,表格的识别的。针对PDF、DOCX、EXCEL和PPT四种文档格式,都有相应的解析器。能够从各类复杂格式的非结构化数据中提取信息,文本切片过程可视化,还支持手动调整。支持丰富的文件类型,包括 Word 文档、PPT、excel 表格、txt 文件、图片、PDF、影印件、复印件、结构化数据、网页等。

还集成了各种嵌入模型,rerank模型,提供易用的 API,可以轻松集成到各类企业系统。

安装包镜像完整下载下来,体积非常大,环境要求如下:

  • CPU >= 4 核
  • 运行内存= 16 GB
  • 硬盘 >= 50 GB
  • Docker >= 24.0.0 & Docker Compose>= v2.26.1

2.ragflow的安装方法

2.1 到github下载项目源码

可以克隆也可以直接下载

image-20250428160040603

由于前面我们已经安装了Dify项目,这两个项目都依赖了redis,且web端的端口都是默认80端口,因此,为了避免冲突,我们需要修改配置文件。

2.2 修改web访问默认端口

修改文件位置:docker目录下的docker-compose文件

image-20250428160402875

2.3 修改redis配置

修改.env文件

image-20250428160456754

修改docker-compose-base.yml文件

image-20250428160605968

2.4 启动服务

进入docker目录,右键打开命令行:

image-20250428160648850

输入命令:

docker compose up -d

image-20250428160741711

时间比较久,需要大家耐心等待。

2.5 打开浏览器访问

由于前面,我们把web端口设置为了8880端口,docker镜像拉取后,等待容器启动完成,在浏览器输入:127.0.0.1:8880 即可访问

image-20250428160907114

至此,ragflow就安装完成了,注册完成后主页面如下:

image-20250428161139848

2.6 模型配置

image-20250429181913148

3.ragflow 创建知识库

3.1 知识库创建

创建好知识库,点击ragflow 创建知识库。

image-20250428163424972

3.2 上传文件

我们点击新增加文件。上传我们要解析的私有化知识库文档,然后点击解析完成文档向量化。

image-20250428185330664

可以单个文件解析,也可以批量解析,大家可以根据自己的需要选择使用,解析完成后可进行

3.2 分片方式

进入模型设置界面 选择好嵌入模型和解析方法

image-20250428163620680

  1. General 支持的文件格式为DOCX、EXCEL、PPT、IMAGE、PDF、TXT、MD、JSON、EML、HTML。 此方法将简单的方法应用于块文件:系统将使用视觉检测模型将连续文本分割成多个片段。
  2. Q&A 支持 excel 和 csv/txt 文件格式。 如果文件是 excel 格式,则应由两个列组成 没有标题:一个提出问题,另一个用于答案, 答案列之前的问题列。多张纸是只要列正确结构,就可以接受。 如果文件是 csv/txt 格式 以 UTF-8 编码且用 TAB 作分开问题和答案的定界符。
  3. Resume 支持的文件格式为DOCX、PDF、TXT。 简历有多种格式,就像一个人的个性一样,但我们经常必须将它们组织成结构化数据,以便于搜索。 我们不是将简历分块,而是将简历解析为结构化数据。 作为HR,你可以扔掉所有的简历, 您只需与'RAGFlow'交谈即可列出所有符合资格的候选人。
  4. Manual 仅支持PDF。 我们假设手册具有分层部分结构。 我们使用最低的部分标题作为对文档进行切片的枢轴。 因此,同一部分中的图和表不会被分割,并且块大小可能会很大。
  5. Table 支持EXCEL和CSV/TXT格式文件。
  6. Paper 仅支持PDF文件。 如果我们的模型运行良好,论文将按其部分进行切片,例如摘要、1.1、1.2等。 这样做的好处是LLM可以更好的概括论文中相关章节的内容, 产生更全面的答案,帮助读者更好地理解论文。 缺点是它增加了 LLM 对话的背景并增加了计算成本, 所以在对话过程中,你可以考虑减少‘topN’的设置。
  7. Book 支持的文件格式为DOCX、PDF、TXT。 由于一本书很长,并不是所有部分都有用,如果是 PDF, 请为每本书设置页面范围,以消除负面影响并节省分析计算时间。
  8. Laws 支持的文件格式为DOCX、PDF、TXT。 法律文件有非常严格的书写格式。 我们使用文本特征来检测分割点。 chunk的粒度与'ARTICLE'一致,所有上层文本都会包含在chunk中。

4.ragflow 知识库检索

4.1 创建聊天

聊天窗口界面

image-20250428200818926

聊天窗口配置有3个选项面板(助理设置、提示引擎、模型设置)

助理设置,这里最关键就是 填写助理姓名和选择指定的知识库

img

提示引擎 如果大家没有 Rerank模型 可以默认不选。

img

模型设置,这里需要填写选择一个LLM大语言模型作为推理模型使用。

image-20250429172036131

以上设置完成后就可以进行聊天对话了。

image-20250429172108198

以上设置我们完成了ragflow相关设置。

5.ragflow API 设置

接下来我们在dify调用这个ragflow ,需要设置一下ragflow api key.

5.1 获取API

点击系统右上角,选择 API

img

5.2 获取IP

API 服务器 显示ragflow 对外提供的IP, 我的显示是http://127.0.0.1:8880!

image-20250429172223260

5.3 获取API key

点击上面key生成ragflow 对外提供的API

image-20250429172305743

下面就是ragflow 对外提供的HTTP 请求API接口文档

img

6.dify配置外部知识库

6.1 dify配置外部知识库

dify 工作流管理界面,点击上面知识库。点击链接外部知识库。

img

6.2 配置API

击右边的外部知识库API 先把外部知识库API 配置好。

image-20250429181443473

这里我需要添加3个值

1name :随便写一个名字

2 API Endpoint 这个就是和ragflow 整合的地址

RAGflow 对外提供的是192.168.xx.xx 这里填写http://192.168.XX.XXX:9380/api/v1/dify

  1. api key 就是上面ragflow-开头的api KEY

image-20250429174820361

这里的 API Endpoint 的 IP 地址一定是要宿主机网卡上的 IP 地址,不要用 127.0.0.1 或 localhost

image-20250429180342380

6.3 连接知识库

img

这个外部知识库 ID 如何获取呢?我们回到RAGflow 知识库页面,从url中获取:

image-20250429181035636

点击链接,完成ragflow和dify的链接

image-20250429181235339

到这dify 和ragflow已经连接好了。

image-20250429175154835

7.dify ai agent使用外部知识库

7.1 创建Agent

image-20250429175417140

进入ai Agent 聊天界面,在上下文添加外部知识库。

image-20250429175510742

后面就可以进行知识库检索了,检索的是调用通过工具调用知识库。

image-20250429175652594

到这在dify中调用ragflow中的知识库了。