OceanBase SeekDB:AI原生|多模态混合搜索|数据库新选择

AI前沿22小时前发布 yizz
2,310 0 0

html

OceanBase SeekDB:AI原生多模态混合搜索数据库

最近发现了一个好东西,必须分享给各位兄弟:一个支持AI原生多模态混合搜索的数据库,名叫OceanBase SeekDB(简称SeekDB)。

一、项目背景:制造业客户的痛点

1.1 客户需求:智能巡检与维修

之前我们接到一个制造业客户的需求,他们是做塑制品生产的,类似于手机壳那种。工厂的产线年产值高达数千万,设备先进但维修依赖国外支持,成本高昂。他们虽然培养了一个老师傅,但面对越来越多的产线,日常巡检力不从心,停工损失巨大。因此,他们希望利用AI做一个智能体,辅助普通员工进行日常巡检和简单维护,解放老师傅的时间,让他专注于复杂问题和培养徒弟。

1.2 难点分析:多模态数据融合

从产线员工的角度来看,他们希望遇到问题时,可以通过拍摄照片、描述故障现象、提供环境参数(如产线ID、水温、压力等)来向AI寻求解决方案。这看似是一个经典的多模态RAG问题,但深入了解后会发现其困难之处。

要给出精准方案,系统需要在海量数据中找到同时满足以下三个条件的知识:

  • 视觉条件:照片与“高压泵阀体”相似(图片向量匹配)。
  • 语义条件:故障原理符合“异响震动”(文本向量匹配)。
  • 硬性指标:故障触发的阈值包含当前上传的85℃水温(结构化数据过滤)。

1.3 传统架构的局限性

在传统架构中,图片、手册和指标数据分别存储在图片向量库、文本向量库和业务数据库中。要将这三个条件“取交集”,需要在代码中编写极其复杂的逻辑,就像在三个部门之间跑腿盖章,任何一个环节出错都会导致整个链条中断。而且,向量查询是基于近似值的,每个环节的正确率都有偏差,最终结果的准确率会大打折扣。这就是很多多模态项目落地后出现答非所问的原因。

二、SeekDB的解决方案:融合式AI原生数据库

2.1 SeekDB的核心优势

SeekDB是一个AI原生数据库,它并没有搞什么花里胡哨的概念,而是解决了一个最本质的问题:融合。它支持在一张表里,同时存储和索引向量、文本、JSON、GIS等多种数据类型。这意味着,面对上述场景的查询,我们可以丢掉拼凑逻辑,通过一条SQL指令(混合检索)直接告诉数据库:

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


--定义查询参数
SET @search_params = '{
    -- 【多路向量召回】:同时匹配视觉和语义
    "knn": [
        {
            -- 1. 视觉相似度(ImageSimilarity)
            "field": "image_vec",  -- 对应表里的图片向量字段
            "k": 10,               -- 取前10个最相似的
            "query_vector": [0.12, 0.35, ...]  -- 这里填入工人刚才拍的照片生成的向量
        },
        {
            -- 2. 文本语义相似度(TextSimilarity)
            "field": "text_vec",  -- 对应表里的文本描述向量字段
            "k": 10,               -- 取前10个最相关的
            "query_vector": [0.88, 0.12, ...]  -- 这里填入 "异响震动" 等描述生成的向量
        }
    ],
    -- 【硬性指标过滤】:SQLFilter
    "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);

2.2 SeekDB的底层逻辑

SeekDB不是简单的“拼凑”,而是在内核层实现了Vector(向量)+ Fulltext(全文)+ SQL(标量)+ GIS(地理信息)的原生融合。它把“图片向量”、“文本向量”和“硬性数据指标”放在同一个层面上进行筛选,拥有强大的混合搜索能力。数据库自己在底层索引里就把交集做好了,直接吐出那个最可能的、精准的数据。

这意味着,我们可以让模型多次试错、多次查询,从而再次提高准确率。

2.3 SeekDB与传统数据库的对比

SeekDB有了全局的能力,把所有条件都能同时响应,精准地筛选出结果,就像盲人摸象,之前的库只能存储和查询单一模态,有点像蒙眼只能摸到大象的耳朵、鼻子、尾巴,按照这些局部条件检索能出现非常多的可能的答案,比如:AI会猜测可能是狮子、长颈鹿。而Seekdb有了全局的能力,把所有条件都能同时响应,精准的筛选出“大象”的结果。AI会明确的回答出来,这是一只大象。 这就是AI原生数据库的能力。

