數據庫管理-第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.pswp.cn/news/713169.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/713169.shtml
英文地址,請注明出處:http://en.pswp.cn/news/713169.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【axiox】前后端接口通訊數據交互

重要全局配置: axios.create(); 設置axios請求的公共配置信息。 service.interceptors.request.use((config)>{}) 請求攔截器 service.interceptors.response.use((res)>{},(err)>{}) 響應攔截器 const source axios.CancelToken.source(); 用…

oracle RAC節點重構

一、清除集群上二節點的節點信息 1、刪除實例 dbca或靜默: [oraclerac1 ~]$ dbca -silent -deleteinstance -nodelist rac2 -gdbname orcl -instancename orcl2 -sysdbausername sys -sysdbapassword oracledbca-實例管理-刪除節實例-選擇服務輸入密碼-選擇inactiv…

基于小波神經網絡的數據分類算法matlab仿真

目錄 1.程序功能描述 2.測試軟件版本以及運行結果展示 3.核心程序 4.本算法原理 1.程序功能描述 基于小波神經網絡的數據分類算法。輸入為5個特征值,輸出為判斷(是,否)。拿50組數據對本算法作為訓練組,后30組數據作…

B樹、B+樹、紅黑樹的定義、之間的區別、優缺點、數據結構、應用等

目錄 B樹 定義 數據結構 優點 缺點 應用 B樹 定義 數據結構 優點 缺點 應用 紅黑樹 定義 數據結構 優點 缺點 應用 B樹與B樹與紅黑樹的區別 B樹 定義 B樹是一種自平衡的多路搜索樹,它可以有多個子節點,不同于二叉樹的是,一…

深入學習NumPy庫在數據分析中的應用場景

在數據科學與機器學習領域,NumPy(Numerical Python)是一個經常被提及的重要工具。它是Python語言中一個非常強大的庫,提供了高性能的多維數組對象以及用于處理這些數組的工具。NumPy不僅僅是一個用于數值計算的庫,它還…

【PCB】用透明膠帶制作印制板

用透明膠帶作保護層來制作印制電路的方法,簡單實用,作出的電路板質量較好,具體作法如下: (1)裁下一塊敷銅板,用水磨砂紙將其四周毛刺磨平,用去污粉處理敷銅板表面上的污垢&#xff…

基于粒子群優化算法的圖象聚類識別matlab仿真

目錄 1.程序功能描述 2.測試軟件版本以及運行結果展示 3.核心程序 4.本算法原理 5.完整程序 1.程序功能描述 基于粒子群優化算法的圖象聚類識別。通過PSO優化方法,將數字圖片的特征進行聚類,從而識別出數字0~9. 2.測試軟件版本以及運行結果展示 M…

Hadoop之HDFS——【模塊一】元數據架構

一、元數據是什么 在HDFS中,元數據主要指的是文件相關的元數據,通過兩種形式來進行管理維護,第一種是內存,維護集群數據的最新信息,第二種是磁盤,對內存中的信息進行維護與持久化,由namenode管理維護。從廣義的角度來說,因為namenode還需要管理眾多的DataNode結點,因…

【測試開發面試復習(一)】計算機網絡:應用層詳解(P2)補充ing

復習自用,若有錯漏,歡迎一起交流一下~~ 一、高頻面試題記錄 uri 和 url 的區別 ? dns 是啥工作原理,主要解析過程是啥? 用戶輸入網址到顯示對應頁面的全過程是啥? http 頭部包含哪些信息? http…

IEEE Trans. On Robotics ?“受護理人員啟發的雙臂機器人穿衣”研究工作

開發能夠協助穿衣的輔助機器人,可以極大地改善老年人和殘疾人的生活。然而,大多數機器人穿衣策略只考慮使用單個機器人,這大大限制了穿衣輔助的性能。事實上,專業護理人員是通過雙臂來完成這項任務的。受其啟發,我們提…

【YOLO v5 v7 v8 小目標改進】Non-local 注意力實現非局部神經網絡,解決長空間和時間數據依賴問題

Non-local 注意力實現非局部神經網絡,解決長空間和時間數據依賴問題 提出背景長距離技術對比Non-local Block是怎么設計Non-local 神經網絡效果 小目標漲點YOLO v5 魔改YOLO v7 魔改YOLO v8 魔改 提出背景 論文:https://arxiv.org/pdf/1711.07971.pdf …

用 tensor-parallel 多卡并發推理大模型

利用 tensor-parallel 把模型訓練與推理的 workload 平均分布到多塊 GPU,一方面可以提高推理速度,另一方面 vram 的負載平衡也讓復雜的 prompt 能被輕松處理。 import 相關的 libs: # torch version 2.0.0 import torch # tensor-parallel …

抽象類與抽象方法

文章目錄 抽象類抽象類的特點 抽象方法抽象方法的特點 模板設計模式模板設計模式能解決的問題示例 #抽象類與抽象方法 抽象類 用abstract關鍵字來修飾一個類時,這個類就叫抽象類。 public abstract 類名{... }抽象類的特點 1)抽象類不能被實例化。 2&…

AOP(黑馬學習筆記)

AOP基礎 學習完spring的事務管理之后,接下來我們進入到AOP的學習。 AOP也是spring框架的第二大核心,我們先來學習AOP的基礎。 在AOP基礎這個階段,我們首先介紹一下什么是AOP,再通過一個快速入門程序,讓大家快速體驗A…

JAVASE初認識

1.初認識其結構 1.源文件(擴展名為*.java):源文件帶有類的定義。類用來表示程序的一個組件,小程序或許只會有一個類。類的內容必須包含在花括號里面。 2.類:類中帶有一個或多個方法。方法必須在類的內部聲明。 3.方法&#xff1…

vue3創建h5 項目使用rem做響應式的配置

第一步 安裝依賴: npm install amfe-flexible -S npm install postcss-px2rem -S第二步 main.ts文件中導入 import "amfe-flexible/index.js";第三步 進行配置: vue3 項目中創建 postcss.cinfig.js文件,這里是基于設計稿是750px…

gRPC知識歸檔

文章目錄 gRPC知識歸檔gRPC原理什么是gRPCgRPC的特性gRPC支持語言gRPC使用場景gRPC設計的動機和原則 數據封裝和數據傳輸問題網絡傳輸中的內容封裝和數據體積問題JSONProtobuf(微服務之間的服務器調用,一般采用二進制序列化,比如protobuf&…

精讀《React Hooks 最佳實踐》

簡介 React 16.8 于 2019.2 正式發布,這是一個能提升代碼質量和開發效率的特性,筆者就拋磚引玉先列出一些實踐點,希望得到大家進一步討論。 然而需要理解的是,沒有一個完美的最佳實踐規范,對一個高效團隊來說&#x…

【airtest】自動化入門教程(二)airtest操作

目錄 一、touch 二、wait 三、swipe 四、exists 五、text 六、keyevent 七、snapshot 八、sleep 九、斷言 9.1 assert_exists 9.2 assert_not_exists 9.3 assert_equal 9.4 assert_not_equal 前言:本文主要針對aritest部分的基礎操作,aritest是一個跨平…

網絡編程第二天

1.基于TCP的通信(面向連接的通信) 服務器代碼實現&#xff1a; #include <myhead.h> #define IP "192.168.126.91" #define PORT 9999 int main(int argc, const char *argv[]) {//1、創建套接字int sfd-1;if((sfdsocket(AF_INET,SOCK_STREAM,0))-1){perror(…