蚂蚁 DB
最近蚂蚁开源的 DB-GPT 上线了类似微软的 GraphRAG,并且宣称比 GraphRAG 节省 1 倍的 Token,而且官方的一张可视化图谱吸引了我,漂亮是真漂亮,真金不怕火炼,我来上手测一遍,让你少踩一次坑。
我之前一直有测试和使用微软 GraphRAG,微软的 GraphRAG 目前已经更新到 1.0.1,从 0.3.0 之后基本都是重构代码,仍然不支持多文件格式,距离生产依然很遥远。
1. DB-GPT
DB-GPT 是蚂蚁金服开源的一款 AI 原生数据应用开发框架,具有 AWEL(Agentic Workflow Expression Language)和智能体功能,旨在通过开发多模型管理(SMMF)、Text2SQL 效果优化、RAG 框架及优化、多智能体框架协作、AWEL(智能体工作流编排)等多种技术能力,在大模型领域构建基础设施。目标是在在数据 3.0 时代,企业和开发者可以基于模型和数据库,用更少的代码构建定制化应用程序。
介绍就不过多展开了,请看下图框架。这是个什么东西啊?大杂烩吗?好全啊,什么都有,这确定是一个代码仓库能干的事情?我不敢相信这是蚂蚁金服这样的公司开源的框架,在我看来这就是个 demo,除了那张可视化图是生产级别。吐槽完毕,让我们看看 DB-GPT 中 GraphRAG。
2. 安装
- 首先,创建和激活虚拟环境。
conda create -n dbgpt python=3.10
conda activate dbgpt
- 克隆代码
git clone .git
cd DB-GPT
- 安装依赖
pip install -e ".[default]" pip install -e ".[openai]" pip install "dbgpt[graph_rag]>=0.6.1"
这里会安装特别多的东西,什么 torch transformer,依赖就装了 1.9G。
- 安装图数据库 TuGraph
docker pull tugraph/tugraph-runtime-arm64v8-centos7:4.5.1:latest docker run -d -p 7070:7070 -p 7687:7687 -p 9090:9090 --name tugraph_demo tugraph/tugraph-runtime-arm64v8-centos7:4.5.1:latest lgraph_server -d run --enable_plugin true
注意这里要根据自己的电脑架构去 Dockerhub 下载 tugraph,我是 Apple M1 Arm 的芯片。
- 下载嵌入
cd DB-GPT mkdir models and cd models git clone
不能理解,启动一个框架要先下载嵌入是什么操作?
- 配置
cp .env.template .env
我想配置为线上的免费 glm-4-flash,并且使用本地 LM Studio 的 Embedding,改了一圈.env 中的配置。启动都是报错,人都麻了。直接修改代码:
代码语言:javascript代码运行次数:0运行复制- dbgpt/model/proxy/llms/chatgpt.py
设置模型为glm-4-flash
并且配置环境变量
代码语言:javascript代码运行次数:0运行复制OPENAI_API_KEY=your api key
OPENAI_BASE_URL=
- 启动
python dbgpt/app/dbgpt_server.py
可能报缺少 httpx[socket]之类的包,照着提示安装就是了。
启动过程中,还是可能看到什么 OPENAI_BASE_URL 没配置的问题,忽略。
3. 运行
打开网页:http://localhost:5670/,然后我们在应用管理-知识库中点击创建知识库。
在弹框中存储类型选择知识图谱,其他输入后点击下一步。
在知识库类型中选择文档,它会自动跳转到第 3 步上传。
上传这里选择上传官方文档中的 3 个文件:tugraph.md[1]、dbgpt.md[2]、osgraph.md[3].
在第四步中默认选择,点击切片处理即可,这里要等待很久,界面也不会推出,还能点击切片处理,不知道咋想的。
跑不通报错,给 neo4j 上 leiden 插件失败了,然后似乎把整个二进制 so 打印出来了,命令行界面因此都会卡起来。
这可能是系统的问题,或者不知道的原因。总之切片这里看起来是初始化图谱社区就失败了,我们在页面执行同步,在日志中将能够看到 DB-GPT 的 GraphRAG 采用的 Prompt 很简单,提取的就是典型的三元组,大约 287 个 Token,而微软的实体提取 Prompt 是 2037 个 Token。
此外,微软的 GraphRAG 提取的不是常规的三元组,他是提取的实体和关系描述,因此它的输出也会大。因此,蚂蚁的 GraphRAG 能够节约 1 倍的 Token 来源,并不是流程上的优化,而是 Prompt 的缩减。
DB-GPT | GraphRAG (microsoft) | |
---|---|---|
Document Tokens | 42631 | 42631 |
Graph Size | 808 nodes, 1170 edges | 779 nodes, 967 edges |
Prompt Tokens | 452614 | 744990 |
Completion Tokens | 48325 | 227230 |
Total Tokens | 500939 | 972220 |
4. 总结
本次解析就到这里了。虽然没能跑通,但是基本的东西已经看到了。我的观点是这个东西也只是个 Demo,而且如果你只是想用 GraphRAG,DB-GPT 不只是一个 RAG,不是一个软件,他是一个堆栈,你懂堆栈的意思吧?所以如果你只是想用 GraphRAG,我建议你直接用微软的。当然不可否认,那个可视化图确实漂亮,希望能够借鉴。
参考资料
[1]
tugraph.md:.6.1/examples/test_files/tugraph.md
[2]
dbgpt.md:.6.1/examples/test_files/dbgpt.md
[3]
osgraph.md:.6.1/examples/test_files/osgraph.md
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。原始发表:2024-12-19,如有侵权请联系 cloudcommunity@tencent 删除开源dbgpt框架配置