三、SeekDB的其他优势

3.1 纯正开源,无缝接入AI生态

SeekDB遵循Apache 2.0协议全面开源,商业友好。完全兼容MySQL协议,现有数据库客户端、驱动都能直接连接,学习成本低。生态完善,已和LangChainDify、LlamaIndex等主流AI框架打通,可以作为标准的VectorStore使用,无缝集成。

3.2 极致轻量,pip install即可运行

SeekDB支持嵌入式模式,Python开发者只需一行pip install seekdb就能安装。资源占用极低,最低起步配置仅需1核CPU、2GB内存。场景通吃,不仅能跑在服务器上,还能塞进工厂的工控机、树莓派,完美适配离线/边缘计算场景。

3.3 内置AI函数,省去大量“胶水代码”

SeekDB把调用AI模型的能力直接内置到了数据库函数。之前需要自己写脚本调用API生成向量或问答,现在直接在SQL里写AI_EMBEDAI_COMPLETE,数据库自动完成“推理+存储”的闭环。

3.4 “AI原生”混合检索

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

四、动手实操:以图搜图教程

为了让大家更直观地体验SeekDB,这里提供一个最基础的“图搜图”实操案例教程。以桌面系统“windows”为例:

4.1 安装Docker

访问Docker官网下载并安装Docker Desktop,一路点击“ok”安装即可。安装完成后需要重启电脑。

4.2 部署安装及使用SeekDB

  1. 创建数据卷:随便找个文件夹,在上边输入”cmd”来打开命令行,然后输入以下命令:
    docker volume create seekdb-data
  2. 部署SeekDB:确保你已经有docker的情况下,在终端执行(将 <your_password> 替换为你的密码)
    docker run -d --name seekdb -p 2881:2881 -p 2886:2886 -e ROOT_PASSWORD="<your_password>" -v seekdb-data:/var/lib/oceanbase quay.io/oceanbase/seekdb

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

  3. 连接SeekDB
    1. 进入容器的命令行环境:
      docker exec -it seekdb bash
    2. 在容器内部连接数据库:
      mysql -h 127.0.0.1 -u root -P 2881 -p

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

  4. 使用SeekDB:在浏览器中输入http://localhost:2886来访问Seedb。密码是:<your_password>

4.3 官方Demo:以图搜图

  1. 安装Anaconda环境:访问Anaconda官网下载并安装Anaconda,一路点击“ok”安装即可。
  2. 安装Python环境:再打开一个新的cmd的窗口。输入以下命令,通过anaconda安装python 3.10:
    
    conda create -n image-search python=3.10
    conda activate image-search
        

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

  3. 拉取项目代码
    
    git clone https://gitee.com/oceanbase-devhub/image-search.git
    cd image-search
        
  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="<your_password>"   ## 设置对应的租户用户的密码(之前安装的seekdb的密码)
    UI_LANG="zh"
    
  7. 启动项目:在这个文件夹下,以管理员身份运行,再打开一个窗口:
    streamlit run --server.runOnSave false image_search_ui.py

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

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

配置一个要检索的图片集合的目录,然后点击加载图片。等待图片加载完成后,可以在右侧上传一张用于搜索的图片,稍等一会就会检索出相似的图片,并且会告诉你距离(相近程度)以及该文件的路径。

五、总结与感悟

折腾完这个 Demo,我不由得感慨:技术迭代的速度简直快得惊人。之前我们在应用层做的那些繁琐的跨库查询、ID 拼接,本质上都是在给基础设施的缺陷“打补丁”。而像 OceanBase SeekDB 这样的工具出现,就是把这些补丁工作消灭在底层,让我们可以更纯粹地利用模型的能力去解决业务问题。

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

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

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

我认为: SeekDB 的出现,犹如黑暗中的一丝曙光,照亮了AI原生数据库的发展方向。它不仅解决了多模态数据融合的难题,更将AI能力融入数据库内核,为开发者提供了更加便捷、高效的开发体验。然而,SeekDB 的发展之路还很长,我们需要不断探索其在各行各业的应用,并持续优化其性能与功能,方能使其真正成为推动人工智能发展的强大引擎。希望它能为各行各业带来效率的提升,解决实际问题,这才是技术发展的最终意义!

SeekDB体验方式:

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

#LlamaIndex

© 版权声明

相关文章