博客 / 詳情

返回

餵飯級教程 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

user avatar
0 位用戶收藏了這個故事!

發佈 評論

Some HTML is okay.