数据库管理-第153期 Oracle Vector DB AI-05(20240221)

2024-02-22 07:12

本文主要是介绍数据库管理-第153期 Oracle Vector DB AI-05(20240221),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

数据库管理153期 2024-02-21

  • 数据库管理-第153期 Oracle Vector DB & AI-05(20240221)
    • 1 Oracle Vector的其他特性
      • 示例1:
      • 示例2
    • 2 简单使用Oracle Vector
      • 环境
      • 创建包含Vector数据类型的表
      • 插入向量数据
    • 总结

数据库管理-第153期 Oracle Vector DB & AI-05(20240221)

作者:胖头鱼的鱼缸(尹海文)
Oracle ACE Associate: Database(Oracle与MySQL)
网思科技 DBA总监
10年数据库行业经验,现主要从事数据库服务工作
拥有OCM 11g/12c/19c、MySQL 8.0 OCP、Exadata、CDP等认证
墨天轮MVP、认证技术专家,ITPUB认证专家,OCM讲师
圈内拥有“总监”、“保安”、“国产数据库最大敌人”等称号,非著名社恐(社交恐怖分子)
公众号:胖头鱼的鱼缸;CSDN:胖头鱼的鱼缸(尹海文);墨天轮:胖头鱼的鱼缸;ITPUB:yhw1809。
除授权转载并标明出处外,均为“非法”抄袭。

继续继续,本期将开始引入部分实操内容。

1 Oracle Vector的其他特性

  • SQL Join
    支持相似性搜索JOIN关系型数据。
  • 复杂、融合SQL
    – 支持所有类型的工作负载和数据模型:
    Graph, Text, JSON, Spatial, Relational, etc.
    – 支持所有 SQL,包括复杂的运算和功能:
    Window analytic functions, stored procedures, aggregation
  • 与向量搜索组合成复杂的、融合的SQL

在企业应用中,相似性搜索Joins关系型数据非常常见。需要企业级基于成本的优化器来决定选择Join和向量索引使用等。就现有的专用向量数据库而言,不可能做到以上功能。

示例1:

返回其中包含与此查询文本相似的文本,其中该书的类型为“小说”,作者来自“危地马拉(Guatemala)”的前5本书

image.png

Select pageID from Authors, Books, Pages where Authors.authorID = Books.authorID and Books.bookID = Pages.bookID and Books.bookGenre = 'Fiction' and Author.authorCountry = 'Guatemala'
order by vector_distance(pageVec, :queryVec) fetch approx first 5 rows only;

示例2

显示过去5年中根据与所提供查询图像的相似性按年份分组的前3张照片。这些照片应该是在距离旧金山20英里的范围内拍摄的,至少有100人观看过。

image.png

2 简单使用Oracle Vector

环境

项目内容
OSOracleLinux 9.3
DBOracle DB 23c
HOSTNAMEoradb23c
CDBorcl
PDBorclpdb1

由于Oracle DB 21c开始,Oracle取消了Non-CDB,因此后续操作都在PDB中执行。

创建包含Vector数据类型的表

vector数据类型作为Oracle DB 23c默认自带的数据类型,不需要类似于其他数据库那样的额外操作。

create table flower_vec (id number primary key,flower_image blob,flower_vector vector);

image.png

插入向量数据

这里我从百度随便找了一张花的图片,复制到/home/oracle/flower下,文件名为flower_example.png。
image.png
首先先创建一个基础表用来生成图片的二进制数据:

create table flower (flower_image blob);

导入图片二进制信息:

create directory flower_dir as '/home/oracle/flower';declarel_bfile bfile;l_blob blob;
begininsert into flower(flower_image) values (empty_blob()) return flower_image into l_blob;l_bfile := bfilename ('FLOWER_DIR','flower_example.png');dbms_lob.open(l_bfile, dbms_lob.file_readonly);dbms_lob.loadfromfile(l_blob,l_bfile,dbms_lob.getlength(l_bfile));dbms_lob.close(l_bfile);commit;
end;
/

image.png
生成向量数据并导入:
这里使用Python来生成向量数据并插入,关于SQL EMBEDDING放在正式版出来以后再测试:

from towhee import pipe, ops
p = (pipe.input('path').map('path', 'img', ops.image_decode()).map('img', 'vec', ops.image_embedding.timm(model_name='resnet50')).output('vec')
)
vector_data = p('flower_example.png').get()-->最终生成2048维度的向量,这里感谢我同事郑安宁同学提供的脚本

