dify+ollama+知识库 部署
这篇文章的前提是已经部署了deepseek和ollama
deepseek和ollama安装
代码、配置
本地电脑如果是Windows的话,需要安装Git
# 拉取Dify代码
git clone https://github.com/langgenius/dify.git
- 复制配置
进入dify\docker目录
复制.env.example到.env
复制.middleware.env.example到middleware.env
- 修改配置
修改.env的DB_HOST=127.0.0.1为DB_HOST=db
DB_HOST=db
在docker-compose.yaml的db中增加端口映射
ports:- "${DB_PORT:-5432}:${DB_PORT:-5432}"
在docker-compose.yaml的所有service中增加时区设置
TZ: Asia/ShanghaiLOG_TZ: ${LOG_TZ:-Asia/Shanghai}
其他地方无须修改(仅为标记修改位置)
db:image: postgres:15-alpinerestart: alwaysenvironment:PGUSER: ${PGUSER:-postgres}POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-difyai123456}POSTGRES_DB: ${POSTGRES_DB:-dify}PGDATA: ${PGDATA:-/var/lib/postgresql/data/pgdata}TZ: Asia/ShanghaiLOG_TZ: Asia/Shanghaiports:- "${DB_PORT:-5432}:${DB_PORT:-5432}"
也可以修改.env默认的80和443端口,不是必须
EXPOSE_NGINX_PORT=8080
EXPOSE_NGINX_SSL_PORT=8443
启动
- 安装docker和docker-compose
安装步骤
配置docker镜像代理
{"builder": {"gc": {"defaultKeepStorage": "20GB","enabled": true}},"experimental": false,"registry-mirrors": ["https://docker.jsdelivr.fyi","https://dockertest.jsdelivr.fyi","https://mirror.aliyuncs.com","https://dockerproxy.com","https://mirror.baidubce.com","https://docker.m.daocloud.io","https://docker.nju.edu.cn","https://docker.mirrors.sjtug.sjtu.edu.cn","https://docker.mirrors.ustc.edu.cn","https://mirror.iscas.ac.cn","https://docker.rainbond.cc","https://docker.jianmuhub.com","https://huecker.io","https://dockerhub.timeweb.cloud","https://dockerhub1.beget.com","https://noohub.ru"]
}
配置好后,重启一下容器使配置生效。
- 启动容器
仍然在dify\docker目录下执行
docker-compose -p dify up -d
以上容器都为绿色,即为启动成功。
2.连接数据库
用navicat新建PostgreSql连接
进入系统
http://172.22.80.1:8080
设置用户名、密码
部署模型
- 配置电脑的环境变量
OLLAMA_HOST=电脑ip:11434
点击右上角设置
- 选择Ollama
- 配置Ollama
配置成功后,如果没有立即刷新,可以退出登录后再登录
- 配置知识库嵌入模型
shaw/dmeta-embedding-zh
ollama pull shaw/dmeta-embedding-zh:latest
还可以配置其他模型
初探
聊天应用
- 填写应用名称
- 问答
默认配置问答可以看出8b还是比较笨的
-
应用开发
-
嵌入网站:将此聊天应用直接嵌入页面
-
访问Api:二次开发所需接口
工作流
- 开始:用户输入关键词,定一个了一个输入变量
- 网页爬虫:节点执行爬虫获取信息,输入爬虫地址
- LLM:模型定义
- 结束:输出模型结果
从结果看已经比单纯聊天室好多了
智能体+知识库
私有知识库
-
创建知识库
-
导入知识库
-
文本分段与清晰
保存之后等待处理结果,状态未可用即可
-
测试段落
安装searxng
SearXNG是一个免费的互联网元搜索引擎,它聚合了各种搜索服务和数据库的结果。用户既不被跟踪也不被分析。
- 下载代码
git clone https://github.com/searxng/searxng-docker.git
cd searxng-docker
- 修改配置
将docker-compose.yaml的IP和端口改为实际ip和8081
searxng:container_name: searxngimage: docker.io/searxng/searxng:latestrestart: unless-stoppednetworks:- searxngports:- "8081:8080"
- 编辑settings.yml
修改后如下
use_default_settings: true
server:# base_url is defined in the SEARXNG_BASE_URL environment variable, see .env and docker-compose.ymlsecret_key: "ultrasecretkey" # change this!limiter: false # 改为falseimage_proxy: truebind_address: "0.0.0.0" # 允许所有ip连接
ui:static_use_hash: true
redis:url: redis://redis:6379/0
search:formats:- html- json- csv- rss
- 生成密钥
提前安装openssl
windows下打开PowerShell执行
Set-Content -Path "searxng\settings.yml" -Value ((Get-Content -Path "searxng\settings.yml" -Raw) -replace "ultrasecretkey", (openssl rand -hex 32))
- 运行服务
docker-compose -p searxng up -d
- 修改配置
进入首选项
设置国内搜索引擎,其他的都禁用掉就可以
保存完成后,会跳转到https地址,重新输入下地址进行检索即可。
智能体
- SearXNG授权
进入工具搜索SearXNG安装
授权
- 创建Agent
3 配置Agent
工具:
- time获取当前时间
- searxng SearXNG
- 搜索 webscraper 网页爬虫
右上角的参数自己可以多试试,多测试
提示词
# 职位描述
## 角色
你的主要任务是人工智能辅助助手,能够调用知识库工具、联网搜索、网页爬虫、获取时间等相关工具,收集相关信息,回答用户的提问。## 技能
### 技能1:使用知识库工具进行知识库检索相关内容
### 技能2:使用time工具获取当前的时间
### 技能3:使用searxng功能进行联网搜索
### 技能4:使用webscraper功能对搜索到的相关内容进行爬取,并进行总结分析## 限制
- 每次都必须调用知识库工具,如果没有相关内容,再进行联网搜索
- 你的回答应严格针对分析任务。使用结构化语言,逐步思考
- 使用的语言应和用户提问的语言相同
- 搜索的关键词必须和用户提问的内容一致
引用
https://docs.dify.ai/zh-hans/getting-started/install-self-hosted/docker-compose
https://blog.csdn.net/liu_xp2003/article/details/145438731