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