金华高端网站设计,广东东莞工厂,网推所什么意思,随州市建设局网站数据库管理158期 2024-03-04 数据库管理-第158期 Oracle Vector DB AI-09#xff08;20240304#xff09;1 创建示例表2 添加过滤条件的向量近似查询示例1示例2示例3示例4示例5示例6示例7 总结 数据库管理-第158期 Oracle Vector DB AI-09#xff08;20240304 AI-09202403041 创建示例表2 添加过滤条件的向量近似查询示例1示例2示例3示例4示例5示例6示例7 总结 数据库管理-第158期 Oracle Vector DB AI-0920240304 作者胖头鱼的鱼缸尹海文 Oracle ACE Associate: DatabaseOracle与MySQL 国内某科技公司 DBA总监 10年数据库行业经验现主要从事数据库服务工作 拥有OCM 11g/12c/19c、MySQL 8.0 OCP、Exadata、CDP等认证 墨天轮MVP、认证技术专家、年度墨力之星ITPUB认证专家OCM讲师 圈内拥有“总监”、“保安”、“国产数据库最大敌人”等称号非著名社恐社交恐怖分子 公众号胖头鱼的鱼缸CSDN胖头鱼的鱼缸尹海文墨天轮胖头鱼的鱼缸ITPUByhw1809。 除授权转载并标明出处外均为“非法”抄袭。 一个周末过去了感觉也没休息好现在困得很人整体也不大舒服。 上一期已经展示了使用vector_distance()函数由小到大排序输出向量距离对应结果。与专用向量数据库只存储向量且只能针对向量记性运算不同Oracle Vector DB还可以同传统关系型数据库一样在向量相关的SQL中添加where子句在相似性搜索上增加过滤选项。相似性搜索与关系过滤、表连接叠加使用是一个非常强大的功能不仅丰富了向量数据的使用方式也简化了向量数据的使用。
1 创建示例表
按照下图创建示例表VT2这张表是通过上一期的VT1表来创建但是为每个向量增加了形状、颜色、大小等其他属性
CREATE TABLE vt2 AS SELECT * FROM vt1;ALTER TABLE vt2 ADD (vsize varchar2(16),shape varchar2(16),color varchar2(16));DESC vt2;修改向量对应大小
UPDATE vt2
SET vsize Small
WHERE id IN (1, 4, 6, 8, 9, 21, 23, 26, 33, 44, 45, 52);UPDATE vt2
SET vsize Medium
WHERE id IN (5, 22, 25, 32, 34, 42, 43, 53, 54, 55);UPDATE vt2
SET vsize Large
WHERE id IN (2, 3, 7, 24, 31, 41, 51);COMMIT;修改向量对应形状
UPDATE vt2
SET shape Square
WHERE id IN (1, 3, 6, 42, 43, 54);UPDATE vt2
SET shape Triangle
WHERE id IN (2, 4, 7, 22, 31, 41, 44, 55);UPDATE vt2
SET shape Oval
WHERE id IN (5, 8, 9, 21, 23, 24, 25, 26, 32, 33, 34, 45, 51, 52, 53);COMMIT;修改向量对应颜色
UPDATE vt2
SET color Red
WHERE id IN (5, 8, 24, 26, 33, 34, 42, 44, 45, 53, 54, 55);UPDATE vt2
SET color Green
WHERE id IN (1, 4, 6, 21, 31, 52);UPDATE vt2
SET color Blue
WHERE id IN (2, 3, 7, 9, 22, 23, 25, 32, 41, 43, 51);COMMIT;检查表数据
SELECT id, vsize, shape, color, v
FROM vt2
ORDER BY id;按大小、颜色、形状来查看向量
SELECT vsize, count(vsize)
FROM vt2
GROUP BY vsize;SELECT color, COUNT(color)
FROM vt2
GROUP BY color;SELECT shape, COUNT(shape)
FROM vt2
GROUP BY shape;2 添加过滤条件的向量近似查询
示例1
在上一期我们将查找与(16,3)最接近的三个向量。我们不关心实际距离而是关心对象本身的ID。然而在本次查询中我们返回距离以便将结果与下一个查询进行比较。 该查询的目的是从下图中检索以下Vectors。这里我们还限定了向量的ID范围即指定向量簇
SELECT id, vsize, shape, color, to_number(vector_distance(vector([16, 3]), v)) distance
FROM vt2
WHERE id 30 AND id 40
ORDER BY vector_distance(vector([16, 3]), v)
FETCH FIRST 3 ROWS ONLY;示例2
还是上面那个向量点(16,3)依然从对应向量簇中查找最近的3个向量但是我们这次添加过滤条件为圆形如下图
SELECT id, vsize, shape, color, to_number(vector_distance(vector([16, 3]), v)) distance
FROM vt2
WHERE id 30 AND id 40
AND shape Oval
ORDER BY vector_distance(vector([16, 3]), v)
FETCH FIRST 3 ROWS ONLY;示例3
这次查找与向量点(6,8)最近的10个向量我们先不考虑距离仅考虑ID如下图
SELECT id, vsize, shape, color
FROM vt2
ORDER BY vector_distance(vector([6, 8]), v)
FETCH FIRST 10 ROWS ONLY;示例4
还是向量点(6,8)只不过我们过滤红色如下图
SELECT id, vsize, shape, color
FROM vt2
WHERE color Red
ORDER BY vector_distance(vector([6, 8]), v)
FETCH FIRST 10 ROWS ONLY;示例5
还是向量点(6,8)在红色基础上添加椭圆形过滤条件如下图 注意这里仅有8个红色的椭圆形虽然SQL中要求输出前10但是只有8个结果。
SELECT id, vsize, shape, color
FROM vt2
WHERE color Red
AND shape Oval
ORDER BY vector_distance(vector([6, 8]), v)
FETCH FIRST 10 ROWS ONLY;示例6
还是向量点(6,8)红色、椭圆形、小的过滤条件如下图 注意这里仅有4个红色的小的椭圆形虽然SQL中要求输出前10但是只有4个结果。
SELECT id, vsize, shape, color
FROM vt2
WHERE color Red
AND shape Oval
AND vsize Small
ORDER BY vector_distance(vector([6, 8]), v)
FETCH FIRST 10 ROWS ONLY;示例7
还是向量点(6,8)红色、椭圆形、小的过滤条件现在再增加ID10如下图 注意这里ID大于10的仅有3个红色的小的椭圆形虽然SQL中要求输出前10但是只有3个结果。
SELECT id, vsize, shape, color
FROM vt2
WHERE color Red
AND shape Oval
AND vsize Small
AND id 10
ORDER BY vector_distance(vector([6, 8]), v)
FETCH FIRST 10 ROWS ONLY;总结
本期简单演示了一下vectorwhere的SQL查询操作除了常规where还可以多表联查例如按范式将大小、形状、颜色存放在其他表中这些以后再做演示。 老规矩知道写了些啥。