君子性非异也,善假于物也。
—— 《荀子》
这篇文章,是继上一篇公博大佬的大作《喂饭级教程 —— 基于 OceanBase seekdb 构建 RAG 应用》之后,第二篇 seekdb 使用教程类的内容。
欢迎各位老师也能根据文章中的步骤尝试快速使用 Dify x seekdb 搭建属于您自己的 AI 应用,也欢迎大家踊跃在评论区批评、指正、吐槽、谩骂~
在这篇狗尾续貂的教程中,会为大家介绍:在 AI 应用开发者最熟悉的 Dify 平台上,如何借助 OceanBase seekdb 的力量,大幅简化应用开发过程中的多组件部署复杂度,同时提高向量混合搜索的能力。

本文共分为三个部分,大家可以选择性地进行阅读:
传统的 Agentic RAG 依赖关系型数据库 + 向量数据库 + 全文检索多个异构组件,导致运维复杂、数据同步困难、一致性风险高。在典型实践中,为了支撑测试环境和生产环境的稳定运行,用户往往需要同时管理和协调以下几大组件:
这些组件各自在其领域内都是成熟、专业的产品方案。但一旦被组合成一个应用的数据层,随之而来的就是巨大的运维压力和成本。你需要为每套系统独立管理备份、升级、监控。任何一个环节出问题,都可能导致整个 Agentic RAG 链路的全局性故障。系统越复杂,人力投入就越大,风险越高。
作为业界领先的开源智能体平台,Dify 在国内企业应用中已获得广泛部署。然而,由于官方此前缺乏 MySQL 兼容支持,大多数企业被迫在源码层面进行定制改造,导致维护困难且难以及时反馈社区。为解决 Dify 部署维护复杂度高及 MySQL 兼容性问题,OceanBase 开源团队与顺丰 AI 技术平台组基于 OceanBase 强大的 SQL 兼容能力,联合完成了 Dify MySQL 兼容开发,为社区及企业用户提供开箱即用的解决方案,显著降低部署运维成本。
在解决了 MySQL 兼容性问题后,Dify 也开始思考更深层次的架构优化。OceanBase 在提供 MySQL 兼容性的同时,也具备将元数据、向量和全文索引能力集于一身的能力,这为解决多组件架构带来的 Scale 复杂性、实现架构简化提供了新的思路。因此,在日前发布的 v1.10.1 这一版本中,Dify 开始尝试 一体化数据库,并选择了 OceanBase 作为首个实践对象。

