之前讲过 DeepSeek

+ Cherry 搭建本地知识库,这样的知识库比较初级,上传的文件限制较多。无法满足更多个性化需求。今天我们来看看 DeepSeek + Dify 如何搭建自己的知识库。

Dify 作为同样开源的 AI 应用开发平台,提供完整的私有化部署方案。通过将本地部署的 DeepSeek 服务无缝集成到 Dify 平台,企业可以在确保数据隐私的前提下,在本地服务器环境内构建功能强大的 AI 应用。

以下是私有化部署方案的优势:

  • 性能卓越:提供媲美商业模型的对话交互体验
  • 环境隔离:完全离线运行,杜绝数据外泄风险
  • 数据可控:完全掌控数据资产,符合合规要求

前置准备

硬件环境:

  • CPU >= 2 Core
  • 显存/RAM ≥ 16 GiB(推荐)

软件环境:

开始部署

1. 安装 Dify

git clone https://github.com/langgenius/dify.git
# 速度太慢可以用这个 git clone https://gitee.com/dify_ai/dify
cd dify/docker
cp .env.example .env # 创建配置文件

更新上传文件大小配置(非必须)

默认上传图片大小是10MB,上传视频大小是100MB,文件默认是50MB,如果有需要修改下面对应的参数。

打开上面复制出来的 .env 文件,修改如下参数:

# Upload image file size limit, default 10M.
UPLOAD_IMAGE_FILE_SIZE_LIMIT=10
# Upload video file size limit, default 100M.
UPLOAD_VIDEO_FILE_SIZE_LIMIT=100
# Upload audio file size limit, default 50M.
UPLOAD_AUDIO_FILE_SIZE_LIMIT=50

启动 Dify

docker compose up -d # 如果版本是 Docker Compose V1,使用以下命令:docker-compose up -d

如果 docker 拉取镜像太慢,可以设置镜像,加到后面即可:

"registry-mirrors": [
    "https://hub.rat.dev",
    "https://dockerhub.icu",
    "https://docker.wanpeng.top",
    "https://register.librax.org"
  ]

访问 Dify

设置管理员与登录,Dify 社区版默认使用 80 端口。

# 本地环境
http://localhost/install

登录后

2. 将 DeepSeek 接入至 Dify

接入在线 api 模型配置

如果本地没有部署 DeepSeek ,可以直接用硅基流动

的 API 接入。

硅基流动

没有硅基流动 API Key 可以参考我之前的文章申请。

设置好后可以看到有很多模型可以选择:

接入本地部署的 DeepSeek

如果本地部署了 DeepSeek,可以接入本地的模型。点击 Dify 平台右上角头像 → 设置 → 模型供应商,选择 Ollama

,轻点“添加模型”。

这里用 Ollama 客户端,则需要在本机上部署 DeepSeek,Base URL 填写 http://本机IP:11434 即可。

再添加向量模型

点击保存即可。

最终系统模型设置

我这里直接使用硅基流动的了。

现在 DeepSeek 就正常接入到 Dify 啦。

知识库

创建知识库

分段选择

dify的分段有个好处,设置分段以后,可以实时预览,可以根据预览效果,自己实时调整分段策略。dify 建议首次创建知识库使用父子分段模式。

通用模式

系统按照用户自定义的规则将内容拆分为独立的分段。当用户输入问题后,系统自动分析问题中的关键词,并计算关键词与知识库中各内容分段的相关度。根据相关度排序,选取最相关的内容分段并发送给 LLM,辅助其处理与更有效地回答。

在该模式下,你需要根据不同的文档格式或场景要求,参考以下设置项,手动设置文本的分段规则

  • 分段标识符,默认值为 \n,即按照文章段落进行分块。
  • 分段最大长度,指定分段内的文本字符数最大上限,超出该长度时将强制分段。默认值为 500 Tokens,分段长度的最大上限为 4000 Tokens;
  • 分段重叠长度,指的是在对数据进行分段时,段与段之间存在一定的重叠部分。这种重叠可以帮助提高信息的保留和分析的准确性,提升召回效果。建议设置为分段长度 Tokens 数的 10-25%;
  • 文本预处理规则, 过滤知识库内部分无意义的内容。提供以下选项:
    • 替换连续的空格、换行符和制表符
    • 删除所有 URL 和电子邮件地址

这里选择通用模式看看效果:

父子模式

通用模式相比,父子模式采用双层分段结构来平衡检索的精确度和上下文信息,让精准匹配与全面的上下文信息二者兼得。

其中,父区块(Parent-chunk)保持较大的文本单位(如段落),提供丰富的上下文信息;子区块(Child-chunk)则是较小的文本单位(如句子),用于精确检索。系统首先通过子区块进行精确检索以确保相关性,然后获取对应的父区块来补充上下文信息,从而在生成响应时既保证准确性又能提供完整的背景信息。你可以通过设置分隔符和最大长度来自定义父子区块的分段方式。

其基本机制包括:

  • 子分段匹配查询
    • 将文档拆分为较小、集中的信息单元(例如一句话),更加精准的匹配用户所输入的问题。
    • 子分段能快速提供与用户需求最相关的初步结果。

  • 父分段提供上下文
    • 将包含匹配子分段的更大部分(如段落、章节甚至整个文档)视作父分段并提供给大语言模型(LLM)。
    • 父分段能为 LLM 提供完整的背景信息,避免遗漏重要细节,帮助 LLM 输出更贴合知识库内容的回答。

img

选择父子模式看看效果:

这么看区别不是很大。

继续选择索引方式和检索设置,都采用推荐设置:

这样知识库就创建成功了,等待嵌入处理完成。

使用

创建应用

点击工作室,我们可以看到有很多丰富的应用,包括聊天助手、agent、工作流等 我们选择最简单的应用,聊天助手,点击5,创建空白应用。

添加知识库

创建好后添加知识库

点击召回设置:

Score 阈值是设置本文片段的相似度阈值,这里设置 0.7 。

调试与预览

这样我们就可以发布了,发布之后返回工作室就可以看到刚刚创建的应用啦。

总结

DeepSeek + Dify 的知识库构建功能确实强大,有多种分段索引模式可选,里面还有不少可以深入研究的东西,后续会慢慢整合更新~

Logo

欢迎加入DeepSeek 技术社区。在这里,你可以找到志同道合的朋友,共同探索AI技术的奥秘。

更多推荐