首批通过分布式安全可靠测评,为关键业务系统打造
基于 OceanBase 构建图搜图应用
更新时间:2026-07-13 22:33:26
背景信息
在当今信息爆炸的时代,用户常需要从海量数据中迅速搜索所需信息。例如在线文献数据库、电商平台产品目录、以及不断增长的多媒体内容库,都需要高效的搜索系统来快速定位到用户感兴趣的内容。随着数据量不断激增,传统的基于关键字的搜索方法已经无法满足用户对于搜索精度和速度的需求,向量搜索技术应运而生。它通过将文本、图片、音频等不同类型的数据编码为数学上的向量,并在向量空间中进行搜索。这种方法允许系统捕捉数据的深层次语义信息,从而提供更为准确和高效的搜索结果。
本文通过 OceanBase 的向量搜索技术构建您的图搜图应用。
图搜图架构
图搜图应用是把图片库以向量形式,存储在数据库内,用户在对应的 UI 界面,上传需要查询的图片,图片会被应用转换为向量,在数据库内查询相似向量,并返回结果,最终以图片形式,在 UI 页面上展示相似图片。

前提条件
您已部署 OceanBase V4.3.3 及以上版本的集群并且创建了 MySQL 模式租户。更多有关部署 OceanBase 集群的信息,请参见 部署概述
您所创建的 MySQL 模式租户需要拥有插入及查询的权限。更多有关权限设置的信息,请参见 直接授予权限。
您已创建数据库。更多有关创建数据库的信息,请参见 创建数据库。
数据库已开启向量搜索功能。更多关于向量搜索功能的信息,请参见 使用 SQL 快速进行向量搜索。
obclient> ALTER SYSTEM SET ob_vector_memory_limit_percentage = 30;准备自己所需的图片,如果没有足够的图片用于测试效果,可参考各大开源网站的图片数据集。
安装 Python 3.9 及以上版本。
安装 Poetry:
python3 -m ensurepip python3 -m pip install poetry
构建你的图搜图应用
克隆代码仓库
git clone https://github.com/ob-labs/image-search.git
cd image-search
安装依赖
poetry install
设置环境变量
cp .env.example .env
# 更新 .env 文件中的数据库信息
vi .env
更新 .env 中内容:
HF_ENDPOINT=https://hf-mirror.com
DB_HOST="127.0.0.1" ## 设置对应租户的 IP
DB_PORT="2881" ## 设置对应的端口
DB_USER="root@test" ## 设置对应的租户及用户名
DB_NAME="test" ## 设置对应的数据库名
DB_PASSWORD="" ## 设置对应的租户用户的密码
启动图搜图程序
poetry run streamlit run --server.runOnSave false image_search_ui.py
返回结果如下:
Collecting usage statistics. To deactivate, set browser.gatherUsageStats to false.
You can now view your Streamlit app in your browser.
Local URL: http://localhost:8501
Network URL: http://xxx.xxx.xxx.xxx:8501
External URL: http://xxx.xxx.xxx.xxx:8501
应用展示
你需要自己准备一些图片放在你的服务器的某个文件夹中,并在打开的 UI 中更新 图片加载配置,注意图片加载目录 需要填写服务器上图片所存放目录的绝对路径。点击加载图片。
如果您没有足够的图片用于测试效果,可参考各大开源网站的图片数据集。

在线 Demo 体验
除自己构建图搜图应用外,您还可以访问萌兽搜搜登录体验在线 Demo 应用,Demo 界面的官网入口为资源与服务-学习-在线体验-在线 Demo。以下为界面展示:
