祥云网站优化,湖北网站seo,平面设计和电商设计的区别,免费制作logo的网站文章目录 一、向量检索概述1.1 关键概念① 非结构化数据② 向量③ 向量嵌入(Embedding)④ 向量相似性检索 1.2 应用场景 二、向量检索核心功能三、图搜图架构四、操作步骤4.1 使用 Docker 部署 OceanBase 数据库4.2 测试OceanBase数据库连通性4.3 开启数据库向量检索功能4.4 克… 文章目录 一、向量检索概述1.1 关键概念① 非结构化数据② 向量③ 向量嵌入(Embedding)④ 向量相似性检索 1.2 应用场景 二、向量检索核心功能三、图搜图架构四、操作步骤4.1 使用 Docker 部署 OceanBase 数据库4.2 测试OceanBase数据库连通性4.3 开启数据库向量检索功能4.4 克隆项目代码仓库至本地4.5 安装依赖4.6 设置环境变量4.7 上传图片数据集至服务器上4.8 启动图搜图程序4.9 打开图搜图对应的 UI 界面 五、测试图搜图效果六、参考链接 一、向量检索概述
OceanBase 数据库具备强大的向量检索能力支持最高 16,000 维的 Float 类型稠密向量并可计算曼哈顿距离、欧几里得距离、内积、余弦相似度等多种向量距离类型。其向量索引基于 HNSWHierarchical Navigable Small World技术支持增量更新和删除操作且这些操作不会影响召回率。此外OceanBase 支持带有标量过滤的融合查询提供灵活的访问方式。用户可以通过 MySQL 协议使用各种语言客户端执行 SQL 查询也可以通过 Python SDK 进行访问。与此同时OceanBase 已完成对 LlamaIndex、DB-GPT 等 AI 应用开发框架以及 AI 应用开发平台 Dify 的适配进一步优化对 AI 应用开发的支持能力。
1.1 关键概念
① 非结构化数据
非结构化数据是指没有明确定义的数据格式和组织结构的数据。非结构化数据通常包括文本、图像、音频、视频等形式的数据以及社交媒体内容、电子邮件、日志文件等。由于非结构化数据的复杂性和多样性处理这些数据需要采用特定的工具和技术例如自然语言处理、图像识别、机器学习等。
② 向量
向量本质上是一个对象在高维空间的投影。数学意义上向量则是一个浮点数组有以下两个特点
数组中每个元素表示向量的某个维度每个元素都是一个浮点数。
向量数组的大小元素个数表示整个向量空间的维度。
③ 向量嵌入(Embedding)
向量嵌入(Embedding) 指的是通过深度学习神经网络提取非结构化数据里的内容和语义把图片、视频等变成特征向量的过程。Embedding 技术将原始数据从高维度(稀疏)空间映射到低维度(稠密)空间将具有丰富特征的多模态数据转换为多维数组(向量)。
④ 向量相似性检索
在当今信息爆炸的时代用户常需要从海量数据中迅速检索所需信息。例如在线文献数据库、电商平台产品目录、以及不断增长的多媒体内容库都需要高效的检索系统来快速定位到用户感兴趣的内容。随着数据量不断激增传统的基于关键字的检索方法已经无法满足用户对于检索精度和速度的需求向量检索技术应运而生。向量相似性检索使用特征提取和向量化技术将文本、图片、音频等不同类型的非结构化数据转换为向量使用相似性度量方法来比较它们之间的相似性进而捕捉数据的深层次语义信息从而提供更为准确和高效的检索结果。
1.2 应用场景
检索增强生成RAG - Retrieval Augmented Generation RAG 是一种人工智能技术框架通过从外部知识库中检索事实为大型语言模型LLM提供准确、最新的信息。这一过程不仅提升了模型生成内容的质量还增强了用户对模型生成过程的理解。RAG 技术常用于智能问答、知识库等应用领域结合检索与生成技术优化了信息获取和处理的效率。个性化推荐 个性化推荐系统依据用户的历史行为和偏好为其推荐可能感兴趣的内容。在收到推荐请求时系统通过分析用户特征进行相似度计算并返回与用户兴趣相关的推荐结果。此技术广泛应用于饭店、景点等推荐场景以精准满足用户需求。图像/文本检索 图搜图和文本搜图任务指的是在庞大的图像或文本数据库中寻找与指定图像或文本最为相似的内容。通过将图像或文本特征存储在向量数据库并利用高效的索引技术进行相似度计算系统能够快速返回匹配的结果。这种技术应用于人脸识别等场景为用户提供精准、高效的搜索体验。
二、向量检索核心功能
OceanBase 提供了存储、索引、检索 Embedding 向量数据的能力。具体包括
核心功能描述向量数据类型支持最大 16,000 维的 float 向量数据存储。向量索引支持精确搜索、近似最近邻搜索。支持计算 L2 距离、内积和余弦 * 距离。支持 HNSW 索引索引列支持的最大维度为 2000。向量搜索 SQL 运算符支持向量加、减、乘、比较、聚合等基础运算操作符。
使用限制
OceanBase 默认采用 NULL first 比较模式所以对 NULL 值进行排序时会将其放至最前建议查询的时候加上 NOT NULL 条件。暂不支持在一张表上同时定义向量索引和全文索引。
三、图搜图架构
图搜图应用是把图片库以向量形式存储在数据库内用户在对应的 UI 界面上传需要查询的图片图片会被应用转换为向量在数据库内查询相似向量并返回结果最终以图片形式在 UI 页面上展示相似图片。 四、操作步骤
4.1 使用 Docker 部署 OceanBase 数据库
安装并启动 Docker 服务。
rootoceanbase:~# apt-get install docker-ce
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
docker-ce is already the newest version (5:27.3.1-1~ubuntu.24.04~noble).
0 upgraded, 0 newly installed, 0 to remove and 26 not upgraded.rootoceanbase:~# systemctl start docker systemctl enable docker
Synchronizing state of docker.service with SysV service script with /usr/lib/systemd/systemd-sysv-install.
Executing: /usr/lib/systemd/systemd-sysv-install enable docker
rootoceanbase:~# systemctl status docker执行如下命令启动 OceanBase docker 容器即安装部署oceanbase数据库。
docker run --nameob433 -e MODEmini -e OB_MEMORY_LIMIT8G -e OB_DATAFILE_SIZE10G -e OB_CLUSTER_NAMEailab2024 -e OB_SERVER_IP127.0.0.1 -p 127.0.0.1:2881:2881 -d quay.io/oceanbase/oceanbase-ce:4.3.3.1-101000012024102216通过执行以下命令检查 OceanBase 的引导是否完成。
docker logs -f ob433初始化大约需要 2-3 分钟。当看到以下消息时引导已完成boot success! 按下CtrlC可退出日志视图。 4.2 测试OceanBase数据库连通性
若采用上述Docker容器进行安装OceanBase数据库可以执行如下命令测试数据库的连通性。
rootoceanbase:~/image-search# mysql -h127.0.0.1 -P2881 -uroottest -A -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 3221487647
Server version: 5.7.25 OceanBase_CE 4.3.3.1 (r101000012024102216-2df04a2a7a203b498f23e1904d4b7a000457ce43) (Built Oct 22 2024 17:42:50)Copyright (c) 2000, 2024, Oracle and/or its affiliates.Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.Type help; or \h for help. Type \c to clear the current input statement.mysql4.3 开启数据库向量检索功能 在使用向量索引前需要依据租户下的索引数据估计内存占用并进行配置以下命令表示将向量索引可用内存配置为租户内存的 30% mysql ALTER SYSTEM SET ob_vector_memory_limit_percentage 30;
Query OK, 0 rows affected (0.01 sec)PSob_vector_memory_limit_percentage 的默认值为 0表示不为向量索引分配内存创建索引会报错。
4.4 克隆项目代码仓库至本地
git clone https://gitee.com/oceanbase-devhub/image-search.git
cd image-search4.5 安装依赖
poetry install如已经安装完依赖执行上述命令显示如下结果表示依赖已安装。
rootoceanbase:~/image-search# poetry install --no-root
Installing dependencies from lock fileNo dependencies to install or update4.6 设置环境变量
# 在/image-search路径下执行该命令。
$ cp .env.example .env
# 更新 .env 文件中的数据库信息
vim .env更新 .env 中内容如下保持默认即可。
HF_ENDPOINThttps://hf-mirror.comDB_HOST127.0.0.1 ## 设置对应租户的 IP
DB_PORT2881 ## 设置对应的端口
DB_USERroottest ## 设置对应的租户及用户名
DB_NAMEtest ## 设置对应的数据库名
DB_PASSWORD ## 设置对应的租户用户的密码4.7 上传图片数据集至服务器上 上传好先前准备好的图片数据集后可以将文件夹上传到指定的服务器的目录下记住该文件夹存储的绝对路径。本实验的文件夹存储路径为/home/ubuntu/zebra/ 也可以通过命令提示符窗口进行查验图片集是否上传成功。 4.8 启动图搜图程序 执行该命令如相关 poetry run streamlit run --server.runOnSave false image_search_ui.py成功启用图搜图程序如下截图显示 通过能获取到的URL进行图搜图UI界面的访问。 4.9 打开图搜图对应的 UI 界面 在 图片加载设置下图片加载目录内填写服务器上图片所存放目录的绝对路径。点击 加载图片。等图片加载完成后即可进行图搜图操作。 等待图片加载完成。 所有图片加载完成 五、测试图搜图效果 点击上传文件选择提前准备好的一张zebra的图片。 上传完之后立马给出了图片集中所有相似图片包括距离、文件路径等信息。 至此我们通过 OceanBase 的向量检索技术构建图搜图应用已完成。
六、参考链接
基于 OceanBase 构建图搜图应用-V4.3.4-OceanBase 数据库文档-分布式数据库使用文档