那个被我毙掉的 AI 项目,终于被一个AI原生数据库救活了

向量数据库大模型数据库

picture.image

发现了一个好东西兄弟们,给大家分享一下:是一个支持AI原生多模态混合搜索的数据库,叫OceanBase seekdb(简称 seekdb)。

之前我们有接到过一个制造业客户的需求,因为底层数据的构建难度太大,召回率我没把握,就没做。然后这两天看到了seekdb,发现最难的问题好像完全能解决了。

客户信息脱敏,大概的需求场景是这样的:

这是一家工厂的高层找来的,他们是做塑制品生产的,类似于手机壳那种,工厂每条产线的年产值高达数千万。设备全是进口的先进设备,整个产线工序很庞大,但是厂家能提供的只有一个维修手册和远程的支持,如果有必要还要给人家报销从国外来付费修检。

他们自己确实也培养了一个老师傅,但是现在产线增多,新的技术工培养周期太长,目前真的能干的就一个师傅,七条产线,日常巡检根本就巡检不过来,而且一旦某个产线出现问题,一个产线还能紧急应对,但是多个产线一旦停工,损失非常大。

所以,老板听说AI很厉害,就安排他们看看是否能够做一个智能体。即使不能像老师傅一样,最起码能够让普通员工拿着这个智能体能完成日常的巡检,然后有小问题也能自己查看手册维护都行。腾出时间,让老师傅专注于比较复杂的,并且能多教些徒弟。

这个需求是一个非常典型的需求。 (注意:我说的不是场景典型,而是使用到的技术比较典型。)

相信很多小伙伴看完这个场景,乍一听起来,就是一个经典的多模态RAG的事。

但是,真当我们深入产线去了解之后,就会感受到这是一个多么困难的事情。

项目背景

大家代入一下产线员工的视角,产线跑出来的产品有问题或者是产线某个流水线卡住了。

员工只能对着AI说:在产线注塑的这一块,现在卡住了,怎么解决。因为不太好描述组件,拍张照片给AI。这时候我们会在每一次询问时把“环境参数”,一起传给AI。比如:产线 ID 是 07 号,当前的水温是 85℃,压力是 120MPa。方便AI结合场景数据做判断。

通常AI知识库类的助手的逻辑原理如下:

picture.image

在这个逻辑下,能不能从知识库里把正确的知识片段拿出来,其实是决定了AI是否能回答正确的决定性因素。

所以,要想给出这个精准方案,系统必须在海量数据里,找到同时满足以下三个条件的那条知识:

  1. 视觉条件: 照片长得像“高压泵阀体”(图片向量匹配)。

  2. 语义条件: 故障原理符合“异响震动”(文本向量匹配)。

  3. 硬性指标: 该故障触发的阈值,必须包含当前传上来的 85℃ 水温(结构化数据过滤)。

在以往的架构里,图片放在图片向量库,手册在文本向量库,指标数据在业务数据库。要想把这三个条件“取交集”,我们需要在代码里写极其复杂的逻辑:

  • 先去搜图,拿到一堆疑似相同零件的ID和零件名称;
  • 然后拿着这一堆 ID 去查业务数据库,把等于85°C水温的使用中的零件ID筛选出来。
  • 然后再拿工人描述的状况+零件名称去查知识库中维修手册。
  • 然后根据维修手册里边的知识片段+数据指标+已有信息,让最后的AI给出判断。

picture.image

这就像是在三个不同的部门之间跑腿盖章,只要中间一个环节对不上,或者查询的内容不对,整个链条就断了。而且大家都清楚,标量查询还好,但是向量是按照近似值进行的查询,都会有一定的偏差,每个环节正确率是90%,但是三个环节的叠加,那么最终的正确率就变成了:72%。

这就是为什么很多多模态项目落地后,总是出现答非所问的情况,因为逻辑是割裂的。

而 seekdb 让我兴奋的点就在这,解决了核心问题!它是一个AI 原生数据库,它并没有搞什么花里胡哨的概念,而是解决了一个最本质的问题:融合。

picture.image

