win11系统使用DockerDesktop搭建Dify实现知识库问答

一、安装Docker安装Dify

1、安装docker,最好win11系统,不然会有很多错误,然后改下镜像源拉取速度会快点,还有镜像的存储位置防止C盘爆满。

2、下载dify源码,现在最新是1.13.3

复制代码
https://github.com/langgenius/dify/tree/1.13.3

3、解压到指定文件夹

复制代码
D:\IdeaProjects\dify-1.13.3

4、进入文件夹的docker目录,将 .env.example 重命名 .env

复制代码
cd D:\IdeaProjects\dify-1.13.3\docker

.env.example -> .env

可以修改下知识库上传文件限制的大小,默认15M,可以改大点。

5、在当前源码的docker文件夹下调出cmd,然后执行命令

复制代码
docker compose up -d

docker就会开始拉取需要的资源,等待完成即可

6、完成后执行命令查看容器运行情况

复制代码
docker ps

7、访问dify,并设置管理员账号

复制代码
http://localhost/install

8.sandbox镜像安装python依赖:

dify上面创建的chatFlow、workFlow都在这个镜像里,如果需要用到代码环境,也是需要在这里面安装。

这里面的"python-requirements.txt"是管理了sandbox的python环境依赖,在这个文件里加上就可以,它会告诉sandbox启动的时候需要安装那些依赖。

复制代码
D:\IdeaProjects\dify-1.13.3\docker\volumes\sandbox\dependencies

在这个文件里上:

复制代码
pymysql==1.1.1

9.允许访问mysql3306端口:

复制代码
D:\IdeaProjects\dify-1.13.3\docker\ssrf_proxy

增加一行

复制代码
acl Safe_ports port 3306	# mysql

10.配置dify可以访问外部网络

复制代码
D:\IdeaProjects\dify-1.13.3\docker\docker-compose.yaml

在这个文件里搜索"sandbox",然后再下图位置增加一个"- default"就可以。

这里需要注意,有些人喜欢用tab键会有隐藏的字符,导致启动失败,这里用文本编辑器选择"视图"-"显示所有符号",避免出现隐藏字符,下面是错误示范。

下面是正确的

4、这几步配置完,就可以连接win上面的mysql和有python环境,然后重启下docker,进入到dify的docker目录下cmd,执行下面命令:

关闭

复制代码
docker compose down

启动

复制代码
docker compose up -d

观察容器启动情况

复制代码
docker ps

都是ok的

二、配置模型并搭建知识库问答

1、配置模型,点击右上角头头像,选择设置进入新页面,然后选"模型供应商"配置自己的模型,建议直接在deepseek或者阿里百炼购买10元token,可以用很久,我使用deepseek做聊天模型,阿里百炼则是用来做文档的向量化embed和rerank。

向量模型和rerank还可以使用Xinference实现本地部署。

2、新建一个手机知识库。

文档内容如下:

复制代码
荣耀 Magic7 基本参数
国内发布时间	2024年10月30日
电商报价	¥4199
上市日期	2024年10月30日
产品型号	荣耀 Magic7
使用场景	三防手机>,拍照手机>,智能手机>,音乐手机>,4G手机>,快充手机>,5G手机>,3G手机>,新品手机>,热门手机>,自拍手机>
机身颜色	绒黑色,雪域白,月影灰,天际蓝,朝霞金  查看外观>
指纹识别	超声波屏幕指纹识别>
面部识别	支持
外形
长度	162.1mm
宽度	75.8mm
厚度	7.95mm
重量	199g
硬件
CPU型号	高通 骁龙 8 Elite更多高通 骁龙 8 Elite手机>,手机性能排行>
CPU核心数	八核>
GPU型号	高通 Adreno 830
RAM容量	12GB>游戏运行流畅
RAM存储类型	LPDDR5X>
ROM容量	256GB>5.2万张照片2.2万首歌曲
存储卡	不支持容量扩展>
出厂系统内核	Android 15
操作系统	MagicOS 9.0
振动马达	X轴线性马达
扬声器	立体声双扬声器
屏幕
屏幕尺寸	6.78英寸
屏幕类型	全面屏(中置挖孔屏),直面屏>
屏幕比例	19.93:9
分辨率	2800x1264px
屏幕材质	OLED>
屏幕刷新率	120Hz(1-120)>
像素密度	453ppi
屏占比	93.2%
HDR技术	支持
屏幕亮度	HDR峰值亮度:5000nits 全局峰值亮度:1600nits
屏幕盖板	巨犀玻璃
摄像头
摄像头总数	四摄像头(后三)>
摄像头名称	后置摄像头1:广角镜头
后置摄像头2:超广角摄像头
后置摄像头3:长焦摄像头
像素	后置摄像头1:5000万像素
后置摄像头2:3200万像素
后置摄像头3:5000万像素
前置摄像头1:5000万像素
光圈	后置摄像头1:f/1.9
后置摄像头2:f/2.0
后置摄像头3:f/2.4
前置摄像头1:f/2.0
传感器尺寸	1/1.3英寸
广角	后置摄像头2:122°
前置摄像头1:90°
防抖功能	OIS光学防抖
闪光灯	后置:单LED闪光灯>
变焦倍数	后置:最大50倍数字变焦
荣耀 Magic7网络与连接
网络类型	5G>,4G>,3G>
5G网络	移动5G(NR),联通5G(NR),电信5G(NR),广电5G(NR)更多5G手机>
SIM卡类型	双卡(Nano SIM卡)>
WLAN功能	双频WiFi,WiFi7(IEEE 802.11 a/b/g/n/ac/ax/be ),2x2 MIMO
定位导航	北斗(B1I+B1C+B2a三频),双频GPS(L1+L5),AGPS,Glonass,伽利略(E1 + E5a双频),蜂窝网络定位,WLAN网络定位
蓝牙	蓝牙5.4,支持BLE、SBC、AAC、LDAC、APTX、APTX HD
NFC	支持NFC>
红外功能	支持
机身接口	USB Type-C接口
其他网络参数	鸿雁通信
荣耀 Magic7电池与续航
电池类型	不可拆卸式电池
电池容量	5650mAh大电池
有线充电	100w
无线充电	支持>,80w
无线反向充电	支持
荣耀 Magic7功能与服务
三防功能	IP68和IP69等级
感应器	重力传感器,红外传感器,超声波指纹传感器,陀螺仪,指南针,环境光传感器,接近光传感器,加速度传感器,X轴线性马达,NFC
荣耀 Magic7手机附件
包装清单	手机(含内置电池) x1 快速指南 x1 HONOR SuperCharge充电器 x1 Type-C数据线 x1 取卡针 x1 手机保护壳 x1 新机权益卡(含电子三包凭证) x1 TP保护膜(出厂已粘贴) x1
荣耀 Magic7保修信息
保修政策	全国联保,享受三包服务
质保时间	1年
质保备注	主机1年,充电器1年

