数据库管理-第157期 Oracle Vector DB AI-08(20240301)

数据库管理157期 2024-03-01

  • 数据库管理-第157期 Oracle Vector DB & AI-08(20240301)
    • 1 创建示例向量
    • 2 查找最近向量
    • 3 基于向量簇组的最近向量查询
    • 总结

数据库管理-第157期 Oracle Vector DB & AI-08(20240301)

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

进入新的一个月,昨天可能是很多国产数据库开始较大规模使用遇到的第一个闰二月,听说有些国产数据库直接跳过了2月29日来到了3月1日,挺好玩的。
本期内容,模拟在一个二维平面上进行近似查询。

1 创建示例向量

按照下图内容,以X和Y轴创建对应的向量信息:
image.png

CREATE TABLE IF NOT EXISTS vt1
         (id   NUMBER NOT NULL,
          v    VECTOR(2, FLOAT32),
               PRIMARY KEY (id)
         );

DESC vt1;

image.png

INSERT INTO vt1 VALUES (1, '[3, 3]'),  (2, '[5, 3]'),  (3, '[7, 3]'),
                       (4, '[3, 5]'),  (5, '[5, 5]'),  (6, '[7, 5]'),
                       (7, '[3, 7]'),  (8, '[5, 7]'),  (9, '[7, 7]');

COMMIT;

SELECT * FROM vt1 ORDER BY id;

image.png

2 查找最近向量

1.以下图方式,查找q点(0,5)最近的3个向量点:
image.png
从图中实际情况来看最近的为2,1,3或者2,3,1。

SELECT id
FROM   vt1
ORDER  BY  vector_distance(vector('[5, 0]'), v)
FETCH FIRST 3 ROWS ONLY;

image.png
2.以下图方式,查找q点(3,0)最近的3个向量点:
image.png
从图中实际情况来看最近的为1,2,3。

SELECT id
FROM   vt1
ORDER  BY  vector_distance(vector('[3, 0]'), v)
FETCH FIRST 3 ROWS ONLY;

image.png
3.以下图方式,查找q点(3,9)最近的3个向量点:
image.png
从图中实际情况来看最近的为7,8,4。

SELECT id
FROM   vt1
ORDER  BY  vector_distance(vector('[3, 9]'), v)
FETCH FIRST 3 ROWS ONLY;

image.png
4.以下图方式,查找q点(3.1,6.9)最近的4个向量点:
image.png
从图中实际情况来看最近的为7,4,8,5或者7,8,4,5。

SELECT id
FROM   vt1
ORDER  BY vector_distance(vector('[3.1, 6.9]'), v)
FETCH FIRST 4 ROWS ONLY;

image.png

3 基于向量簇组的最近向量查询

目前,vector_distance的结果依赖于两个内容:

  • 对于向量簇来说,查询向量所在的位置,以特定向量或坐标为中心,比如(5,5)
  • 结果集有多少行

然而,向量数据通常由一组向量簇组成,并且数据往往不是均匀分布的。也可能存在零个或多个数据簇。因此,向量簇往往表示相似数据的组。例如:地址、汽车类型、人名、报告或书籍等。
1.下面的示例有5个向量簇。因此我们会在vt1表中添加其他4组向量簇。这里你会发现一个向量簇中有负值(或坐标)。
image.png

INSERT INTO vt1 VALUES (21, '[9, -1]'),
                       (22, '[10, -1]'),
                       (23, '[11, -1]'),
                       (24, '[9, -3]'),
                       (25, '[10, -4]'),
                       (26, '[12, -3]') ;
INSERT INTO vt1 VALUES (31, '[13, 6]'),
                       (32, '[14, 7]'),
                       (33, '[14, 4]'),
                       (34, '[16, 6]') ;
INSERT INTO vt1 VALUES (41, '[0, 7]'),
                       (42, '[1, 7]'),
                       (43, '[1, 6]'),
                       (44, '[0, 5]'),
                       (45, '[1, 5]') ;
INSERT INTO vt1 VALUES (51, '[5, 9]'),
                       (52, '[7, 9]'),
                       (53, '[6, 10]'),
                       (54, '[5, 11]'),
                       (55, '[7, 11]') ;

COMMIT ;

SELECT * FROM vt1;

image.png
image.png
2.以下图方式,查找q点(16,4)最近的3个向量点:
image.png
从图中实际情况来看,我们希望结果是3x。

SELECT id
FROM   vt1
ORDER  BY vector_distance(vector('[16, 4]'), v)
FETCH FIRST 3 ROWS ONLY;