它支持在一张表里,同时存储和索引:向量、文本、JSON、GIS 等多模数据类型。

  • Image Vector(故障图片的特征向量)

  • Text Vector(维修手册的语义向量)

  • Scalar(实时监测的业务数据库数据)

这意味着,面对上面那个场景的查询,我们可以丢掉拼凑逻辑了。

我们可以通过一条 SQL 指令(混合检索),直接告诉数据库:

“帮我找跟这张照片长得像的故障案例(Vector 相似度),同时,这个案例的描述要跟工人的问题语义相关(Text 相似度),并且,这是一个硬性门槛——这个案例对应的温度范围必须包含当前传进来的 85℃(SQL Filter),最后把符合这三个条件的维修方案直接返给我。”

  
-- 定义查询参数  
SET @search_params = '{  
  -- 【多路向量召回】:同时匹配视觉和语义  
  "knn": [  
    {  
      -- 1. 视觉相似度(Image Similarity)  
      "field": "image_vec",                -- 对应表里的图片向量字段  
      "k": 10,                             -- 取前10个最相似的  
      "query_vector": [0.12, 0.35, ...]    -- 这里填入工人刚才拍的照片生成的向量  
    },  
    {  
      -- 2. 文本语义相似度(Text Similarity)  
      "field": "text_vec",                 -- 对应表里的文本描述向量字段  
      "k": 10,                             -- 取前10个最相关的  
      "query_vector": [0.88, 0.12, ...]    -- 这里填入"异响震动"等描述生成的向量  
    }  
  ],  
  
  -- 【硬性指标过滤】:SQL Filter  
  "query": {  
    "bool": {  
      "filter": [  
        -- 3. 温度范围必须包含 85℃ (即:min_temp <= 85 且 max_temp >= 85)  
        {   
          "range": {   
            "min_temp": { "lte": 85 }      -- 案例的最低适用温度 <= 85  
          }   
        },  
        {   
          "range": {   
            "max_temp": { "gte": 85 }      -- 案例的最高适用温度 >= 85  
          }   
        }  
      ]  
    }  
  },  
  
  -- 【返回结果】:只展示维修方案  
  "_source": ["solution_content", "part_name"]   
}';  
-- 执行混合搜索  
SELECT DBMS_HYBRID_SEARCH.SEARCH('maintenance_knowledge', @search_params);

这就是我最想强调的能力。

我们不再是先查图片再去猜原因,而是 把“图片向量”、“文本向量”和“硬性数据指标”放在同一个层面上进行筛选,拥有强大的混合搜索能力。 数据库自己在底层索引里就把交集做好了,直接吐出那个最可能的、精准的数据。

picture.image

此内容这样也意味着,我们可以让模型多次的试错,多次查询,从而再次提高准确率。

以上的过程有点像“盲人摸象”,之前的库只能存储和查询单一模态,有点像蒙眼只能摸到大象的耳朵、鼻子、尾巴,按照这些局部条件检索能出现非常多的可能的答案,比如:AI会猜测可能是狮子、长颈鹿。

而Seekdb有了全局的能力,把所有条件都能同时响应,精准的筛选出“大象”的结果。AI会明确的回答出来,这是一只大象。

这就是 AI原生数据库 的能力。

“好用”和“能落地”是两码事。 之前我们没有接这个项目,是因为部署一套集群,无论是开发还是运维成本都太高了,给客户能带来的收益还很难测算。

而有了OceanBase seekdb 后,我感觉已经可以重新把这个事情再研究一下了。

此外,OceanBase seekdb还切中了几个非常好的点,让我觉得这个项目非常值得大家关注和使用:

picture.image

1、纯正开源,无缝接入 AI 生态 这点必须划重点:seekdb 遵循 Apache 2.0 协议 全面开源,这意味着你可以自由使用、修改,商业非常友好。

  • 完全兼容 MySQL 协议,你现在的数据库客户端、驱动都能直接连,没有学习成本。

  • 生态完善: 已经和 LangChain、Dify、LlamaIndex 等主流 AI 框架打通了,写 Agent 的时候可以直接把它当做标准的 VectorStore 用,无缝集成。

    2、极致轻量,pip install 就能跑 它支持嵌入式模式,对于 Python 开发者,

