当前位置:首页 » 《资源分享》 » 正文

【AI实践】应用Dify+Ollama实现基础Agent工作流(含RAG与LLM)

27 人参与  2024年11月02日 16:40  分类 : 《资源分享》  评论

点击全文阅读


出发点:上一篇 《一文初识AI Agent(人工智能体)》介绍了AI Agent的基础概念。本文在流行度很高的Dify开发平台上,接入Ollama 部署的大型语言模型,实现一个细分领域的本地离线的Agent工作流应用(知识库+聊天助手)。

0、提纲:

运行环境部署Dify部署OllamaDify串联Ollama运行效果

1、运行环境

CPU:12th Gen Intel(R) Core(TM) i9-12900K【16核24线程】GPU:NVIDIA GeForce RTX 3080 Ti【12G显存】内存:32G系统:Ubuntu 20.04.4 LTS

2、部署Dify

参照Dify官方资料,选择本地源码启动(https://docs.dify.ai/v/zh-hans/getting-started/install-self-hosted/local-source-code),主体步骤如下:

2.1 克隆代码:

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

2.2 部署依赖组件

Docker部署 PostgresSQL / Redis / Weaviate:

cd dockercp middleware.env.example middleware.envdocker compose -f docker-compose.middleware.yaml up -ddocker ps

查看是否都正常启动。如果遇到redis端口占用,可考虑先关闭系统的redis,启动docker的redis:

sudo service redis stop

如果遇到部分未安装(比如weaviate、2024年4月11日福布斯全球网站发布的2023 AI 50 榜单中唯一开源向量数据库),可直接指定:

docker compose -f docker-compose.middleware.yaml up -d weaviate

2.3 服务端部署运行

先安装Python 3.10、poetry。API 接口服务:
python -Vcd apipoetry shellflask run --host 0.0.0.0 --port=5001 --debug
Worker 异步队列消费服务:
cd apipoetry shellcelery -A app.celery worker -P gevent -c 1 -Q dataset,generation,mail,ops_trace --loglevel INFO

2.4 前端页面部署运行

先安装Node.js v18.x stable版本。
node -vcd webnpm run start

如果遇到安装慢,可以安装pnpm,使用pnpm安装依赖包【亲测更快】:

npm install -g pnpmpnpm install

2.5 访问方式

浏览器访问 http://127.0.0.1:3000 即可使用 Dify注册登录,在主页右上角折叠菜单中点击“设置”后可修改“语言”。

3、部署Ollama

Ollama是一个开源工具(Go语言开发),可以在本地运行大型语言模型,比如LLaMA3.1(可能是当前开源最好的)。用起来的感受是:使用快捷方便、运行稳定高效。

3.1 安装

curl -fsSL https://ollama.com/install.sh | sh

安装成功,浏览器打开“http://localhost:11434/” 能看到“Ollama is running”。

3.2 运行安装时自带的模型llava

ollama run llava

3.3 查看下载其它模型

参看Ollama模型库(https://ollama.com/library/),搜索下载支持的模型(比如llama3.1、qwen2、nomic-embed-text)

ollama pull llama3.1ollama pull qwen2ollama pull nomic-embed-textollama list

3.4 运行qwen2

可查看运行情况和显存消耗

ollama run qwen2ollama psnvidia-smi

4、Dify串联Ollama

参考接入Ollama 部署的本地模型(https://docs.dify.ai/v/zh-hans/guides/model-configuration/ollama)执行以下操作:

4.1 界面操作1

在浏览器Dify主页右上角折叠菜单中点击“设置”,弹框中左侧“模型供应商”里选择“Ollama”

4.2 界面操作2

点击“添加模型”,弹框中填写LLM和Text Embedding【用于知识检索】信息,其中“基础 URL”填写“http://[本地IP]:11434”。

5、运行效果

5.1 创建知识库

在浏览器Dify顶部选择“知识库”,点击“创建知识库”,按顺序操作:

1.选择数据源【导入已有文本、同步自Notion内容、同步自Web站点】2.文本分段与清洗【“Embedding 模型”选择前面用Ollama安装的nomic-embed-text,再选择“混合检索”】3.处理并完成【知识库命名】
关于“混合检索”,Dify官方(https://docs.dify.ai/v/zh-hans/learn-more/extended-reading/retrieval-augment/hybrid-search)指出其综合了“全文检索”(侧重关键词)、“向量检索”(侧重语义),并应用重排序Rerank步骤,从两类查询结果中选择匹配用户问题的最佳结果。重排的权重可以在页面手动调整设置。但目前还无法从Ollama中选择Rerank模型重排【Dify模型供应商列表(https://docs.dify.ai/v/zh-hans/getting-started/readme/model-providers)】。

创建完毕,需进入该知识库“设置”页面,“Embedding 模型”选择“nomic-embed-text”,然后保存。

另外,在该知识库页面下进行“召回测试”,以观察对输入文本的检索结果,还可以返回“设置”界面,调整权重和返回结果数(TOP k),以改善召回结果。

5.2 创建应用

1.在浏览器Dify顶部选择“工作室”,点击左侧“创建空白应用”,选择“聊天助手”->“工作流编排”。2.创建成功后,系统会自动生成1个工作流。可点击右上方“功能”按钮,编辑“对话开场白”、“下一步问题建议”等功能。3.在“开始”-“LLM”节点之间,手动增加“知识检索”节点。4.选中“知识检索”节点,在右侧添加上述知识库,并完成“召回设置”,选择“多路召回”。

工作流全貌如下:

5.3 运行应用

点击右上角“预览”,输入文本后,观察工作流各节点的运行情况

点击右上角“发布”-“运行”,即可体验该Agent。

以上Enjoy~


点击全文阅读


本文链接:http://zhangshiyu.com/post/181584.html

<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

关于我们 | 我要投稿 | 免责申明

Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1