image.png
3.以下图方式,查找q点(7,-5)最近的5个向量点:
image.png
从图中实际情况来看,我们希望结果是2x。

SELECT id
FROM   vt1
ORDER  BY vector_distance(vector('[7, -5]'), v)
FETCH FIRST 5 ROWS ONLY;

image.png
4.以下图方式,查找q点(6,10)最近的5个向量点:
image.png
从图中实际情况来看,我们希望结果是5x。

SELECT id
FROM   vt1
ORDER  BY vector_distance(vector('[6, 10]'), v)
FETCH FIRST 5 ROWS ONLY;

image.png
5.以下图方式,查找q点(6,8)最近的4个向量点:
image.png
从图中实际情况来看,我们希望结果是8,9,51,52。

SELECT id
FROM   vt1
ORDER  BY vector_distance(vector('[6, 8]'), v)
FETCH FIRST 4 ROWS ONLY;

image.png
6.以下图方式,查找q点(2.5,8.5)最近的4个向量点:
image.png
从图中实际情况来看,我们希望结果是x,4x,5x。

SELECT id
FROM   vt1
ORDER  BY vector_distance(vector('[2.5, 8.5]'), v)
FETCH FIRST 4 ROWS ONLY;

image.png

总结

本期通过多个实际案例演示了Oracle Vector DB中如何实现近似查询。
老规矩,知道写了些啥。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/421715.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

蓝桥杯-单片机组基础5——外部中断与LED的控制(附小蜜蜂课程代码)

蓝桥杯单片机组备赛指南请查看这篇文章:戳此跳转蓝桥杯备赛指南文章 本文章针对蓝桥杯-单片机组比赛开发板所写,代码可直接在比赛开发板上使用。 型号:国信天长4T开发板(绿板),芯片:IAP15F2K6…

二叉搜索树在线OJ题讲解

二叉树创建字符串 我们首先进行题目的解读: 大概意思就是用()把每个节点的值给括起来,然后再经过一系列的省略的来得到最后的结果 大家仔细观察题目给出的列子就可以发现,其实这个题目可以大致分为三种情况&#xff1…

git安装与使用4.3

一、git的安装 1、下载git包 下载git包url:https://git-scm.com/download/win 下载包分为:64位和32位 2、点击安装包 2、选择安装路径 3、 点击下一步 4、点击next 5、点击next 6、点击next 7、 8、 9、 10、 11、 12、在桌面空白处,右键…

服务器上部署WEb服务方法

部署Web服务在服务器上是一个比较复杂的过程。这不仅仅涉及到配置环境、选择软件和设置端口,更有众多其它因素需要考虑。以下是在服务器上部署WEb服务的步骤: 1. 选择服务器:根据项目规模和预期访问量,选择合适的服务器类型和配置…

2024.02.29作业

1. TCP模型 server #include "test.h"#define SER_IP "192.168.191.128" #define SER_PORT 9999int main(int argc, char const *argv[]) {int sfd -1;sfd socket(AF_INET, SOCK_STREAM, 0);if (-1 sfd){perror("socket error");return -1;…

Tomcat部署Web服务器及基础功能配置

前言 Tomcat作为一款网站服务器,目前市面上Java程序使用的比较多,作为运维工人,有必要了解一款如何去运行Java环境的网站服务。 目录 一、Java相关介绍 1. Java历史 2. Java跨平台服务 3. Java实现动态网页功能 3.1 servelt 3.2 jsp …

【排序算法】基数排序

一:基本概念 1.1 基数排序(桶排序)介绍 基数排序(radix sort)属于“分配式排序”(distribution sort),又称“桶子法”(bucket sort)或bin sort,顾名思义,它是…

2024最新ChatGPT网站源码AI绘画系统:SparkAI系统(Ai智能问答系统和Midjourney绘画系统)

一、前言 SparkAi创作系统是基于ChatGPT进行开发的Ai智能问答系统和Midjourney绘画系统,支持OpenAI-GPT全模型国内AI全模型。本期针对源码系统整体测试下来非常完美,那么如何搭建部署AI创作ChatGPT?小编这里写一个详细图文教程吧。已支持GPT…

2.模拟问题——2.使用二维数组输出图形

用二维数组描述图形 首先要计算出整个输出的方框大小&#xff0c;从而判定相应关键循环点 #include <cstdio> char arr[1000][3000]; int main() {int h;//初始化&#xff0c;全部内部填空格while(scanf("%d",&h) ! EOF){for (int i 0; i < h; i) {f…