只需要一行 pip install seekdb 就能安装。

  • 资源占用极低: 最低起步配置仅需 1核 CPU、2GB 内存。

  • 场景通吃: 这意味着它不仅能跑在服务器上,还能塞进工厂的工控机、树莓派,完美适配离线/边缘计算场景。

3、内置 AI 函数 ,省去大量的“胶水代码” seekdb 把调用 AI 模型的能力直接内置到了数据库函数。

  • 之前需要自己写脚本调用API生成向量或问答。现在直接在 SQL 里写 AI\_EMBEDAI\_COMPLETE,数据库自动帮你完成“推理+存储”的闭环。

    4、“AI 原生”混合检索, 它不是简单的“拼凑”,而是在内核层实现了 Vector(向量)+ Fulltext(全文)+ SQL(标量)+ GIS(地理信息) 的原生融合。 正如上面所说,它支持在一张表里同时处理视觉、语义和硬性指标,通过 RRF(倒数排名融合)算法给出输出。

以下是与一些常见数据库的能力支持对比:

picture.image

说到这,兄弟们应该手痒了。

光说不练假把式,为了让大家更直观和最简单的方式,体验seekdb,我准备了一个最基础的“图搜图”实操案例教程供大家使用。

这个教程是我们本地跑了几遍的,老规矩,我们还是以小白的角度起手,因此以桌面系统“windows”为例,走一下流程。会使用服务器的开发者,浏览以下步骤,肯定也能上手了。

动手实操

一、docker安装。

picture.image

一路点击ok安装即可。

最后这一步需要重启电脑,注意关闭和保存你的工作,防止突然重启丢失你的工作文件。

picture.image

然后正常的使用账号登录即可,登录的时候需要🧙,大家注意。

二、部署安装及使用

重启电脑之后,随便找个文件夹,在上边输入"cmd"来打开命令行:

picture.image

然后打开命令行:

picture.image

输入以下命令,(为了大家都能跑通,所以默认的文件位置是C盘,大家可以自己修改路径)

  
docker volume create seekdb-data

1、部署

确保你已经有docker的情况下,在终端执行。(注意把替换为你的密码这几个字修改成你的密码)

  
docker run -d --name seekdb -p 2881:2881 -p 2886:2886 -e ROOT\_PASSWORD="123456" -v seekdb-data:/var/lib/oceanbase quay.io/oceanbase/seekdb

picture.image

执行完后,耐心等待 2-3 分钟,让 seekdb完成内部初始化。

2、连接 seekdb。

  
# 1. 进入容器的命令行环境  
docker exec -it seekdb bash  
# 2. 在容器内部连接数据库  
# 执行后,会提示你输入密码  
mysql -h127.0.0.1 -uroot -P2881 -p

输入完成后会提示enter password,输入上面修改后的密码,注意输入时是不显示的,输入完成后,按回车即可。显示如下内容就证明连接成功了:

picture.image

3、使用:

接下来就可以在浏览器中输入【http://localhost:2886】来访问seedb。

密码是:123456

picture.image

三、官方demo,以图搜图

1、安装anaconda环境。

下载地址:https://www.anaconda.com/download。也是一路点击 ok,安装即可。

2、安装python环境:

再打开一个新的cmd的窗口。输入以下命令,通过anaconda安装python 3.10:

  
conda create -n image-search  python=3.10  
conda activate image-search

当它的开头的括号中,变成(image-search)即为安装成功。

picture.image

3、拉取项目代码:

  
git clone https://gitee.com/oceanbase-devhub/image-search.git  
cd image-search

picture.image

4、添加项目依赖:

copy con requirements.txt towhee>=1.1.3,<2.0.0 streamlit>=1.39.0,<2.0.0 python-dotenv>=1.0.1,<2.0.0 opencv-python>=4.10.0.84,<5.0.0 torchvision>=0.20.0 transformers>=4.45.2,<5.0.0 pyobvector>=0.1.6,<0.2.0 torch>=2.6.0

