Dify是开源的 LLM 应用开发平台。提供从 Agent 构建到 AI workflow 编排、RAG 检索、模型管理等能力,轻松构建和运营生成式 AI 原生应用。
本教程通过搭配离线版Deepseek蒸馏版(Ollama)或满血版(ktransformer),能够实现本地高效率RAG
0.预准备
首先需要部署好ollama + deepseek,详细教程参考:
https://blog.youkuaiyun.com/qq_26123545/article/details/145723607
注:openwebui可以不安装,但是docker需要安装
如果需要更高级的量化版R1,且资源有限,可以使用Ktransformer框架搭建R1,参考:
https://blog.youkuaiyun.com/qq_26123545/article/details/145757197
1.安装向量模型
RAG需要一个向量(embedding)模型,可以选择
https://ollama.com/library/nomic-embed-text
或者
https://ollama.com/library/bge-m3
这里我选择的是bge-m3
拉取此模型:
ollama pull bge-m3
2.安装Dify
这里我们选择使用Docker安装
参考官方github:https://github.com/langgenius/dify
这里需要把dify clone到本地:
git clone https://github.com/langgenius/dify.git
或者直接下载包解压
2.1 配置Dify
安装好dify后,进入到docker目录
首先复制一份环境文件
cp .env.example .env
2.2 修改端口号(可选)
dify默认需要用到80、443、5000等端口号,如果它与你的服务器现有服务冲突,或者不支持这些端口,可在.env文件进行修改。其它的信息包括数据库、redis等配置也在这里面
vim .env
这里可以修改默认web端口:
根据自己情况修改即可。
然后生成docker-compose文件:
./generate_docker_compose
即可。
2.3 启动Dify
运行
docker compose up -d
观察服务是否启动成功。
3.使用Dify
所有Docker服务启动成功后,即可输入服务器IP+端口进入web页面。
如果docker服务有问题,可以通过 docker logs [container_name] 来排查
第一次进入dify会先让你设置管理员密码。
3.1 添加模型连接
首先需要添加本地模型,点击右上角账户,选择模型供应商
ollama
找到模型供应商列表的ollama
配置如下:
可以根据自己的情况添加多个模型,比如32b、14b等
Ktransformer
kt需要通过openai的api来连接
首先添加OpenAI-API-compatible连接
配置如下(这里的名称我没改):
注:在此连接的时候,dify会发送“Ping”到kt端,所以在启动kt模型的时候,需要关闭强制思考,或者限制上下文长度,要不然可能会导致回答过长而超时。
3.2 添加文本嵌入模型
添加完成后进行验证:
4.设置模型
在系统模型设置 这里选择推理模型和嵌入模型
推理模型一般推荐32b或者70b,速度较快。当然如果需要更好的支持或者硬件资源充足,可以选kt的满血模型
5.测试chat
在“工作室”里“创建空白应用”
即可在这里测试模型是否能工作
6.建立RAG 知识库
在 知识库 页面创建知识库
这里随便导入一个你需要的文档即可
设置如下:
更详细的介绍可以参照其它教程
随后点击 保存并处理 即可
之后文本向量模型会处理文档,一般来说PDF可能会慢点,这个进度也可能一直卡在0%,或许等几个小时就好了
如果一直排队中,那可能需要重启docker容器
处理完后可以看到类似如下的图:
点击进来即可看到分段内容
7.使用RAG知识库
还是和刚才一样,在工作室页面 创建一个聊天助手
进来之后设置类似这样的提示词:
# 角色
你是一位 xx项目的开发者,能够根据用户提出的问题,首先从知识库【xx项目】中精准检索相关答案,并以此为基础为用户提供准确、清晰且完整的回答。
## 技能
1. 当用户提出问题后,首先在知识库【xx项目】中进行检索。
2. 严格依据检索到的内容进行回答。
3. 直接回答问题答案,并给出具体解释。
## 限制:
- 所有专业性的回答必须完全基于知识库【xx项目】的内容,不得自行编造。
然后在下面的 上下文 这里设置刚才创建的知识库
之后便可在右侧聊天框进行调试
当然可以切换不同模型,效果会有所不同