当前位置: 首页 > news >正文

Oracle AI Vector Search Multi-Vector Similarity Search 即多向量相似度检索学习笔记

Oracle AI Vector Search Multi-Vector Similarity Search 即多向量相似度检索学习笔记

  • 0. 什么是多向量相似度检索
  • 1. 多向量相似度检索的示例 SQL
  • 2. 执行多向量相似度检索
  • 3. 分区行限制子句的完整语法

0. 什么是多向量相似度检索

多向量相似度检索涉及通过使用称为分区的分组标准来检索顶部 K 个向量匹配,这些标准基于您的数据特征。此方法根据它们的片段与查询向量的相似度来评分数据。在 SQL 中,这通过分区行限制子句实现。

这个解释描述的非常抽象,让我们通过接下来的示例和说明更好的理解一下。

1. 多向量相似度检索的示例 SQL

比如,要找到前两本最相关书籍中的前四个最相关段落,可以使用以下 SQL 语句

SELECT doc_id, embed_id
FROM doc_chunks
ORDER BY vector_distance(embed_vector, (SELECT embedding FROM doc_queries WHERE query = '不同的备份和恢复方法'), COSINE)
FETCH FIRST 2 PARTITIONS BY doc_id, 4 ROWS ONLY;

2. 执行多向量相似度检索

多向量相似度检索特别适用于多文档检索,其中文档被分成多个块,每个块都嵌入到向量中。
这种检索类型使用基于文档特征的分区作为分组标准来检索顶部 K 个向量匹配。

它简化了编写 SQL 查询以回答诸如以下问题的方法:

  • 如果存在,两本最匹配的书中的三个最匹配段落中的四个最匹配句子是什么?

例如,如果您的数据库中的每本书都组织成包含具有向量嵌入表示的句子的段落,那么可以使用单个 SQL 语句解决上述问题:

SELECT bookId, paragraphId, sentence
FROM books
ORDER BY vector_distance(sentence_embedding, :sentence_query_vector)
FETCH FIRST 2 PARTITIONS BY bookId, 3 PARTITIONS BY paragraphId, 4 ROWS ONLY;

或者,对于目标精度为 90% 的近似相似度检索,您可以使用:

SELECT bookId, paragraphId, sentence
FROM books
ORDER BY vector_distance(sentence_embedding, :sentence_query_vector)
FETCH APPROXIMATE FIRST 2 PARTITIONS BY bookId, 3 PARTITIONS BY paragraphId, 4 ROWS ONLY
WITH TARGET ACCURACY 90;

注意:
所有返回的行都按分区子句排序,不按其分组。
此方法有助于根据句子与查询向量之间的向量距离对记录进行排序,根据它们的 bookId 和 paragraphId 过滤记录。

多向量相似度搜索不仅限于文档:

这种搜索方法非常灵活,不限于文档。它可以用于:

  • 确定最接近的前 K 张不同人物的照片。
  • 发现至少有两个音频段与某声音片段最匹配的前 K 首歌曲。

附加信息:

  • 分区行限制子句扩展是 SQL 语言的广泛扩展,适用于向量检索之外。
  • 它不依赖于向量索引。

3. 分区行限制子句的完整语法

分区行限制子句的完整语法,向量扩展部分以粗体突出显示,如下所示:

 [FETCH [ EXACT | APPROX | APPROXIMATE ] { FIRST | NEXT }[ pbycount1 { PARTITION | PARTITIONS } BY pbyexpr1 , ][ pbycount2 { PARTITION | PARTITIONS } BY pbyexpr2 , ][... ,][ pbycountN { PARTITION | PARTITIONS } BY pbyexprN , ][{ row_count | percent PERCENT }] { ROW | ROWS } { ONLY | WITH TIES }][[ WITH | WITH TARGET | TARGET ] ACCURACY {accuracy [PERCENT] | PARAMETERS ( {NEIGHBOR PARTITION PROBES nprobes | EFSEARCH efs} ) } ]

完结!

相关文章:

  • 解决PATH变量污染的问题
  • 银河麒麟服务器操作系统V10SP1在登录界面显示启动会话失败
  • 2024蓝桥杯每日一题(背包)
  • 通过多选按钮选择需要修改什么字段
  • 【Django学习笔记(一)】HTML语言简介和基于Flask Web框架快速搭建网站
  • 学习java第二十六天
  • react-navigation:
  • 华为鸿蒙系统:重塑智能生态,引领科技未来新篇章
  • 使用PaddleX实现的智慧农业病虫检测项目
  • 2024 蓝桥打卡Day25
  • Java开发过程中如何进行进制换换
  • Python批量提取pdf首页并合并为一个文件
  • 厨余垃圾处理设备工业监控PLC连接APP小程序智能软硬件开发之功能原理篇
  • Windows运维_Windows下配置Apache-Haus(Apache2.4)
  • 在 Windows 11 上安装 MongoDB
  • 0x05 Python数据分析,Anaconda八斩刀
  • docker-consul
  • Java到底能干嘛?
  • js学习笔记
  • puppeteer stop redirect 的正确姿势及 net::ERR_FAILED 的解决
  • rabbitmq延迟消息示例
  • ViewService——一种保证客户端与服务端同步的方法
  • vue-router 实现分析
  • vue从创建到完整的饿了么(18)购物车详细信息的展示与删除
  • 百度地图API标注+时间轴组件
  • 编写符合Python风格的对象
  • 融云开发漫谈:你是否了解Go语言并发编程的第一要义?
  • 设计模式 开闭原则
  • 树莓派 - 使用须知
  • 我是如何设计 Upload 上传组件的
  • 自定义函数
  • ​软考-高级-信息系统项目管理师教程 第四版【第19章-配置与变更管理-思维导图】​
  • #{} 和 ${}区别
  • (06)Hive——正则表达式
  • (1)Map集合 (2)异常机制 (3)File类 (4)I/O流
  • (aiohttp-asyncio-FFmpeg-Docker-SRS)实现异步摄像头转码服务器
  • (附源码)springboot“微印象”在线打印预约系统 毕业设计 061642
  • (附源码)springboot码头作业管理系统 毕业设计 341654
  • (附源码)ssm户外用品商城 毕业设计 112346
  • (终章)[图像识别]13.OpenCV案例 自定义训练集分类器物体检测
  • (转)chrome浏览器收藏夹(书签)的导出与导入
  • (转)Spring4.2.5+Hibernate4.3.11+Struts1.3.8集成方案一
  • (转)菜鸟学数据库(三)——存储过程
  • (转)总结使用Unity 3D优化游戏运行性能的经验
  • ***监测系统的构建(chkrootkit )
  • .NET : 在VS2008中计算代码度量值
  • .Net Framework 4.x 程序到底运行在哪个 CLR 版本之上
  • .NET HttpWebRequest、WebClient、HttpClient
  • .NET NPOI导出Excel详解
  • .Net Web项目创建比较不错的参考文章
  • .Net+SQL Server企业应用性能优化笔记4——精确查找瓶颈
  • .pub是什么文件_Rust 模块和文件 - 「译」
  • [20180224]expdp query 写法问题.txt
  • [ABP实战开源项目]---ABP实时服务-通知系统.发布模式
  • [AutoSar]工程中的cpuload陷阱(三)测试