输入后,按ctrl+Z,然后再点击回车

5、安装项目依赖:

  
pip install -r .\requirements.txt

6、修改环境参数(.env文件)

打开项目文件夹中的.env文件中。(.env文件无法直接打开,可以右键、打开方式、用记事本打开) 具体参数及说明:

  
HF_ENDPOINT=https://hf-mirror.com  
DB_HOST="127.0.0.1"   ## 设置对应的服务器 IP(之前安装的seekdb的地址)  
DB_PORT="2881"   ## 设置对应的端口(之前安装的seekdb的端口号)  
DB_USER="root" ## 设置对应的租户及用户名  
DB_NAME="test"   ## 设置对应的数据库名  
DB_PASSWORD="123456"  ## 设置对应的租户用户的密码((之前安装的seekdb的密码))  
UI_LANG="zh"

7、启动项目:

最后,在这个文件夹下,以管理员身份运行,再打开一个窗口:

picture.image

然后输入以下命令:

  
streamlit run --server.runOnSave false image\_search\_ui.py

接着你会看到他正在下载小模型,用于将图片向量化,所以这里需要等待一会。:

picture.image

稍等片刻后,就可以打开页面直接使用了:

picture.image

安装完成后,会自动打开浏览器。你也可以复制这个地址粘贴到浏览器 ,进行访问:http://192.168.1.241:8502

那么既然我们要图搜图,所以先要配置一个,要检索的图片集合的目录,然后点击加载图片。

picture.image

我配置了我的图片,点击加载,会自动的向量化图片,等图片加载完成后,可以在右侧上传一张用于搜索的图片。

picture.image

稍等一会就会检索出相似 的图片,并且会告诉你距离(相近程度)以及该文件的路径。

picture.image

写在最后

折腾完这个 Demo,我不由得感慨: 技术迭代的速度简直快得惊人。

像我们之前在应用层做的那些繁琐的跨库查询、ID 拼接,本质上都是在给基础设施的缺陷“打补丁”。而像 OceanBase seekdb 这样的工具出现,就是把这些补丁工作消灭在底层,让我们可以更纯粹地利用模型的能力去解决业务问题。

回想一年前,我们还在为各种复杂的业务逻辑编写大量的固定工作流、写死板的胶水代码。而现在,“纯 Agent + MCP(Model Context Protocol)” 的模式正在迅速崛起,以前几百行代码才能搞定的逻辑对齐,现在可能只需要让数据库和模型“通个气”就解决了。

这也是为什么我一直坚持一个观点:要做“模型越强我越强”的事,而不是做那些“模型一迭代就被碾压”的事。

在这个 AI 日新月异的时代,真心建议大家时刻关注像 seekdb 这样的前沿工具。有时候, “做不成”和“做得好”之间,差的可能不是技术实力,而只是你不知道手里有把新锤子。

事半功倍,往往就藏在这些新工具里。

我是梦飞,我们下次见~

seekdb体验方式:

GitHub:https://github.com/oceanbase/seekdb

官方文档: https://www.oceanbase.ai/docs/zh-CN/seekdb-overview

往期推荐

K2 Thinking可能才是Agent的真正起点

国内首个视觉 Agentic 编程模型来了!

强主体弱镜头Seedance 1.0 Pro首尾帧测评

干货拆解|企业级AI 应用可以怎么做?

30分钟手把手从0训练一个ChatGPT模型

Nano Banana Pro中文/逻辑/写实全SOTA

30秒做出来的网页也能叫应用

0
0
0
0
关于作者
关于作者

文章

0

获赞

0

收藏

0

相关资源
云原生数据库 veDB 核心技术剖析与展望
veDB 是一款分布式数据库,采用了云原生计算存储分离架构。本次演讲将为大家介绍火山引擎这款云原生数据库的核心技术原理,并对未来进行展望。
相关产品
评论
未登录
看完啦,登录分享一下感受吧~
暂无评论