由于2048维度的向量超过了sqlplus支撑长度(Oracle Vector是支持至少4096维度的),因此只截取了前10个向量:

insert into flower_vec select 1,flower_image,to_vector('[0.050895579159259796,0.002409987384453416,0,0.01872553676366806,0.01558636873960495,0,0.0197914931923151,0,0.00522683234885335]') from flower;

image.png
image.png

总结

本期介绍了Oracle Vector的其他特性意见简单的实战使用。下一期将依据Oracle Livelabs中的介绍进行进一步探索。
老规矩,知道写了些啥。

这篇关于数据库管理-第153期 Oracle Vector DB AI-05(20240221)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/734488

相关文章

MySQL数据库双机热备的配置方法详解

《MySQL数据库双机热备的配置方法详解》在企业级应用中,数据库的高可用性和数据的安全性是至关重要的,MySQL作为最流行的开源关系型数据库管理系统之一,提供了多种方式来实现高可用性,其中双机热备(M... 目录1. 环境准备1.1 安装mysql1.2 配置MySQL1.2.1 主服务器配置1.2.2 从

SpringBoot基于注解实现数据库字段回填的完整方案

《SpringBoot基于注解实现数据库字段回填的完整方案》这篇文章主要为大家详细介绍了SpringBoot如何基于注解实现数据库字段回填的相关方法,文中的示例代码讲解详细,感兴趣的小伙伴可以了解... 目录数据库表pom.XMLRelationFieldRelationFieldMapping基础的一些代

深入理解Mysql OnlineDDL的算法

《深入理解MysqlOnlineDDL的算法》本文主要介绍了讲解MysqlOnlineDDL的算法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小... 目录一、Online DDL 是什么?二、Online DDL 的三种主要算法2.1COPY(复制法)

Linux创建服务使用systemctl管理详解

《Linux创建服务使用systemctl管理详解》文章指导在Linux中创建systemd服务,设置文件权限为所有者读写、其他只读,重新加载配置,启动服务并检查状态,确保服务正常运行,关键步骤包括权... 目录创建服务 /usr/lib/systemd/system/设置服务文件权限:所有者读写js,其他

mysql8.0.43使用InnoDB Cluster配置主从复制

《mysql8.0.43使用InnoDBCluster配置主从复制》本文主要介绍了mysql8.0.43使用InnoDBCluster配置主从复制,文中通过示例代码介绍的非常详细,对大家的学习或者... 目录1、配置Hosts解析(所有服务器都要执行)2、安装mysql shell(所有服务器都要执行)3、

k8s中实现mysql主备过程详解

《k8s中实现mysql主备过程详解》文章讲解了在K8s中使用StatefulSet部署MySQL主备架构,包含NFS安装、storageClass配置、MySQL部署及同步检查步骤,确保主备数据一致... 目录一、k8s中实现mysql主备1.1 环境信息1.2 部署nfs-provisioner1.2.

MySQL中VARCHAR和TEXT的区别小结

《MySQL中VARCHAR和TEXT的区别小结》MySQL中VARCHAR和TEXT用于存储字符串,VARCHAR可变长度存储在行内,适合短文本;TEXT存储在溢出页,适合大文本,下面就来具体的了解... 目录一、VARCHAR 和 TEXT 基本介绍1. VARCHAR2. TEXT二、VARCHAR

MySQL中C接口的实现

《MySQL中C接口的实现》本节内容介绍使用C/C++访问数据库,包括对数据库的增删查改操作,主要是学习一些接口的调用,具有一定的参考价值,感兴趣的可以了解一下... 目录准备mysql库使用mysql库编译文件官方API文档对象的创建和关闭链接数据库下达sql指令select语句前言:本节内容介绍使用C/

mybatis直接执行完整sql及踩坑解决

《mybatis直接执行完整sql及踩坑解决》MyBatis可通过select标签执行动态SQL,DQL用ListLinkedHashMap接收结果,DML用int处理,注意防御SQL注入,优先使用#... 目录myBATiFBNZQs直接执行完整sql及踩坑select语句采用count、insert、u

MySQL之搜索引擎使用解读

《MySQL之搜索引擎使用解读》MySQL存储引擎是数据存储和管理的核心组件,不同引擎(如InnoDB、MyISAM)采用不同机制,InnoDB支持事务与行锁,适合高并发场景;MyISAM不支持事务,... 目录mysql的存储引擎是什么MySQL存储引擎的功能MySQL的存储引擎的分类查看存储引擎1.命令