Dify知识库 本地部署DeepSeek 开启智能体和工作流


博主目前体验了各种RAG系统,以及影视系统、小说系统、音乐服务器、服务监控及自动化报警、自定义信息流、Ai智能体和工作流等各种服务,这些服务的搭建教程后续将会一一介绍。今天给大家介绍一下如何在DOCKER上部署人工智能应用Dify,结合上私有的知识库,调用远程大模型,轻松搭建属于自己的Ai智能体和工作流。

一、什么是Dify

Dify是一个开源的 LLM 应用开发平台。提供从 Agent 构建到 AI workflow 编排、RAG 检索、模型管理等能力,轻松构建和运营生成式 AI 原生应用。比 LangChain 更易用。
在这里插入图片描述

官网 https://dify.ai/zh
git https://github.com/langgenius/dify

Dify能够做什么

  • 创业,快速的将你的 AI 应用创意变成现实,无论成功和失败都需要加速。在真实世界,已经有几十个团队通过 Dify 构建 MVP(最小可用产品)获得投资,或通过 POC(概念验证)赢得了客户的订单。
  • 将 LLM 集成至已有业务,通过引入 LLM 增强现有应用的能力,接入 Dify 的 RESTful API 从而实现 Prompt 与业务代码的解耦,在 Dify 的管理界面是跟踪数据、成本和用量,持续改进应用效果。
  • 作为企业级 LLM 基础设施,一些银行和大型互联网公司正在将 Dify 部署为企业内的 LLM 网关,加速 GenAI 技术在企业内的推广,并实现中心化的监管。
  • 探索 LLM 的能力边界,即使你是一个技术爱好者,通过 Dify 也可以轻松的实践 Prompt 工程和 Agent 技术,在 GPTs 推出以前就已经有超过 60,000 开发者在 Dify 上创

用技术语言描述如下

  • 特 定领域的聊天机器人和AI助理
  • 不限长____度的创意文档生成
  • 自由链接的知识库问答和搜索
  • 低代码的构建面向半自助Agent
  • 支持私有化部署
  • 支持全球的大模型调用(deepseek、ollama、百度千帆、通义千问等等)

其他开源知识库
为了进行一个清晰的横向对比,我们将从多个维度对MaxKB、AnythingLLM、Dify、FastGPT和Ragflow这些工具或平台进行比较。以下是基于现有信息整理的一个对比表格:

特性/平台MaxKbAnythingLLMDifyFastGPTRagFlow其他
主要用途知识库管理与检索大规模语言模型的应用开发AI应用快速开发与部署快速构建和部署GPT模型基于检索增强生成(RAG)的工作流Llamindex
支持的模型自定义支持多种开源及私有LLMs主要支持轻量级本地运行的模型GPT系列模型支持通过API集成的各种模型OpenWebUI
硬件要求适中,根据模型大小变化高,特别是对于大型模型较低,优化用于本地部署根据模型大小变化,可能较高中等到高,取决于使用的模型-
用户友好度提供图形界面(GUI),易于使用对开发者友好,但需要一定的技术背景提供CLI和API接口,相对易用提供简化工具,适合快速原型设计需要一定的配置和技术知识-
集成能力可以与其他系统集成强大的集成能力,支持多环境良好的集成能力专注于GPT模型的快速集成强调与外部数据源和模型的集成-
扩展性支持扩展,但有限高度可扩展具有一定的扩展性适用于快速扩展的小型到中型项目设计为高度可扩展-
适用场景知识管理、文档检索复杂的语言处理任务,如对话系统快速开发AI应用,适合初创公司和个人开发者快速原型设计和小型项目的GPT模型部署需要深度文本理解和检索的场景-
社区和支持社区较小,官方支持有限活跃的开源社区新兴平台,社区正在增长相关资源丰富,尤其是关于GPT的内容开源项目,有一定活跃度-
  博主会持续关注以上RAG系统的详细特性和应用场景可能需要更深入的研究来精确描述,因此鼓励读者进一步探索每个平台的独特优势和限制。

二、下载安装Dify

1、访问Dify的github站点:
GitHub - langgenius/dify: ,克隆Dify到本地并进入项目目录

git clone https://github.com/langgenius/dify.git
cd dify
cd docker

2、配置环境变量

