26ai新特性实战:新向量生成函数
胖头鱼的技术专栏-438 26ai新特性实战:新向量生成函数(20260702)
作者:胖头鱼的鱼缸(尹海文)
Oracle ACE Pro: Database
PostgreSQL ACE
10年+数据库行业经验
拥有OCM 11g/12c/19c、MySQL 8.0 OCP、Exadata、CDP等认证
墨天轮MVP,ITPUB认证专家
圈内拥有“总监”称号,非著名社恐(社交恐怖分子)
全网同名:胖头鱼的鱼缸
ITPUB:yhw1809
除授权转载并标明出处外,均为“非法”抄袭
继续Oracle AI Database 26ai的新特性实战,今天带来的同样是23.26.2版本新增的特性:向量生成函数。
特性介绍
Oracle AI Database 23.26.2 新增了三个向量生成 SQL 函数,极大地方便了向量数据的原型开发和测试:
VECTOR_ORIGIN(n)
创建一个所有维度值均为零的向量,表示 n 维向量空间的原点。作为原型开发中的绑定变量,它始终适用于任何向量数据集——无需提前知道表中的向量维度或格式即可进行查询测试。VECTOR_RANDOM(n)
生成一个包含随机值的向量。该值在一条 SQL 语句的所有行中保持不变(即所有行获得相同的随机向量)。适用于需要单一查询向量的场景。VECTOR_RANDOM_PER_ROW(n)
为每一行生成不同的随机向量值。适用于批量生成随机向量测试数据,快速填充向量表以进行性能测试或功能验证。
这三个函数使开发者能够快速生成随机向量数据和向量绑定变量。
前置条件:数据库初始化参数 COMPATIBLE >= 23.6.0
适用场景
概念验证(PoC):快速生成测试向量数据,无需依赖外部嵌入模型 性能测试:使用 VECTOR_RANDOM_PER_ROW 批量生成数万条向量记录,测试向量索引(HNSW/IVC)的查询性能 原型开发:使用 VECTOR_ORIGIN 作为查询向量进行相似度搜索测试,因为零向量对任何维度都有效,无需关心目标表的向量维度 数据库迁移验证:从其他向量数据库迁移后,使用随机向量验证查询逻辑 教学演示:在培训或演示中快速展示向量搜索功能
实战演示
同上一期一样使用用户NFTEST,已授权DB_DEVELOPER_ROLE角色,测试操作均在NFTEST用户下执行。
测试1:VECTOR_ORIGIN向量生成
SELECT VECTOR_ORIGIN(3) AS v3,
VECTOR_ORIGIN(8) AS v8,
VECTOR_ORIGIN(10) AS v10
FROM dual;
测试2:VECTOR_RANDOM向量生成
SELECT rownum AS rn, VECTOR_RANDOM(3) AS same_for_all
FROM dual CONNECT BY level <= 3;
测试3:VECTOR_RANDOM_PER_ROW向量生成
SELECT rownum AS rn, VECTOR_RANDOM_PER_ROW(3) AS different_per_row
FROM dual CONNECT BY level <= 5;
测试4:模拟应用
-- 创建测试表
CREATE TABLE vec_test (
id NUMBER PRIMARY KEY,
name VARCHAR2(50),
embedding VECTOR(4, FLOAT32)
);
-- 插入5条包含随机向量的行记录
INSERT INTO vec_test
SELECT rownum, 'Item ' || rownum, VECTOR_RANDOM_PER_ROW(4)
FROM dual CONNECT BY level <= 5;
COMMIT;
-- 检查生成数据
SELECT id, name, embedding FROM vec_test ORDER BY id;
-- 使用VECTOR_ORIGIN生成的值作为查询向量查询和原点最接近的3行数据
SELECT id, name,
VECTOR_DISTANCE(embedding, VECTOR_ORIGIN(4), EUCLIDEAN) AS dist
FROM vec_test
ORDER BY dist ASC
FETCH FIRST 3 ROWS ONLY;
测试5:VECTOR_RANDOM和VECTOR_RANDOM_PER_ROW对比
SELECT rownum AS rn,
VECTOR_RANDOM(3) AS same_for_all,
VECTOR_RANDOM_PER_ROW(3) AS different_per_row
FROM dual CONNECT BY level <= 3;
总结
本期对Oracle AI Database 26ai,23.26.2版本新引入的向量生成函数进行了完整介绍与实战演示,这是一个非常便捷的测试与模拟方法。
老规矩,知道写了些啥。