书接上篇:分别使用Page Assist、AnythingLLM和RAGFlow接入deepseek模型,并上传及分析本地知识::
AI入门:AI模型管家婆ollama的安装和使用-CSDN博客
AI入门2:本地AI部署,用ollama部署deepseek(私有化部署)-CSDN博客
AI入门3:给本地deepseek设置网页访问方式(UI插件Page Assist 安装)_deepseek本地部署网页访问-CSDN博客
AI入门4:基于Ollama+DeepSeek,用Page Assist搭建本地知识库-CSDN博客
AI入门5:基于Ollama+DeepSeek,用AnythingLLM搭建本地知识库-CSDN博客
AI入门6:基于Ollama+DeepSeek,用RAGFlow搭建本地知识库_如何查看ragflow里内置的rerank模型信息-CSDN博客
本节介绍用Dify接入deepseek,搭建本地知识库。Dify则是一个基于大语言模型(LLM)的应用开发平台,和Ragflow相比较,它提供了丰富的功能和灵活的工作流编排,虽然Ragflow没有工作流编排,但Ragflow专注于深度文档理解和检索增强生成(RAG),它特别适合处理复杂格式的文档,并能够进行无幻觉生成,确保生成结果的准确性和可靠性。所以,两者各有利弊,可以选择使用,也可以联合使用,后面其他文章介绍联合的使用方式,本文介绍Dify接入deepseek的部分。
准备工作
ollama和deepseek安装设置好,具体操作参考,上面AI入门1和2。并安装好docker,docker安装
大家参考之前发的文章:
下载Dify
说明,dify当前最新版本V1.0.1,多个小伙伴安装配置后,找不到模型,安装上一个0.15.3,没有这个问题,所以,本文我们使用0.15.3版本。
下图:V1.0.1找不到模型的界面,供参考。
用命令,带上版本号下载,先创建一个文件夹,我这里用“E:\ollama\”,然后打开文件夹,在地址栏输入cmd,打开dos窗口输入命令
git clone https://github.com/langgenius/dify.git --branch 0.15.3
执行界面,参考如下:
这样就会下载一个dify文件夹,和在网页上下载后解压到效果一样,像这样:
找到docker下的.env.example:
将.env.example
改为.env
文件,修改此文件,在文档最后,增加下面配置信息:
# 启用自定义模型
CUSTOM_MODEL_ENABLED=true
# 指定 Ollama 的 API 地址(根据部署环境调整 IP)
OLLAMA_API_BASE_URL=host.docker.internal:11434
其中OLLAMA_API_BASE_URL,填写ollama的真实地址,和端口号,本机IP通过win+R,cmd,打开dos窗口,输入ipconfig,查看ip地址,在浏览器中,输入http://ip地址:11434/,如果能显示下面界面,表示正确:
.env的修改界面如下:
保存配置文件,在地址栏,输入cmd,回车进入dos窗口,执行命令
docker compose -f .\docker-compose.yaml -p dify up -d
执行界面如下:
特别说明:
Docker Compose 使用项目名来隔离不同的项目环境,默认情况下,项目名称是 docker-compose.yml 文件所在目录的名称,如果安装了多个容器,如Ragflow 和 Dify,其项目名都是docker,需要在命令行中通过p参数,指定项目名。如果不区分项目名,同时启动RAGFlow和Dify容器,会出现Redis 容器冲突错误。
注意,不要给docker文件夹改命,否则会遇到服务起不来的情况,像这样:
超时错误处理
在此过程如果出现超时错误:
Get "https://registry-1.docker.io/v2/": context deadline exceeded
就参考下面的文档:
docker找不到镜像,无法成功下载ragflow-main的问题_ragflow docker 无法下载-CSDN博客
安装启动
在浏览器地址栏输入即可安装:http://127.0.0.1/install,初始界面,自动加载安装:
完成后,设置管理员账号:
完成后进行登录:
登录后,就安装好,可以使用了:
配置模型
进入配置界面:
然后选择“模型供应商”,(如果没有任何模型显示,检查是不是dify版本不对),找到ollama:
鼠标划过模型,显示按钮,点击“添加模型”:
模型名称填写,ollama中下载的模型,通过命令ollama list,查看
ollama list
执行界面如下:
上面,“添加模型”配置保存后,会显示在模型列表中,然后点击“系统模型设置”,现在刚配置的模型,保存。
然后,关闭设置页,就完成了模型设置。
创建应用
在“工作室”区域,点击“创建空白应用”,
填写应用信息:
类型参考:
聊天助手:基于大型语言模型(LLM)构建的对话式交互助手,适用于简单的问答和需要大模型进行抽象或判断的场景。聊天助手支持知识库,适合逻辑简单的问答。
文本生成:用于生成长文本的任务,如撰写故事、文本分类、翻译等。如果配置了文本转语音模型,还可以直接将生成的文本转换为语音。
Agent:能够分解任务、推理思考、调用工具的对话式智能助手。相比聊天助手,Agent新增了工具调用能力,可以调用Dify内置的小工具,并通过Agent+Google实现网页搜索功能。
工作流(Workflow):基于流程编排的方式定义更加灵活的LLM工作流,适用于需要复杂流程定义和执行的任务。工作流没有聊天记忆功能,只能在最后一步输出结果。
对话流(Chatflow):适用于定义复杂流程的多轮对话场景,具有记忆功能的应用编排方式。Chatflow可以在执行过程中进行中间步骤的内容输出,并且LLM和问题分类器有聊天记忆的开关,可以应对多轮对话并记住之前的对话内容。
点击创建,可以设置提示词,调试模型,以及在上下文,创建知识库。
创建知识库
在应用中创建知识库,或者点击“知识库”标签,进行创建:
上传本地知识文档:
下一步,按默认参数,或者自行调整,点击“预览块”按钮,在右侧预览区,会显示文档分块情况,保存执行
点击“知识库”标签,可以看到所添加的知识库,进行设置:
重命名知识库名称:
点击,知识库,可以进入查看知识库中的内容:
点击左侧设置按钮,可进行设置:
保存知识库,点击“工作室”,进入工作区设置,添加知识库:
然后进行发布:
验收成果:问答测试
点击“探索”标签,选择刚创建的工作区,然后“开始对话”:
我这里,针对上传的知识文档,问了一个问题“正经教主是个怎样的人”,回答结合了模型和知识库,结尾有知识库的引用说明:
根据回答,它自己推理的内容太多了,调整知识库的检索设置,设置为最高,
调整后,再发布更新,开起一个新回话,这次回答就更靠谱了:
dify的部署就暂时到这里了。
其他
日常启停服务
总结一下,日常启动,在ollama,和docker正常启动后(ollama和docker都有程序菜单,从开始中找到运行即可,运行后在右下角程序栏有运行图标),在doc窗口,先跳转到dify所在目录的docker目录下,执行命令:启动服务:
docker compose -f .\docker-compose.yaml -p dify up -d
不需要的时候,通过docker命令关闭模型,不然有点费资源:
docker compose -f .\docker-compose.yaml -p dify down
然后,再关闭docker和ollama(右下角程序栏有运行图标,右键菜单中关闭)。
端口冲突问题
docker同时部署RAGFlow和Dify,两个默认端口都是80,端口冲突,解决方式见之前文档:
docker同时部署RAGFlow和Dify端口冲突问题-CSDN博客
如何卸载dify
如果dify版本没装对,或者不要了,需要卸载,在docker里,停止容器,然后删除容器,再删除物理文件夹就行了。