linux
cp .env.example .env`

window
copy .env.example .env

3、docker compose 启动Dify容器

docker compose up -d

经过几分钟耐心等待 , 镜像下载完毕。
在这里插入图片描述

4、访问Dify控制台
第一次访问, 报错
在这里插入图片描述
分析本地已启动nginx,与dify使用的80端口冲突。
解决方案 关闭本机的nginx, 重启docker的dify服务
在这里插入图片描述
原以为ragflow的镜像很大, 今天dify再次刷新啦博主的认知。接下来要给dify瘦身, 太重啦。 关键是对于开发者来讲, 各种redis、nginx等都是已有的,重复部署。

再次浏览器中访问http://localhost/install,按照提示完成初始化配置。
在这里插入图片描述

完成后输入配置的帐户密码登录即可

在这里插入图片描述

三、使用Ollama安装文本嵌入模型

⚠️ 如何安装使用Ollama请查看文档:Ollama部署DeepSeek本地模型

  1. 什么是文本嵌入模型
    文本嵌入是一种将文本转换成固定长度的数值向量的技术。这种表示方式有助于机器学习算法更好地理解和处理人类语言。文本嵌入的目标是将相似意义的词或句子映射到接近的空间位置上,以便于计算它们之间的相似度或其他关系。

  2. 文本嵌入模型的作用

  • 语义搜索:通过比较查询与文档的嵌入向量,找到最相关的文档。
  • 推荐系统:根据用户兴趣的嵌入向量推荐产品或内容。
  • 情感分析:通过分析文本嵌入向量中的模式识别正面、负面或中立的情感倾向。
  • 问答系统:帮助理解问题并从大量文本中找到最合适的答案。
  • 文本分类:自动对文本进行分类,如新闻文章的主题分类等。
  1. 如何高效选择RAG的Embedding模型
    打开Ollama官网:Ollama,点击上方的Models,选择Embedding
    在这里插入图片描述

     理论上下载量最高的是被大多数人认可的,这里我们将前三位的模型做一个简单的对比
    

模型名称性能特点(检索准确率等)训练速度推理速度最低内存需求推荐内存需求GPU支持其他要求(如存储空间)

  • nomic-embed-text高精度检索,适合简短问题,
  • mxbai-embed-large快速处理大规模数据
  • snowflake-arctic-embed实用且平衡的选择
    根据自己的硬件配置选择一个合适的模型,这里我选择mxbai-embed-large来做演示。

4、部署mxbai-embed-large本地模型
点击mxbai-embed-large,直接复制命令到终端执行,等待下载完成即可。

ollama pull mxbai-embed-large


在这里插入图片描述

四、搭建本地知识库

4.1 window系统Docker部署

  1. 在Dify中上传DeepSeek模型以及文本嵌入模型
    在Dify控制台点击头像,在弹出菜单中选择设置
    在这里插入图片描述

选择模型供应商,点击Ollama,其他deepseek,千问、硅基流动都点一遍

在这里插入图片描述

在弹出的页面中,模型类型选择LLM,模型名称输入deepseek-r1:7b(根据自己本地安装的模型名称填写,可通过ollama list命令查看安装的模型列表),基础URL填写本地Ollama Server的地址:如果使用 Docker 部署 Dify,请考虑使用本地网络 IP 地址,例如 http://host.docker.internal:11434 访问服务,对于本地源代码部署,请使用 http://localhost:11434,模型类型选择“对话”,最大token填写“4096”,其余按照下图配置并点击保存

在这里插入图片描述

点击保存后如下图所示,点击继续添加模型

image

模型类型选择“Text Embedding”,模型名称填写“nomic-embed-text”,基础URL与上一步添加deepseek模型的地址一样,然后点击保存即可。

  • http://host.docker.internal:11434

在这里插入图片描述

在这里插入图片描述

[应用1]聊天应用

点击创建空白应用
在这里插入图片描述

选择聊天助手,输入应用名称,点击创建
在这里插入图片描述

测试一下添加的模型是否能正常运行

在这里插入图片描述
在这里插入图片描述

  1. 上传知识库
    点击上方工具栏中的知识库,然后点击创建知识库

在这里插入图片描述

选择准备好的知识库文件,支持多种格式,点击下一步,我这里简单的写了一点测试文本

在这里插入图片描述

索引方式选择高质量,Embedding模型选择我们安装的mxbai-embed-large,其他的默认即可,点击保存
在这里插入图片描述

等待嵌入完成
在这里插入图片描述

  1. 为应用添加上下文
    点击上方工具栏中的工作室,点击第二步创建的聊天应用,在上下文配置处点击添加按钮,选择上一步上传的知识库,点击添加即可
    在这里插入图片描述

  2. 测试知识库
    现在按照我们上传的知识库中的内容,向deepseek本地模型发起提问,可以看到模型已完成了对知识库的学习,并准确的回答出了问题。

image

4.2 群晖NAS部署

这里直接使用Dify官方仓库的docker-compose进行部署,我这里选择直接ssh到群晖NAS上clone代码库(也可以下载release包,直接上传到NAS的特定目录)

先安装Git
在这里插入图片描述

再「控制面板」中启用ssh功能
在这里插入图片描述

ssh登录到群晖NAS之后,在特定目录下执行如下命令(我是在/Volume2/docker):

git clone https://github.com/langgenius/dify.git

在这里插入图片描述

  • 修改.env.example
    进入到dify/docker目录下,将.env.example修改为.env(或者复制一份为.env)
    在这里插入图片描述

因为群晖NAS的docker compose版本较低,需要修改一下docker-compse.yaml文件,把不支持的语法删掉

在这里插入图片描述

因为80和443端口被我的NAS占用了,所以需要修改.env文件中NGINX对外暴露的http和https端口,这里我设置的是33080和33443(没有需求的也可以不做修改)
在这里插入图片描述

同样还是因为docker compose版本较低,需要在dify/docker/volumes手动创建一些文件夹,如下所示:

 db/data
  redis/data
  weaviate
  app/storage
  certbot/conf/live
  certbot/www

在这里插入图片描述

  • 在Container Manager中创建docker项目
    打开Container Manager,选择「项目」,点击「新增」
    在这里插入图片描述

在弹出的窗口中,有以下几点:

项目名称:dify(或者其他的,任意)
路径:选择Dify的docker目录
docker-compose.yaml:选择已有的

在这里插入图片描述

一直下一步,并点击完成

在这里插入图片描述

等待拉取镜像、构建项目

在这里插入图片描述

服务启动之后,可以看到若干运行着的容器

在这里插入图片描述

  • 配置大模型API
    群晖NAS不能直接运行大模型,而国内又访问不了openai,本机安装ollama也不太现实 ,这里我使用了百度千帆的大模型,有免费版本可以使用,有钱的话也可以开通收费api。下面介绍一下如何配置百度千帆大模型。

(1)进入百度千帆官网
在这里插入图片描述

(2)登录之后进入到控制台界面,选择「应用接入」,并创建一个应用,记录下API Key、Secret Key
在这里插入图片描述

(3)回到Dify首页,在**「设置」「模型供应商」中选择「文心一言」,输入上面的API Key和Secret Key**,并点击保存。
在这里插入图片描述

至此,大模型配置完毕,下面来创建一个智能体玩玩。

【应用2】智能体

接下来,我们首先来试试创建一个智能体,来获取当天「人工智能」相关的资讯。按照下图来创建一个智能体。

在这里插入图片描述

在智能体界面,有几个区域需要了解一下,如下图所示

在这里插入图片描述

其中:

  • 提示词:用于定义智能体的角色,具备的能力等等
  • 变量:提取用户输入的变量
  • 上下文:可以挂在知识库
  • 工具:智能体具备的这里,我这里的智能体具有获取当前时间、使用网页爬虫爬取信息、并进行搜索的能力 下面提问一下看看,用户提示词为:「使用使用各种工具获取一下当天的人工智能资讯,要求给出3条,用中文回答,并给出参考链接」

在这里插入图片描述

还可以查看智能体使用工具的中间结果

在这里插入图片描述

【应用3】工作流

接下来,介绍一下如何使用Dify搭建工作流,将繁琐的工作搭建成PipeLine,解放我们的双手。让我们来实现一个**「简单的网页爬虫,并自动总结」**的工作流。

同样的,创建一个「工作流」应用。

在这里插入图片描述

下面是一个简单的网页爬虫工作流,支持输入一个关键词,并通过网页爬虫爬取相应的信息,然后使用大模型进行总结。

在这里插入图片描述
也可以安装Jina,先在marketplace中搜索
在这里插入图片描述
打开jina
在这里插入图片描述
点击安装旁边的下载
在这里插入图片描述
点击右上角“插件”-》本地插件
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
等几分钟,看到插件列表中出现“jina”,
在这里插入图片描述

在工作流中使用jina,需要api, 按照官网步骤获取

在这里插入图片描述
输入测试网址,点击单步调试
在这里插入图片描述
可以看到新闻内容已爬取
在这里插入图片描述
接下来定义需要存储到知识库中,故增加一个代码执行+http节点, 而http请求,需要从知识库获取api
在这里插入图片描述
获取知识库api
在这里插入图片描述
获取目标存储到知识库的id
在这里插入图片描述
输入获取到的api key
在这里插入图片描述
配置http请求的body

  • 请求地址 https://XXX/v1/datasets/XXX/document/create_by_text, 其中datasets后面的id是目标知识库的id
  • api定义为POST
  • body
    在这里插入图片描述

使用的api是知识库:通过文本创建文档
在这里插入图片描述

curl --location --request POST 'http://localhost/v1/datasets/{dataset_id}/document/create-by-text' \
--header 'Authorization: Bearer {api_key}' \
--header 'Content-Type: application/json' \
--data-raw '{"name": "text","text": "text","indexing_technique": "high_quality","process_rule": {"mode": "automatic"}}'

在这里插入图片描述
配置代码执行节点

import re

def main(arg1):
    # 去掉换行符和回车符
    cleaned = arg1.replace('\n', '').replace('\r', '')
    # 去掉 <think> 标签及其之间的内容
    cleaned = re.sub(r'<think>.*?</think>', '', cleaned, flags=re.DOTALL)
    return {
        'result': cleaned
    }

在这里插入图片描述
多次调试执行成功, 知识库新增一个
在这里插入图片描述
内容略微不满意, 不过仅供测试
在这里插入图片描述

下一篇 SQL查询智能体

五、结论

    通过Dify与DeepSeek+mxbai-embed-large的有机组合,我们成功搭建了符合企业级需求的智能知识库系统。希望这篇指南能为您提供有价值的帮助,让您在探索人工智能技术的道路上更加顺利。

参考资料:

### 如何在本地环境中部署 DeepSeek 项目 #### 安装 Python 设置虚拟环境 为了确保项目的独立性兼容性,在开始之前应先安装合适的 Python 版本并创建一个新的虚拟环境。这一步骤有助于隔离不同项目之间的依赖关系,防止版本冲突。 ```bash python3 -m venv my_deepseek_env source my_deepseek_env/bin/activate ``` 激活虚拟环境之后,可以继续按照官方文档中的指示来准备所需的软件包其他资源[^1]。 #### 下载安装 DeepSeek 获取最新版的 DeepSeek 可以通过 Git 或者直接下载压缩文件的方式完成。对于开发者来说,推荐使用 Git 来克隆仓库以便于跟踪更新支持贡献代码: ```bash git clone https://github.com/deepseek-labs/deepseek.git cd deepseek pip install -r requirements.txt ``` 上述命令会拉取最新的源码并且安装所有必需的库到当前活跃的 Python 虚拟环境中。 #### 配置 GPU 支持 (可选) 如果计划利用 NVIDIA 显卡加速计算过程,则需额外配置 CUDA 工具链以及 cuDNN 库的支持。具体操作取决于操作系统类型个人偏好;通常情况下,建议遵循 Nvidia 提供的标准指南来进行安装。完成后记得重启计算机使更改生效,并确认 nvidia-smi 命令能正常显示显卡信息。 #### 启动服务与验证安装 一切就绪后,可以通过运行启动脚本来测试整个系统的健康状况: ```bash python manage.py migrate python manage.py runserver ``` 此时浏览器中输入 `http://localhost:8000` 即可见证到默认首页加载成功,证明基本功能已经可用[^2]。 #### 使用 API 访问模型 当希望进一步探索或集成现有工作流时,不妨尝试调用 RESTful APIs 接口与内部算法互动。详细的端点列表及其参数说明可以在官方 GitHub 页面找到,而 Postman 这样的工具可以帮助快速构建请求原型。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

赤胜骄阳

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值