喂饭级教程 II —— Dify x OceanBase seekdb 使用指南

君子性非异也,善假于物也。

—— 《荀子》

这篇文章,是继上一篇公博大佬的大作《喂饭级教程 —— 基于 OceanBase seekdb 构建 RAG 应用》之后,第二篇 seekdb 使用教程类的内容。

欢迎各位老师也能根据文章中的步骤尝试快速使用 Dify x seekdb 搭建属于您自己的 AI 应用,也欢迎大家踊跃在评论区批评、指正、吐槽、谩骂~

在这篇狗尾续貂的教程中,会为大家介绍:在 AI 应用开发者最熟悉的 Dify 平台上,如何借助 OceanBase seekdb 的力量,大幅简化应用开发过程中的多组件部署复杂度,同时提高向量混合搜索的能力。

本文共分为三个部分,大家可以选择性地进行阅读:

  • 第一部分是简单介绍 Agentic RAG 多组件依赖的痛点,以及 Dify v1.10.1 版本对应的解决方案。
  • 第二部分是如何配置 Dify 的元数据库 / 向量数据库为 OceanBase seekdb,以达到快速简化 Dify 多组件部署复杂度,和提高 AI 应用依赖的向量数据库混合检索效果的目的。
  • 第三部分是如何通过 Dify x OceanBase seekdb 快速构建 AI 应用。

背景

传统的 Agentic RAG 的痛点

传统的 Agentic RAG 依赖关系型数据库 + 向量数据库 + 全文检索多个异构组件,导致运维复杂、数据同步困难、一致性风险高。在典型实践中,为了支撑测试环境和生产环境的稳定运行,用户往往需要同时管理和协调以下几大组件:

  • 关系型数据库,主要用于存储用户、应用配置、Agent 任务状态、知识库文档的元数据,这些是强事务性、结构化的业务数据。
  • 向量数据库,负责存储 Context Chunks 经过 Embedding Model 向量化后的高维向量。这是实现语义搜索的基础,让 Agent 能理解文本的深层含义。
  • 全文检索,负责构建知识库内容的倒排索引,以支持基于关键词的稀疏检索。这保证了用户或 Agent 能进行精确的文本匹配或模糊搜索。

这些组件各自在其领域内都是成熟、专业的产品方案。但一旦被组合成一个应用的数据层,随之而来的就是巨大的运维压力和成本。你需要为每套系统独立管理备份、升级、监控。任何一个环节出问题,都可能导致整个 Agentic RAG 链路的全局性故障。系统越复杂,人力投入就越大,风险越高。

Dify v1.10.1 版本[1]

作为业界领先的开源智能体平台,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 用于对业务元数据、语义向量和全文索引进行统一的存储和检索,实现了数据层的彻底精简,确保事务一致性,极大简化运维负担。

  • MetaDB 层:
    Dify 已适配 MySQL 型 MetaDB,引入 DB_TYPE,一套迁移脚本兼容 PostgreSQL / MySQL / OceanBase,OceanBase / seekdb 可以直接当 Dify 元数据库用。
  • 向量 & 检索层:
    OceanBase 已经是 Dify 官方 VectorStore:支持向量检索、Hybrid Search(向量+全文)、metadata 过滤、score 阈值控制,并有多语言 fulltext parser 选项。
  • 运行环境 & 质量:
    Docker Compose 里有专门的 OB profile,起容器即可用;CI 里有真机 OB 实例跑向量相关测试保障。

接下来将为您介绍:如何配置 Dify 的元数据库 / 向量数据库为 OceanBase seekdb,以及如何通过 Dify 快速构建 AI 应用。

替换 Dify 依赖的元数据库 / 向量数据库

前置要求 (Prerequisites)

在开始之前,请确保您的环境满足以下要求:

  • Container Runtime: Docker & Docker Compose
  • Git: Version control tool

部署 Dify

克隆 Dify 代码

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

cd dify/docker

