当前位置: 首页 > 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} ) } ]

完结!

http://www.lryc.cn/news/326560.html

相关文章:

  • 白板手推公式性质 AR模型 时间序列分析
  • 零基础学python之高级编程(6)---Python中进程的Queue 和进程锁,以及进程池的创建 (包含详细注释代码)
  • 184. 部门工资最高的员工
  • 插值表达式、Vue指令、指令补充
  • qiankun实现基座、子应用样式隔离
  • C语言从入门到实战----数据在内存中的存储
  • 接口关联和requests库
  • Python编程基础 001 开篇:为什么要学习编程
  • AQS源码分析
  • 应对Locked勒索病毒威胁:你的数据安全准备好了吗?
  • 周末分享一篇关于html和http的文章吧
  • Frechet分布
  • vue3全局引入element-plus使用Message教程
  • 时序预测 | Matlab实现BiTCN-BiLSTM双向时间卷积神经网络结合双向长短期记忆神经网络时间序列预测
  • 基于 Linux 的更新版 MaxPatrol VM 可扫描 Windows
  • 【软件开发】给Ubuntu 18.04虚拟机安装最新的Python 3.12.2
  • 鸿蒙NXET实战:高德地图定位SDK【获取Key+获取定位数据】(二)
  • Dubbo管理控制台
  • CSS问题精粹1
  • neo4j所有关系只显示RELATION,而不显示具体的关系
  • VMware和Xshell连接
  • 【C语言进阶篇】编译和链接
  • pytorch+tensorboard
  • PTA------ 敲笨钟
  • 关于HashSet的五个问题
  • linux性能调优汇总(一)cpu
  • CSS object-fit 属性
  • 使用LangChain LCEL生成RAG应用、使用LangChain TruLens对抗RAG幻觉
  • npm淘宝镜像源更新
  • Navicat 干货 | 探索 PostgreSQL 的外部数据包装器和统计函数