【JavaEE】_Spring MVC项目之建立连接

目录 1. Spring MVC程序编写流程 2. 建立连接 2.1 RequestMapping注解介绍 2.2 RequestMapping注解使用 2.2.1 仅修饰方法 2.2.2 修饰类与方法 2.3 关于POST请求与GET请求 2.3.1 GET请求 2.3.2 POST请求 2.3.3 限制请求方法 1. Spring MVC程序编写流程 1. 建立连接&…

vmware虚拟机centos中/dev/cl_server8/root 空间不够

在使用vmware时发现自己的虚拟机的/dev/cl_server8/root空间不够了&#xff0c;没办法安装新的服务。所以查了一下改空间的办法。 1.在虚拟机关闭的状态下&#xff0c;选中需要扩容的虚拟机->设置->硬件-> 硬盘->扩展->填写扩大到的值。 2.打开虚拟机&#xff…

力扣SQL50 寻找用户推荐人 查询

Problem: 584. 寻找用户推荐人 思路 null不可以直接与数值类比较 Code select name from Customer where ifnull(referee_id,0) ! 2;

Day08-【Java SE进阶】面向对象高级二——多态、final、抽象类、接口

一、多态 对象多态多态是在继承/实现情况下的一种现象&#xff0c;表现为对象多态和行为多态。 对象多态&#xff1a;一个人可以是学生也可以是老师&#xff0c;学生和老师都是人的子类&#xff0c;创建人对象让其指向不同的对象&#xff0c;称为对象多态&#xff0c;这里是向…

【办公类-25-01】20240304 UIBOT上传 ”班级主页-主题知识“

作品展示&#xff1a; 一、背景需求&#xff1a; 本学期制作了 “信息窗主题说明”合并A4内容 【办公类-22-07】周计划系列&#xff08;3-1&#xff09;“信息窗主题知识&#xff08;提取&#xff09;” &#xff08;2024年调整版本&#xff09;-CSDN博客文章浏览阅读797次&a…

深度学习 精选笔记(9)分布偏移

学习参考&#xff1a; 动手学深度学习2.0Deep-Learning-with-TensorFlow-bookpytorchlightning ①如有冒犯、请联系侵删。 ②已写完的笔记文章会不定时一直修订修改(删、改、增)&#xff0c;以达到集多方教程的精华于一文的目的。 ③非常推荐上面&#xff08;学习参考&#x…

在学习云原生的时候,一直会报错ImagePullBackOff Back-off pulling image

在学习云原生的时候&#xff0c;一直会报错 &#xff08;见最后几张图&#xff09; ImagePullBackOff Back-off pulling image 然后我就在像。这个配置的镜像是不是可以自己直接下载&#xff0c;但是好像不怎么搜索得到 然后就在想&#xff0c;这个lfy_k8s_images到底是个啥玩…

c++面试一

1.#include使用 在C/C中&#xff0c;#include 预处理指令用于包含头文件&#xff0c;这些头文件通常包含了函数声明、宏定义以及其他的声明和定义。#include 指令后面跟着的文件名可以使用双引号 "" 或尖括号 <> 来指定&#xff0c;它们之间有一些区别。 双引…

MyBatis概述

三层架构 表现层&#xff1a;直接和前端交互&#xff0c;接受AJAX请求&#xff0c;返回json数据业务层&#xff1a;一是处理前端的请求&#xff0c;二是返回持久层获取的数据持久层(数据访问层)&#xff1a;直接操作数据库&#xff0c;完成CRUD&#xff0c;返回数据给业务层 …

Tomcat服务部署、优化

一 Tomcat的基本介绍 Tomcat概念 Tomcat 服务器是一个免费的开放源代码的Web 应用服务器&#xff0c;属于轻量级应用服务器&#xff0c;在中小型系统和并发访问用户不是很多的场合下被普遍使用&#xff0c;是开发和调试 JSP 程序的首选。 当在一台机器上配置好Apache 服务器…

宋Pro 荣耀版10.98万元起,开启“清场”模式!

2024年3月1日&#xff0c;比亚迪荣耀全家桶再添大将&#xff0c;万众期待的宋Pro DM-i荣耀版以10.98万元起的价格震撼推出。新车共推出5款车型&#xff0c;官方指导价10.98万元——13.98万元&#xff0c;重新锚定A级SUV市场新价值&#xff0c;在该细分市场正式拉开“电比油低”…
最新文章