cp .env.example .env

配置 seekdb 为 Dify 依赖的数据库 (Apply Configuration)

情况 1 : 将 seekdb 仅作为元数据库

修改 .env 文件:

DB_TYPE=mysql
DB_USERNAME=root
DB_HOST=seekdb
DB_PORT=2881
DB_DATABASE=test

COMPOSE_PROFILES=${VECTOR_STORE:-weaviate},seekdb

情况 2 : 将 seekdb 仅作为向量数据库

修改 .env 文件:

VECTOR_STORE=oceanbase
OCEANBASE_VECTOR_HOST=seekdb
OCEANBASE_VECTOR_USER=root

COMPOSE_PROFILES=seekdb,${DB_TYPE:-postgresql}

情况 3 : 将 seekdb 作为元数据库和向量数据库(推荐)

修改 .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

启动服务 (Start Dify)

使用 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 界面了。

验证和安装 (Verification)

  1. 访问 Dify 控制台: 打开浏览器访问 http://localhost(或您的服务器 IP)。

  1. 创建账号: 通过 http://localhost/install 注册管理员账号并登录。
  2. 测试向量能力:创建一个知识库 (Knowledge Base),上传文档并观察切片与索引过程。如果能够成功嵌入 (Embedding) 并检索,说明 SeekDB 向量存储配置成功。第一次创建知识库之前还需要配置 API KEY,详细步骤会在下面的 “通过 Dify 构建 AI 应用” 部分为大家介绍。
  3. 感兴趣的老师,还可以通过 mysql -h127.0.0.1 -P2881 -uroot -Dtest -pxxxxx连接 seekdb(-p 后的密码为在 .env 文件里配置的密码),进而通过 show databases; 以及 show tables; 观察知识库中文档对应的表结构。

通过 Dify 构建 AI 应用

以下内容会为大家介绍如何使用阿里云百炼的模型服务,快速通过 Dify x OceanBase seekdb 构建一个基础应用。已经熟悉 Dify 的老师可以直接忽略。

开通阿里云百炼模型调用服务并获取 API KEY

首先,我们需要注册阿里云百炼[2]账号,开通模型调用服务并获取 API Key。

说明:

这里仅仅是以百炼模型为例(主要是因为第一次注册和使用时,可以白嫖很多免费额度),并不对任何模型服务进行推荐。

Dify 平台支持的模型种类非常丰富,大家可以按需选择适合自己的大模型服务。

在 Dify 中设置模型供应商和系统模型

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

创建 Knowledge(知识库)

索引方式选择“高质量”。

可以选择版本最高的 embedding 模型,例如 text-embedding-v4。

文档会在此完成嵌入处理。

知识库创建完成后,点击 “前往文档”,可以看到该知识库中的文档列表。

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

创建 ChatBot(对话应用)

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

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

发布应用

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

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

如果你是在服务器上部署的 Dify,也可以将该应用的链接分享给身边的朋友,让他们也一起来试用一下。

What's more ?

如果搭建的 AI 应用需要依赖 OceanBase 的分布式、高可用等特性,则可以将 Dify 中依赖的数据库从 seekdb 替换为 OceanBase。

配置方式如下:

克隆 Dify 代码

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

cd dify/docker

cp .env.example .env

配置 OceanBase 为 Dify 依赖的数据库 (Apply Configuration)

情况 1 : 将 oceanbase 仅作为元数据库

修改 .env 文件:

DB_TYPE=mysql
DB_USERNAME=root@test
DB_HOST=oceanbase
DB_PORT=2881
DB_DATABASE=test
COMPOSE_PROFILES=${VECTOR_STORE:-weaviate},oceanbase

情况 2 : 将 oceanbase 仅作为向量数据库

修改 .env 文件:

VECTOR_STORE=oceanbase

情况 3 : 将 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

posted on 2025-12-11 14:34  老纪的技术唠嗑局  阅读(13)  评论(0)    收藏  举报