3、进去后选择"设置",修改下embed、rerank的topK,然后拉到最下面点保存。这里一开始进去默认的embed是阿里百炼多模态的,一直检索不出来,后面改为了test-embedding-v4就可以了,知道原因的可以评论区告诉我。

这里一开始进去默认的embed是阿里百炼多模态的

4、点击左边的文档,选择店家文件上传一份文档

分段和重叠按自己的来,然后保存处理,等待向量化结束。

5、向量化结束后,可以在"召回测试"里面试试

6、知识库建完之后,新建一个聊天助手

7、给聊天助手加上约束LLM的提示词和配置知识库,然后测试一下并发布

8、提给api对外服务,新建密钥

9、使用apifox测试对话,复制curl导入apifox,替换header里面的auth,然后补充workflow_id

复制代码
curl --location --request POST 'http://localhost/v1/chat-messages' \
--header 'Authorization: Bearer app-917CYVynZrp00Muak4SKp7Cp' \
--header 'Content-Type: application/json' \
--data-raw '{
  "inputs": {},
  "query": "荣耀magic7的电池多大?",
  "response_mode": "streaming",
  "conversation_id": "",
  "user": "abc-123",
  "files": [],
  "workflow_id":"8a186431-d7ab-4d2f-aa39-057c1c904868"
}'

浏览器地址里那一长串就是workflow_id

下面是流式响应结果

可以切换到自动合并看整个结果

9、嵌入到html中,点"发布"的下拉,里面有嵌入网站

这三种方式可以根据自己的需要选择

我使用右下角嵌入的方式,下面是html代码:

复制代码
<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <title>手机助手</title>
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
</head>
<body>
    <h1>手机助手</h1>
    <p>点击右下角按钮即可开始咨询</p>

    <!-- 你提供的聊天机器人代码 -->
    <script>
 window.difyChatbotConfig = {
  token: 'ZMXM5sof4fEZbzom',
  baseUrl: 'http://localhost',
  inputs: {
    // You can define the inputs from the Start node here
    // key is the variable name
    // e.g.
    // name: "NAME"
  },
  systemVariables: {
    // user_id: 'YOU CAN DEFINE USER ID HERE',
    // conversation_id: 'YOU CAN DEFINE CONVERSATION ID HERE, IT MUST BE A VALID UUID',
  },
  userVariables: {
    // avatar_url: 'YOU CAN DEFINE USER AVATAR URL HERE',
    // name: 'YOU CAN DEFINE USER NAME HERE',
  },
 }
</script>
<script
 src="http://localhost/embed.min.js"
 id="ZMXM5sof4fEZbzom"
 defer>
</script>
<style>
  #dify-chatbot-bubble-button {
    background-color: #1C64F2 !important;
  }
  #dify-chatbot-bubble-window {
    width: 24rem !important;
    height: 40rem !important;
  }
</style>
</body>
</html>

web页面效果

相关推荐
刘大猫.3 小时前
华为昇腾芯片将为DeepSeek-V4推理,通往国产算力自由
华为·ai·大模型·算力·deepseek·deepseek-v4·昇腾芯片
零安道长3 小时前
Twitter 用户信息 API 集成指南
ai
阿杰学AI4 小时前
AI核心知识129—大语言模型之 向量数据库(简洁且通俗易懂版)
数据库·人工智能·ai·语言模型·自然语言处理·向量数据库·vector database
嵌入式小企鹅6 小时前
国产大模型与芯片加速融合,RISC-V生态多点开花,AI编程工具迈入自动化新纪元
人工智能·学习·ai·嵌入式·算力·risc-v·半导体
醇氧6 小时前
Hermes Agent 学习(安装部署详细教程)
人工智能·python·学习·阿里云·ai·云计算
张忠琳7 小时前
【openclaw】OpenClaw Flows 模块超深度架构分析
ai·架构·vllm
图图玩ai7 小时前
SSH 命令管理工具怎么选?从命令收藏到批量执行一次讲清
linux·nginx·docker·ai·程序员·ssh·可视化·gmssh·批量命令执行
哥布林学者8 小时前
深度学习进阶(十) RoI Align
机器学习·ai
阿杰学AI8 小时前
AI核心知识131—大语言模型之 自主智能体(简洁且通俗易懂版)
人工智能·ai·语言模型·自然语言处理·agent·智能体·自主智能体