数据库管理-第154期 Oracle Vector DB AI-06(20240223)
数据库管理154期 2024-02-23
- 数据库管理-第154期 Oracle Vector DB & AI-06(20240223)
- 1 环境准备
- 创建表空间及用户
- TNSNAME配置
- 2 Oracle Vector的DML操作
- 创建示例表
- 插入基础数据
- DML操作
- UPDATE操作
- DELETE操作
- 3 多Vector列表
- 4 固定维度的向量操作
- 5 不同向量格式的表
- 总结
数据库管理-第154期 Oracle Vector DB & AI-06(20240223)
作者:胖头鱼的鱼缸(尹海文)
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 环境准备
由于上一期的基本演示是用sys用户执行的,众所周知在生产中不要在任何生产数据放在sys用户和system、sysaux等系统表空间中。为了避免往后有人产生误解,今天重新配置下环境并操作。
创建表空间及用户
create tablespace vector_tbs datafile size 500m autoextend on next 500m maxsize unlimited;
create user vector identified by vector account unlock;
grant DB_DEVELOPER_ROLE to vector;
alter user vector default tablespace vector_tbs quota unlimited on vector_tbs;

后续操作都将在orclpdb1中的vector用户执行,数据将存放在vector_tbs表空间中。
TNSNAME配置
/u01/app/oracle/product/23.0.0/dbhome_1/network/admin/tnsnames.ora
# 添加以下内容
ORCLPDB1 =(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = oradb23c)(PORT = 1521))(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = orclpdb1)))

sqlplus vector/vector@orclpdb1

2 Oracle Vector的DML操作
创建示例表
CREATE TABLE IF NOT EXISTS t1( id NUMBER PRIMARY KEY,name VARCHAR2(32),v1 VECTOR);DESC t1;

插入基础数据
INSERT INTO t1 VALUES (1, 'A', '[1.1]'),(2, 'B', '[2.2]'),(3, 'C', '[3.3]'),(4, 'D', '[4.4]'),(5, 'E', '[5.5]');commit;SELECT * FROM t1;


DML操作
UPDATE操作
UPDATE t1 SET v1 = '[2.9]' WHERE id = 2;commit;SELECT * FROM t1 WHERE id = 2;

DELETE操作
DELETE FROM t1 WHERE id IN (1, 3);commit;SELECT * FROM t1;

3 多Vector列表
在Oracle Vector DB中,一张表可以拥有多个vector数据类型的列,可以满足更多的应用场景。
CREATE TABLE IF NOT EXISTS t2( id NUMBER NOT NULL,name VARCHAR2(32),v1 VECTOR,v2 VECTOR,v3 VECTOR,PRIMARY KEY (id));DESC t2;

INSERT INTO t2 VALUES(1,'One','[2.3, 4.5, 0.1]','[1.3]','[4.981, -6.3]');commit;SELECT * FROM t2;


4 固定维度的向量操作
VECTOR (<optional NUM of dimensions>, <optional format for dimension values>)
维度值的类型可以是FLOAT32, FLOAT64, 或者 INT8
之前介绍vector数据类型的时候,有向量维度数量和向量维度精度两个可选配置内容,Oracle Vector DB支持64K个向量维度,而且当向量维度数量配置之后,这个数量将作为一个check约束。下面是一些AI模型中vector embeddings的维度数量:
- OpenAI text-embedding-ada-002 = 1536 dimensions
- Cohere Embed-English-v2.0 = 4096 dimensions
- Cohere Embed-English-Light-v2.0 = 1024 dimensions
- Cohere Embed-Multilingual-v2.0 = 768 dimensions
- open-source all-MiniLM-L6-v2 = 384 dimensions
CREATE TABLE IF NOT EXISTS t3( v VECTOR(3, FLOAT32) );DESC t3;

INSERT INTO t3 VALUES ('[1.1, 2.2, 3.3]');
INSERT INTO t3 VALUES ('[1.2, 2.3, 3.4]');
INSERT INTO t3 VALUES ('[1.2, 2.3, 3.4]');
INSERT INTO t3 VALUES ('[1.3]');
INSERT INTO t3 VALUES ('[1.3, 2.4, 3.5, 4.1]');
INSERT INTO t3 VALUES ('[1.4, 2.5, a]');
这里前三条数据可以正常插入:

后三条数据因为向量维度数量约束限制插入失败:

5 不同向量格式的表
既然Oracle Vector DB支持有多个Vector数据类型的表,那么每个Vector列的配置格式也是可以不同的。
CREATE TABLE IF NOT EXISTS t4( v1 VECTOR(3, float32),v2 VECTOR(2, float64),v3 VECTOR(1, int8),v4 VECTOR(1, *),v5 VECTOR(*, float32),v6 VECTOR(*, *),v7 VECTOR);DESC t4;

INSERT INTO t4 VALUES ('[1.1, 2.2, 3.3]','[1.1, 2.2]','[7]','[9]','[1.1, 2.2, 3.3, 4.4, 5.5]','[1.1, 2.2]','[1.1, 2.2, 3.3, 4.4, 5.5, 6.6]');commit;select * from t4;

这里附上Oracle Vector DB中Vector数据类型格式的解释:
- vector(*, float64) 任何数量的维度,维度值类型为float64
- vector(5, *) 5个维度数量,可以使用任意维度值类型
- vector(*, *) 任意维度数量,可以使用任意维度值类型
- vector 任意维度数量,维度值类型为float32
- vector(1, int8) 1个维度数量,维度值类型为int8
- int8 是一个独立的byte
总结
本期简单介绍了Oracle Vector DB的DML操作,向量维度与维度类型以及多Vector列表的相关内容。
老规矩,知道写了些啥。
相关文章:
数据库管理-第154期 Oracle Vector DB AI-06(20240223)
数据库管理154期 2024-02-23 数据库管理-第154期 Oracle Vector DB & AI-06(20240223)1 环境准备创建表空间及用户TNSNAME配置 2 Oracle Vector的DML操作创建示例表插入基础数据DML操作UPDATE操作DELETE操作 3 多Vector列表4 固定维度的向量操作5 不…...
解决uni-app vue3 nvue中使用pinia页面空白问题
main.js中,最关键的就是Pinia要return出去的问题,至于原因嘛! 很忙啊,先用着吧 import App from ./App import * as Pinia from pinia import { createSSRApp } from vue export function createApp() {const app createSSRApp(App);app.us…...
不用加减乘除做加法
1.题目: 写一个函数,求两个整数之和,要求在函数体内不得使用、-、*、/四则运算符号。 数据范围:两个数都满足 −10≤�≤1000−10≤n≤1000 进阶:空间复杂度 �(1)O(1),时间复杂度 &am…...
旅游组团自驾游拼团系统 微信小程序python+java+node.js+php
随着社会的发展,旅游业已成为全球经济中发展势头最强劲和规模最大的产业之一。为方便驴友出行,寻找旅游伙伴,更好的规划旅游计划,开发一款自驾游拼团小程序,通过微信小程序发起自驾游拼团,吸收有车或无车驴…...
LeetCode 第41天 | 背包问题 二维数组 一维数组 416.分割等和子集 动态规划
46. 携带研究材料(第六期模拟笔试) 题目描述 小明是一位科学家,他需要参加一场重要的国际科学大会,以展示自己的最新研究成果。他需要带一些研究材料,但是他的行李箱空间有限。这些研究材料包括实验设备、文献资料和实…...
Ubuntu20.04和Windows11下配置StarCraft II环境
1.Ubuntu20.04 根据下面这篇博客就可以顺利安装: 强化学习实战(九) Linux下配置星际争霸Ⅱ环境https://blog.csdn.net/weixin_39059031/article/details/117247635?spm1001.2014.3001.5506 Ubuntu下显示游戏界面目前还没有解决掉。 大家可以根据以下链接看看能…...
【NCom】:通过高温气相合成调节Pt-CeO2相互作用以提高晶格氧的还原性
摘要:在这项工作中,我们比较了通过两种方法制备的 Pt 单原子催化剂(SAC)的 CO 氧化性能:(1)传统的湿化学合成(强静电吸附strong electrostatic adsorption–SEA)…...
git 将一个分支的提交移动到另一个分支
假设想把分支A上的最后一部分commit移动到分支B之上: 首先切到分支B git checkout B然后执行如下指令,commit id 为A分支上,需要移动的那些提交 git cherry-pick <commit id> ( <commit id> 可多个)中途可能遇到一些…...
vue3 实现 el-pagination页面分页组件的封装以及调用
示例图 一、组件代码 <template><el-config-provider :locale"zhCn"><el-pagination background class"lj-paging" layout"prev, pager, next, jumper" :pager-count"5" :total"total":current-page"p…...
#FPGA(IRDA)
1.IDE:Quartus II 2.设备:Cyclone II EP2C8Q208C8N 3.实验:IRDA(仿真接收一个来自0x57地址的数据0x22 (十进制34)) 4.时序图: 5.步骤 6.代码: irda_receive.v module irda_receive ( input wire…...
Sora—openai最新大模型文字生成视频
这里没办法发视频,发几个图片感受感受吧 OpenAI发布了Sora,一种文字生成视频的技术,从演示看,效果还是相当不错的。 Sora的强大之处在于其能够根据文本描述,生成长达 60秒的视频,其中包含精细复杂的场景…...
VoIP(Voice over Internet Protocol 基于IP的语音传输)介绍(网络电话、ip电话)
文章目录 VoIP(基于IP的语音传输)1. 引言2. VoIP基础2.1 VoIP工作原理2.2 VoIP协议 3. VoIP的优势和挑战3.1 优势3.2 挑战 4. VoIP的应用5. 总结 VoIP(基于IP的语音传输) 1. 引言 VoIP,全称Voice over Internet Prot…...
编程笔记 Golang基础 027 结构体
编程笔记 Golang基础 027 结构体 一、结构体的定义二、结构体的实例化1. 直接初始化2. 使用键值对初始化(即使字段顺序不一致也能正确赋值)3. 部分初始化(未指定的字段会得到它们类型的零值)4. 使用var声明和初始化5. 结构体字面量…...
opencascade15解析导出为step格式
#include "DisplayScene.h" // 包含显示场景的头文件 #include "Viewer.h" // 包含查看器的头文件// OpenCascade 包含 #include <BRepPrimAPI_MakeCylinder.hxx> // 创建圆柱体 #include <BinXCAFDrivers.hxx> // 二进制XCAF驱动程序 #includ…...
【软件设计模式之模板方法模式】
文章目录 前言一、什么是模板方法模式?二、模板方法模式的结构1. 抽象类定义2. 具体实现 三、模板方法模式的应用场景1. 算法重用2. 操作中的固定步骤3. 扩展框架的功能4. 提供回调方法5. 遵循开闭原则 四、模板方法模式的优缺点1. 优点代码复用扩展性好符合开闭原则…...
Spring Boot项目怎么对System.setProperty(key, value)设置的属性进行读取加解密
一、前言 之前我写过一篇文章使用SM4国密加密算法对Spring Boot项目数据库连接信息以及yaml文件配置属性进行加密配置(读取时自动解密),对Spring Boot项目的属性读取时进行加解密,但是没有说明对System.setProperty(key, value)设…...
Linux理解
VMware安装Linux安装 目录 VMware安装Linux安装 1.1 什么是Linux 1.2 为什么要学Linux 1.3 学完Linux能干什么 2.1 主流操作系统 2.2 Linux系统版本 VMware安装Linux安装 1.1 什么是Linux Linux是一套免费使用和自由传播的操作系统。 1.2 为什么要学Linux 1). 企业用人…...
常用芯片学习——YC688语音芯片
YC688 广州语创公司语音芯片 使用说明 YC688是一款工业级的MP3语音芯片 ,完美的集成了MP3、WAV的硬解码。支持SPI-Flash、TF卡、U盘三种存储设备。可通过电脑直接更新SPI-Flash的内容,无需上位机软件。通过简单的串口指令即可完成三种存储设备的音频插…...
C语言:指针的进阶讲解
目录 1. 二级指针 1.1 二级指针是什么? 1.2 二级指针的作用 2. 一维数组和二维数组的本质 3. 指针数组 4. 数组指针 5. 函数指针 6. typedef的使用 7. 函数指针数组 7.1 转移表 1. 二级指针 如果了解了一级指针,那二级指针也是可以很好的理解…...
基于SSM的车位租赁系统(有报告)。Javaee项目。ssm项目。
演示视频: 基于SSM的车位租赁系统(有报告)。Javaee项目。ssm项目。 项目介绍: 采用M(model)V(view)C(controller)三层体系结构,通过Spring Spri…...
Java 语言特性(面试系列2)
一、SQL 基础 1. 复杂查询 (1)连接查询(JOIN) 内连接(INNER JOIN):返回两表匹配的记录。 SELECT e.name, d.dept_name FROM employees e INNER JOIN departments d ON e.dept_id d.dept_id; 左…...
脑机新手指南(八):OpenBCI_GUI:从环境搭建到数据可视化(下)
一、数据处理与分析实战 (一)实时滤波与参数调整 基础滤波操作 60Hz 工频滤波:勾选界面右侧 “60Hz” 复选框,可有效抑制电网干扰(适用于北美地区,欧洲用户可调整为 50Hz)。 平滑处理&…...
在鸿蒙HarmonyOS 5中实现抖音风格的点赞功能
下面我将详细介绍如何使用HarmonyOS SDK在HarmonyOS 5中实现类似抖音的点赞功能,包括动画效果、数据同步和交互优化。 1. 基础点赞功能实现 1.1 创建数据模型 // VideoModel.ets export class VideoModel {id: string "";title: string ""…...
ip子接口配置及删除
配置永久生效的子接口,2个IP 都可以登录你这一台服务器。重启不失效。 永久的 [应用] vi /etc/sysconfig/network-scripts/ifcfg-eth0修改文件内内容 TYPE"Ethernet" BOOTPROTO"none" NAME"eth0" DEVICE"eth0" ONBOOT&q…...
Xen Server服务器释放磁盘空间
disk.sh #!/bin/bashcd /run/sr-mount/e54f0646-ae11-0457-b64f-eba4673b824c # 全部虚拟机物理磁盘文件存储 a$(ls -l | awk {print $NF} | cut -d. -f1) # 使用中的虚拟机物理磁盘文件 b$(xe vm-disk-list --multiple | grep uuid | awk {print $NF})printf "%s\n"…...
网站指纹识别
网站指纹识别 网站的最基本组成:服务器(操作系统)、中间件(web容器)、脚本语言、数据厍 为什么要了解这些?举个例子:发现了一个文件读取漏洞,我们需要读/etc/passwd,如…...
代码随想录刷题day30
1、零钱兑换II 给你一个整数数组 coins 表示不同面额的硬币,另给一个整数 amount 表示总金额。 请你计算并返回可以凑成总金额的硬币组合数。如果任何硬币组合都无法凑出总金额,返回 0 。 假设每一种面额的硬币有无限个。 题目数据保证结果符合 32 位带…...
mac 安装homebrew (nvm 及git)
mac 安装nvm 及git 万恶之源 mac 安装这些东西离不开Xcode。及homebrew 一、先说安装git步骤 通用: 方法一:使用 Homebrew 安装 Git(推荐) 步骤如下:打开终端(Terminal.app) 1.安装 Homebrew…...
实战三:开发网页端界面完成黑白视频转为彩色视频
一、需求描述 设计一个简单的视频上色应用,用户可以通过网页界面上传黑白视频,系统会自动将其转换为彩色视频。整个过程对用户来说非常简单直观,不需要了解技术细节。 效果图 二、实现思路 总体思路: 用户通过Gradio界面上…...
Python学习(8) ----- Python的类与对象
Python 中的类(Class)与对象(Object)是面向对象编程(OOP)的核心。我们可以通过“类是模板,对象是实例”来理解它们的关系。 🧱 一句话理解: 类就像“图纸”,对…...