从 Dify v1.10.1 版本开始,Dify 正式兼容和支持 MySQL / OceanBase / seekdb 作为 Dify 的元数据库,极大地便利了广大的 MySQL 技术栈用户。在元数据库和向量数据库的配置选项中,新增了基于 OceanBase 一体化数据库及 OceanBase AI 原生数据库 seekdb,用以简化 Agentic RAG 部署复杂度。
同时,还支持将 OceanBase / seekdb 用于对业务元数据、语义向量和全文索引进行统一的存储和检索,实现了数据层的彻底精简,确保事务一致性,极大简化运维负担。
DB_TYPE,一套迁移脚本兼容 PostgreSQL / MySQL / OceanBase,OceanBase / seekdb 可以直接当 Dify 元数据库用。
接下来将为您介绍:如何配置 Dify 的元数据库 / 向量数据库为 OceanBase seekdb,以及如何通过 Dify 快速构建 AI 应用。
在开始之前,请确保您的环境满足以下要求:
git clone https://github.com/langgenius/dify.git
cd dify/docker
cp .env.example .env
修改 .env 文件:
DB_TYPE=mysql
DB_USERNAME=root
DB_HOST=seekdb
DB_PORT=2881
DB_DATABASE=test
COMPOSE_PROFILES=${VECTOR_STORE:-weaviate},seekdb
修改 .env 文件:
VECTOR_STORE=oceanbase
OCEANBASE_VECTOR_HOST=seekdb
OCEANBASE_VECTOR_USER=root
COMPOSE_PROFILES=seekdb,${DB_TYPE:-postgresql}
修改 .env 文件:
DB_TYPE=mysql
DB_USERNAME=root
DB_HOST=seekdb
DB_PORT=2881
DB_DATABASE=test
VECTOR_STORE=oceanbase
OCEANBASE_VECTOR_HOST=seekdb
OCEANBASE_VECTOR_USER=root
COMPOSE_PROFILES=seekdb
使用 Docker Compose 构建并启动 Dify 服务:
cd dify/docker
docker compose up -d
预期看到类似的输出。
liboyang@Desktop-of-Zlatan docker % docker compose up -d
[+] Running 72/72
✔ web Pulled
✔ sandbox Pulled
✔ worker_beat Pulled
✔ ssrf_proxy Pulled
✔ worker Pulled
✔ nginx Pulled
✔ redis Pulled
✔ api Pulled
✔ plugin_daemon Pulled
✔ seekdb Pulled
[+] Running 12/12
✔ Network docker_default Created
✔ Network docker_ssrf_proxy_network Created
✔ Container docker-sandbox-1 Started
✔ Container docker-redis-1 Started
✔ Container docker-ssrf_proxy-1 Started
✔ Container docker-web-1 Started
✔ Container seekdb Healthy
✔ Container docker-plugin_daemon-1 Started
✔ Container docker-worker_beat-1 Started
✔ Container docker-worker-1 Started
✔ Container docker-api-1 Started
✔ Container docker-nginx-1 Started
如果在执行 docker compose up -d 时遇到类似于 Get "[https://registry-1.docker.io/v2/"](https://registry-1.docker.io/v2/" "https://registry-1.docker.io/v2/"") 的网络超时错误,可以尝试在 docker 的配置文件中增加 registry-mirrors 配置 Docker 镜像加速,然后重新执行 docker compose up -d 命令。
{
"max-concurrent-downloads": 10,
"max-concurrent-uploads": 5,
"registry-mirrors": [
"https://mirror.ccs.tencentyun.com",
"https://registry.docker-cn.com",
"https://docker.mirrors.ustc.edu.cn",
"https://hub-mirror.c.163.com",
"https://docker.1panel.live",
"https://docker.1ms.run",
"https://dytt.online",
"https://lispy.org",
"https://docker.xiaogenban1993.com",
"https://docker.yomansunter.com",
"https://666860.xyz",
"https://a.ussh.net",
"https://hub.rat.dev",
"https://docker.m.daocloud.io"
]
}
使用docker ps可以看一下各个容器的状态,启动后应该能看到各个容器都正常启动。

容器启动后会自动执行 Dify 元数据库的初始化和迁移,此步骤大约耗时 1 ~ 2 分钟。
通过以下三个命令查看 api 服务的日志,三个容器会有一个获得锁去执行迁移任务。在任一容器中看到 Database migration successful! 关键字,即可以确认迁移成功。
docker logs -f docker-api-1
docker logs -f docker-worker-1
docker logs -f docker-worker_beat-1
另外两个容器中可能会有Database migration skipped,表示在该容器中跳过了数据库结构迁移,如果没有其他ERROR信息,则说明可以正常打开 Dify 界面了。
http://localhost(或您的服务器 IP)。
http://localhost/install 注册管理员账号并登录。mysql -h127.0.0.1 -P2881 -uroot -Dtest -pxxxxx连接 seekdb(-p 后的密码为在 .env 文件里配置的密码),进而通过 show databases; 以及 show tables; 观察知识库中文档对应的表结构。以下内容会为大家介绍如何使用阿里云百炼的模型服务,快速通过 Dify x OceanBase seekdb 构建一个基础应用。已经熟悉 Dify 的老师可以直接忽略。
首先,我们需要注册阿里云百炼[2]账号,开通模型调用服务并获取 API Key。
说明:
这里仅仅是以百炼模型为例(主要是因为第一次注册和使用时,可以白嫖很多免费额度),并不对任何模型服务进行推荐。
Dify 平台支持的模型种类非常丰富,大家可以按需选择适合自己的大模型服务。






输入你刚才获得的 API Key 即可。



索引方式选择“高质量”。
可以选择版本最高的 embedding 模型,例如 text-embedding-v4。

文档会在此完成嵌入处理。
知识库创建完成后,点击 “前往文档”,可以看到该知识库中的文档列表。

然后就可以测试召回效果了。




在应用中可以选择添加刚刚创建的知识库。


之后就可以进行调试和预览了。

点击应用详情右上角的 “发布” 下面的 “运行” 按钮,会打开该应用的专属页面。

自此,你已经通过 Dify + OceanBase seekdb 搭建了你自己的 LLM 应用平台和智能体应用。

如果你是在服务器上部署的 Dify,也可以将该应用的链接分享给身边的朋友,让他们也一起来试用一下。
如果搭建的 AI 应用需要依赖 OceanBase 的分布式、高可用等特性,则可以将 Dify 中依赖的数据库从 seekdb 替换为 OceanBase。
配置方式如下:
git clone https://github.com/langgenius/dify.git
cd dify/docker
cp .env.example .env
修改 .env 文件:
DB_TYPE=mysql
DB_USERNAME=root@test
DB_HOST=oceanbase
DB_PORT=2881
DB_DATABASE=test
COMPOSE_PROFILES=${VECTOR_STORE:-weaviate},oceanbase
修改 .env 文件:
VECTOR_STORE=oceanbase
修改 .env 文件:
DB_TYPE=mysql
DB_USERNAME=root@test
DB_HOST=oceanbase
DB_PORT=2881
DB_DATABASE=test
VECTOR_STORE=oceanbase
COMPOSE_PROFILES=oceanbase
参考资料
[1] Dify v1.10.1 版本: https://github.com/langgenius/dify/releases/tag/1.10.1
[2] 阿里云百炼: https://bailian.console.aliyun.com/#/home
登录查看全部
参与评论
手机查看
返回顶部