大家好,我是袋鼠帝。
最近我在折騰本地AI知識庫的時候,在Github發現了一個特別有意思的新項目,叫seekdb。
它是一款開源的AI原生混合搜索數據庫。
https://github.com/oceanbase/seekdb
![]()
seekdb的配置要求,低到離譜,最低只需要1核CPU,2GB內存,就能跑起來。
它是All In One的AI原生數據庫,一個庫包圓了向量、文本、結構化/半結構化數據。
PS:也就是既可以做向量數據庫(實現RAG),又能存儲業務數據(傳統關系型數據庫)非常全能~
還支持 MySQL協議,Navicat直接連(Navicat是一款非常經典的數據庫可視化管理工具)
![]()
還能當MCP Server用,可以接入Trae、Claude Code、Cursor等任何支持MCP的工具或平臺。
![]()
另外,還可以接入Dify,不是當作外部知識庫接入哦,是可以直接掌管Dify的元數據和AI知識庫,因為Dify官方的最新版本在底層對它做了兼容。
當下大多數團隊在真正落地Agentic RAG應用的時候,或多或少應該都會遇到一個問題:底層數據架構過于復雜。
為了讓檢索足夠精準,通常需要處理三種完全不同的數據形態:
一是業務元數據,比如Agent的創建時間、作者、權限,工作流的各種節點數據。這需要關系型數據庫來存,因為它要求絕對的事務安全。
二是語義向量,這是把文字變成數學向量,讓AI能理解語義。這需要向量數據庫來存。
三是全文檢索,也就是關鍵詞匹配,因為有時候向量搜索會想太多、或者理解有偏差,反而搜不到一些具體的專有名詞,這時候就需要傳統的全文檢索來兜底。
在過去,為了實現這三者的混合搜索(Hybrid Search),不得不采用一種拼圖式的分布式架構:比如裝一個MySQL或PostgreSQL存元數據,再裝一個Milvus或Chroma存向量,為了搜得準,甚至還得再掛一個Elasticsearch做全文檢索。
你得維護三套完全不同的成熟系統,還要自己處理它們之間的數據同步。最要命的是,這種跨系統的寫入,很難保證事務一致性。比如網絡一抖動,向量庫寫入失敗了,但元數據寫入成功了,你的知識庫就精分了,一邊告訴你文檔在,一邊又搜不到內容。
系統越復雜,人力投入就越大,風險越高..
但seekdb的思路非常清晰,就做減法:把向量、文本、結構化/半結構化數據,全部塞進了一個數據庫里。
這意味著,你不需要再去維護那一堆亂七八糟的中間件了
一個seekdb,全搞定。
它的核心能力也是混合搜索。
![]()
seekdb直接在數據庫內核層面,支持了向量、全文和標量過濾的混合查詢。一條SQL語句,就能完成多路召回和精排。
它還內置了AI函數:
![]()
你可以在數據庫里,直接調用大模型或者向量模型,完成數據的嵌入和推理。
這就是,AI原生數據庫,自己帶了個腦子
這是seekdb和其他開源數據庫的對比
![]()
我覺得,這玩意兒特別適合幾個場景:
一個是個人或者小團隊的本地知識庫。因為它輕量,資源占用少,隨便找臺舊電腦或者便宜的云服務器就能跑。
另一個是邊緣設備上的AI應用。比如手機,車機,或者工業網關,這些設備的資源有限,跑不動那些重型數據庫,但seekdb這種輕量級架構,正好能派上用場。
當然,還有就是作為Agent的記憶體。它能同時存儲結構化的對話記錄和非結構化的向量記憶,非常適合用來給AI Agent做長期記憶。
好了,話不多說,我們直接上實操!
本地部署seekdb(超簡單)
部署seekdb,簡單得讓我有點不適應。
如果你習慣用Python,直接pip安裝就行。
pip install pyseekdb如果你想用Docker,也是一行命令的事。
docker run -d --name seekdb -p 2881:2881 oceanbase/seekdb:latest啟動速度非常快,幾乎是秒級。
安裝好之后,你可以用Python SDK來操作,也可以直接用MySQL客戶端(比如Navicat)連接。
也可以接入Dify使用
Dify雖然好用,但它的開源版在做AI知識庫這塊,檢索效果確實有點差強人意。
而且Dify的默認元數據庫(PostgreSQL)和向量數據庫(Weaviate)是分開的,相比seekdb有以下不足:
![]()
seekdb通過粗排?+?精排機制,能保持毫秒級響應,支持百億級向量檢索。
現在最新的Difyv1.10.1正式兼容了MySQL數據庫
這意味著我們可以把Dify的元數據庫(存儲業務數據)和向量數據庫,都切換成seekdb(因為它支持MySQL協議)。
看能不能提升一下Dify的知識庫效果
需要做兩個地方的改動:
一個是在Dify的docker/docker-compose.yaml文件里,把api、worker、worker_beat、web服務的image版本號改為1.10.1,或main
![]()
比如langgenius/dify-api:1.10.1
或者langgenius/dify-api:main
第二個改動是把dify/docker下的.env.example 復制出來,改名為.env
![]()
不過在文件夾里面,這兩個文件都是隱藏文件,正常是看不到的。
Mac查看隱藏文件的快捷鍵 command+shift+.
Windows快捷鍵是ctrl+shift+h
![]()
在.env里面修改幾個配置
如果既作為元數據庫又是向量數據庫的話,修改以下配置
COMPOSE_PROFILES=seekdb如果僅作為元數據庫,只需要改下面這些:
COMPOSE_PROFILES=${VECTOR_STORE:-weaviate},seekdb如果僅作為向量數據庫(只替換知識庫功能),只改下面這些配置:
COMPOSE_PROFILES=seekdb,${DB_TYPE:-postgresql}啟動之后,dify會幫seekdb設置一個默認密碼:difyai123456
PS:這個密碼也可以在.env文件里面修改
![]()
做完上面這些之后,執行docker-compose up -d重新拉取新鏡像,同時也會自動重啟服務。
![]()
啟動之后,seekdb就會同時扮演元數據庫、向量數據庫和全文檢索系統的角色
然后我把最近在公眾號發布的一些文章通過Dify打造了一個知識庫
![]()
在seekdb里面找到vector_index開頭的表,可以看到,已經有對應的向量數據存儲進來了。
![]()
接入GLM-4.6做了一些知識庫搜索的測試,感覺效果還是不錯的:
![]()
![]()
![]()
作為MCP-Server接入本地Agent
seekdb還提供了MCP-Server。
我們可以把它接入本地的Trae、Cursor、Claude Code等工具,作為一個本地Agent的知識庫工具,給Agent補充一些私有的專業知識,或者讓它記住你的偏好。
接入步驟也很簡單,分為兩步,不過需要先滿足以下前置條件:
1.已經在本地部署seekdb;
2.本地Python版本在3.11或以上;
3.需要安裝Python包管理器uv:pip install uv,安裝完成后執行uv --version驗證是否安裝成功。
然后第一步:安裝OceanBase MCP Server
1.克隆項目到本地(也可以去Github下載zip包):
git clone https://github.com/oceanbase/mcp-oceanbase.git2.進入源代碼目錄:
cd mcp-oceanbase3.安裝依賴:
uv pip install第二步:接入本地Agent,比如Trae
在Trae里面配置seekdb的MCP-Server
![]()
"mcpServers": {
"oceanbase": {
"command": "uv",
"args": [
"--directory",
"/path/to/your/mcp-oceanbase/src/oceanbase_mcp_server",
"run",
"oceanbase_mcp_server"
],
"env": {
"OB_HOST": "127.0.0.1",
"OB_PORT": "2881",
"OB_USER": "root",
"OB_PASSWORD": "difyai123456",
"OB_DATABASE": "test"
注意:路徑替換成自己的oceanbase_mcp_server絕對路徑
第一次啟動的時候,會下載MySQL相關驅動,有點慢。
成功后,如下圖,有10個工具
![]()
1. execute_sql:在 OceanBase 服務器上執行任意 SQL 語句。
2. get_ob_ash_report:生成 OceanBase 的 ASH(活躍會話歷史)報告,用于性能分析,可指定起止時間和租戶。
3. get_current_time:獲取 OceanBase 的當前系統時間。
4. get_current_tenant:獲取當前連接會話所屬的 tenant(租戶)名稱。
5. get_all_server_nodes:列出 OceanBase 集群中所有 server 節點(需要 sys 租戶權限)。
6. get_resource_capacity:獲取集群資源(CPU/內存等)容量信息(需要 sys 租戶權限)。
7. search_oceanbase_document:基于關鍵字從 OceanBase 官方文檔里自動檢索相關內容,為 LLM 提供上下文知識。
8. oceanbase_text_search:在 OceanBase 表里做全文檢索,可指定文本列、搜索詞、WHERE 條件和返回列。
9. oceabase_vector_search:對表中的向量列執行向量相似度搜索,可指定距離算法、是否返回距離、TopK 等。
10. oceanbase_hybrid_search:同時結合「結構化過濾(如年齡>20)」和「向量相似度」進行多模態混合搜索。
OceanBase MCP的使用方式還是有挺多的,我給大家展示兩種:
一種是傳統數據庫的增刪改查:
![]()
![]()
另外一種是混合檢索(全文檢索+語義檢索)。
不過AI并不清楚混合檢索的sql語句,所以需要給上下文(也就是sql示例,我這里寫在了輸入框,后續可以放到Trae的規則,或者作為一個文件,放在當前文件夾下)
sql示例可以在seekdb官方文檔找到:
https://www.oceanbase.ai/docs/zh-CN/
向量表的表名也得給對(可以去navicat里面找vector_index開頭的)
這里的提問:搜索一下PaddleOCR-VL是什么
![]()
這樣AI就能通過OceanBase MCP進行語義搜索,找到我通過Dify向量化存儲到seekdb的PaddleOCR-VL文章的相關信息,并整理回答。
![]()
![]()
更多信息可以在seekdb官方文檔里面查看:
https://www.oceanbase.ai/docs/zh-CN/
我感覺,數據庫這個行業,終于也開始被AI重塑了。
過去,我們為了適應數據庫,不得不把數據拆開,去適應不同的存儲引擎。
現在,seekdb把向量、文本、結構化數據重新融合在了一起,用一種更符合AI的使用方式,來存儲和檢索數據。
而且能無縫兼容MySQL協議,意味著很容易遷移/切換
我查了一下seekdb,還是螞蟻旗下的OceanBase團隊開源的項目
如果你正在為AI項目的數據架構頭疼,或者只是想在本地快速搭個好用的知識庫,可以去試試這款全新的AI數據庫--seekdb
能看到這里的都是鳳毛麟角的存在!
如果覺得不錯,隨手點個贊、在看、轉發三連吧~
如果想第一時間收到推送,也可以給我個星標?
謝謝你耐心看完我的文章~
特別聲明:以上內容(如有圖片或視頻亦包括在內)為自媒體平臺“網易號”用戶上傳并發布,本平臺僅提供信息存儲服務。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.