0
点赞
收藏
分享

微信扫一扫

C++的学习

杨沐涵 2024-03-13 阅读 11

数据库管理160期 2024-03-12

数据库管理-第160期 Oracle Vector DB & AI-11(20240312)

来到了Oracle Vector DB基础介绍的最后阶段了,本期讲一下其他的vector函数,包含向量的函数操作、向量转换和绑定操作。

1 向量的函数操作

to_vector()

to_vector()函数是将一个字符串转换为向量,和vector()函数一样。

SELECT to_vector('[34.6, 77.8]', 2, float32) FROM dual;

SELECT to_vector('[34.6, 77.8, -89.34]', 3, float32);

image.png
注: 这里也演示了Oracle DB 23c中的新特性,可以不用from dual。

将vector转换为标准值

vector_norm()

vector_norm()函数输出原点到向量点的的距离:

SELECT vector_norm(vector('[4, 3]', 2, float32) );

SELECT vector_norm(vector('[4, 3]', 2, float64) );

SELECT vector_norm(vector('[4, 3]', 2, int8) );

image.png

vector_dimension_count()

vector_dimension_count()函数输出向量的维度数量:

SELECT vector_dimension_count(vector('[34.6, 77.8]', 2, float64));

SELECT vector_dimension_count(vector('[34.6, 77.8, 9]', 3, float32));

SELECT vector_dimension_count(vector('[34.6, 77.8, 9, 10]', 3, int8));

image.png

vector_dimension_format()

vector_dimension_format()函数输出向量的维度类型:

SELECT vector_dimension_format(vector('[34.6, 77.8]', 2, float64));

SELECT vector_dimension_format(vector('[34.6, 77.8, 9]', 3, float32));

SELECT vector_dimension_format(vector('[34.6, 77.8, 9, 10]', 3, int8));

image.png

2 将向量转换为字符串或CLOB

目前,python-oracledb和node-oracledb SQL驱动程序支持输入和输出向量的本地绑定(即直接使用向量)。其他SQL驱动程序,如JDBC和ODP.NET SQL只允许将向量绑定为字符串或CLOB。当Oracle 23.4提供Oracle AI Vector Search时,所有Oracle SQL驱动程序都应支持本地向量量绑定
较旧的SQL驱动程序[21c及之前版本]要求您通过使用vector()或to_vector()函数显式转换向量输入,并通过from_vector()或vector_serialize()将向量输出转换为字符串或CLOB。
注意: 如果您在SQL*Plus、sqlcl或SQL Developer中运行此实验室,您将不会在输出中看到明显的差异,但您可以确信Vector转换已经执行。

vector_serialize()

vector_serialize()函数可以将向量转换为字符串或CLOB:

SELECT vector_serialize(vector('[1.1, 2.2, 3.3]', 3, float32));

SELECT vector_serialize(vector('[1.1, 2.2, 3.3]', 3, float32)
       returning varchar2(1000));

SELECT vector_serialize(vector('[1.1, 2.2, 3.3]', 3, float32)
       returning clob);

image.png

from_vector()

from_vector()函数可以将向量转换为字符串或CLOB,等同与vector_serialize()函数:

SELECT from_vector(vector('[1.1, 2.2, 3.3]', 3, float32));

SELECT from_vector(vector('[1.1, 2.2, 3.3]', 3, float32) returning varchar2(1000));

SELECT from_vector(vector('[1.1, 2.2, 3.3]', 3, float32) returning clob);

image.png

总结

本期简单演示了vector相关的其他函数。
下一期可能需要等待一段时间,将自己做一个演示DEMO来更直观展示Oracle Vector DB和AI Vector Search的功能。
老规矩,知道写了些啥。

举报

相关推荐

0 条评论