資料庫管理-第157期 Oracle Vector DB & AI-08(20240301)
資料庫管理-第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軸建立對應的向量資訊:
CREATE TABLE IF NOT EXISTS vt1 (id NUMBER NOT NULL, v VECTOR(2, FLOAT32), PRIMARY KEY (id) ); DESC vt1;
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;
2 查詢最近向量
1.以下圖方式,查詢q點(0,5)最近的3個向量點:
從圖中實際情況來看最近的為2,1,3或者2,3,1。
SELECT idFROM vt1ORDER BY vector_distance(vector('[5, 0]'), v)FETCH FIRST 3 ROWS ONLY;
2.以下圖方式,查詢q點(3,0)最近的3個向量點:
從圖中實際情況來看最近的為1,2,3。
SELECT idFROM vt1ORDER BY vector_distance(vector('[3, 0]'), v)FETCH FIRST 3 ROWS ONLY;
3.以下圖方式,查詢q點(3,9)最近的3個向量點:
從圖中實際情況來看最近的為7,8,4。
SELECT idFROM vt1ORDER BY vector_distance(vector('[3, 9]'), v)FETCH FIRST 3 ROWS ONLY;
4.以下圖方式,查詢q點(3.1,6.9)最近的4個向量點:
從圖中實際情況來看最近的為7,4,8,5或者7,8,4,5。
SELECT idFROM vt1ORDER BY vector_distance(vector('[3.1, 6.9]'), v)FETCH FIRST 4 ROWS ONLY;
3 基於向量簇組的最近向量查詢
目前,vector_distance的結果依賴於兩個內容:
- 對於向量簇來說,查詢向量所在的位置,以特定向量或座標為中心,比如(5,5)
- 結果集有多少行
然而,向量資料通常由一組向量簇組成,並且資料往往不是均勻分佈的。也可能存在零個或多個資料簇。因此,向量簇往往表示相似資料的組。例如:地址、汽車型別、人名、報告或書籍等。
1.下面的示例有5個向量簇。因此我們會在vt1表中新增其他4組向量簇。這裡你會發現一個向量簇中有負值(或座標)。
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;
2.以下圖方式,查詢q點(16,4)最近的3個向量點:
從圖中實際情況來看,我們希望結果是3x。
SELECT idFROM vt1ORDER BY vector_distance(vector('[16, 4]'), v)FETCH FIRST 3 ROWS ONLY;
3.以下圖方式,查詢q點(7,-5)最近的5個向量點:
從圖中實際情況來看,我們希望結果是2x。
SELECT idFROM vt1ORDER BY vector_distance(vector('[7, -5]'), v)FETCH FIRST 5 ROWS ONLY;
4.以下圖方式,查詢q點(6,10)最近的5個向量點:
從圖中實際情況來看,我們希望結果是5x。
SELECT idFROM vt1ORDER BY vector_distance(vector('[6, 10]'), v)FETCH FIRST 5 ROWS ONLY;
5.以下圖方式,查詢q點(6,8)最近的4個向量點:
從圖中實際情況來看,我們希望結果是8,9,51,52。
SELECT idFROM vt1ORDER BY vector_distance(vector('[6, 8]'), v)FETCH FIRST 4 ROWS ONLY;
6.以下圖方式,查詢q點(2.5,8.5)最近的4個向量點:
從圖中實際情況來看,我們希望結果是x,4x,5x。
SELECT idFROM vt1ORDER BY vector_distance(vector('[2.5, 8.5]'), v)FETCH FIRST 4 ROWS ONLY;
總結
本期透過多個實際案例演示了Oracle Vector DB中如何實現近似查詢。
老規矩,知道寫了些啥。
來自 “ ITPUB部落格 ” ,連結:https://blog.itpub.net/31466763/viewspace-3007790/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 資料庫管理-第14期 Oracle Vector DB & AI-01(20240210)資料庫OracleAI
- 資料庫管理-第152期 Oracle Vector DB & AI-04(20240220)資料庫OracleAI
- 資料庫管理-第221期 Oracle的高可用-04(20240717)資料庫Oracle
- DB2 資料庫日常管理DB2資料庫
- ORACLE資料庫修改資料庫名db_nameOracle資料庫
- 資料庫管理-第143期 Oracle DB 19c需要調整的基本引數V2(20240202)資料庫Oracle
- Oracle資料庫管理Oracle資料庫
- 資料庫管理-第142期 DBA?DBA!(20240131)資料庫
- 資料庫管理-第122期 配置Halo資料庫(202301204)資料庫
- 資料庫管理-第124期 資料庫圈的夜郎自大,危!(202301213)資料庫
- 資料庫管理-第120期 初探Halo資料庫(202301201)資料庫
- 資料庫管理-第145期 最強Oracle監控EMCC深入使用-02(20240205)資料庫Oracle
- DB2--資料庫管理系統簡介DB2資料庫
- 資料庫管理工具Chat2DB資料庫
- DB資料庫面試資料庫面試
- aix下oracle資料庫管理AIOracle資料庫
- ORACLE資料庫的中的db-linkOracle資料庫
- 資料庫對比SQL SERVER 、 ORACLE、DB2資料庫SQLServerOracleDB2
- 第8章 理解自動資料庫管理資料庫
- DB2中資料庫管理頁限制(PAGESIZE)DB2資料庫
- 資料庫管理-第127期 LSM Tree(202301225)資料庫
- 資料庫管理-第123期 Oracle相關兩個引數(202301205)資料庫Oracle
- Oracle 資料庫 10g:自我管理資料庫Oracle資料庫
- [原創] Oracle資料庫資源管理Oracle資料庫
- DB2資料庫與Oracle資料庫之間遠端複製(轉)DB2資料庫Oracle
- 第1章 Oracle資料庫簡介-DBMSOracle資料庫
- 第1章 Oracle資料庫簡介-RMOracle資料庫
- db2 資料庫DB2資料庫
- 第 67 期 Go database/sql 資料庫連線池分析GoDatabaseSQL資料庫
- Oracle DB 資料準備Oracle
- Oracle DG管理資料庫屬性Oracle資料庫
- Oracle資料庫索引管理規範Oracle資料庫索引
- Oracle資料庫管理 版主空間Oracle資料庫
- oracle資料庫系統管理(轉)Oracle資料庫
- Oracle OCP IZ0-053 Q157(DB_BLOCK_CHECKING)OracleBloC
- 《MySQL 入門教程》第 03 篇 管理資料庫MySql資料庫
- DB2多分割槽資料庫的常用管理NWDB2資料庫
- Oracle資料庫智慧運維標準化工藝研究-orastar-DIY資料庫運維工具-第1期 導論篇Oracle資料庫運維AST