高维向量检索的设计与实践(一)|学习笔记

本文涉及的产品
图像搜索,7款服务类型 1个月
简介: 快速学习高维向量检索的设计与实践(一)

开发者学堂课程【PostgreSQL 实战进阶高维向量检索的设计与实践(一)】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/112/detail/1908


高维向量检索的设计与实践(一)

 

内容介绍:

一、背景介绍

二、向量检索算法/PG 自定义索引

三、PASE 设计与实现

四、PASE 使用实践

本课程主要包括这样四个部分,第一部分,是背景的一个介绍,在这里,我会为大家介绍什么是向量检索技术,以及像检索技术目前在工业界有哪些应用场景。第二部分是常用的向量检索算法的介绍,以及在PG我们如何实现自定索引,它的操作方法是什么?第三部分,是配置的设计和实现的一个介绍,配置是我们基于 PG 实现的向量检索,向量检索的一个插件。其中主要包括三个部分,首先呢,会介绍 IVFFlat 的这样一个算法的索引设计,接下来,介绍 HNSW 算法的索引设计,最后会涉及到自定义数据类型的这样一个介绍和迭代查询设计的。他的一个设计思想,第四部分是配置的使用实践,演示配置如何使用。

 

一、背景介绍:

1.什么是向量检索

向量检索是从一堆已知的点中,找出给定P点的最相邻的 K 个点的过程,这些点可以是:1维点、2维点、3维点.....更高维点。查找的过程,叫做向量检索。根据经验,把维度大于十,小于1000的向量,叫做高维向量,维度大于1000,叫做超高维向量。

 image.png

向量检索技术在现实生活中,或者在我们的这个工业场景中,有哪些这个应用场景?

2.应用场景一:以图搜图/人脸识别

首先第一个场景是以图搜图和人脸识别两个应用场景,它们属于一个范畴,就是图片搜索类。先说以图搜图,比如在淘宝的这个输入框后边有一个产品,它的功能就是比如我某一天发现一个感兴趣的商品,然后对它进行拍照,然后搜索到和它相似的这样的商品,那它的后端实现的技术,就是会运用一些深度 CN 等等的深度的模型来对图片进行各种抽取,抽取出来的特征其实就是高维的向量,比如说256度的这样一个高维度的向量,查询的时候,我将拍照的照片进行同样的这个特征抽取,也取出256维的向量,检索过程就是运用这个256维的向量在全库中进行相似的向量的查询。那同样的人脸识别,目前也是珠宝的这样一个特色产品,应用场景就是刷脸支付,技术实现的方式其实和以图搜图类似的,在离线我们训练类似于CNN这样的一个深度模型,在离线对选举的人脸进行特征抽取,做存库的处理,刷脸的时候,会对采集的这张照片进行这个人脸特征抽取,利用这个特征在全库中进行相似脸的查询,这两个过程,都运用到了向量检索这样的技术。

 image.png

2.应用场景二:推荐

另一个应用场景也是比较常见的,这个场景就是个性化推荐,它推荐的方式就是类似于以图搜图技术这样一个方式,但是区别是推荐是基于根据用户的特征来查找到和用户感兴趣的商品的这样一个过程。它的技术实现方式一般是采用一个双卡模型,一个进行用户特征的抽取,一个进行商品特征的抽取,在最后查询阶段,是用用户的特征来在商品的特征库中进行向量检索,这是个性化推荐的这样一个向量检索的过程。

 image.png

2.应用场景三:基于深度模型的语义检索

第三个场景其实是基于深度模型的这个语义检索,它的应用场景其实也很广泛,比如打开支付宝或者淘宝等进行搜索,它都运用到了相应的技术,运用这些深度模型对这个词汇进行特征的抽取,最后落到这个检索过程,还是利用这个向量检索来查找到就是和待查询词相关的相匹配的这些商品,通过一个场景,可以发现向量检索广泛的应用于搜索、推荐、人脸识别等等这些场景,结合深度学习技术的发展,向量检索最近这些年也得到了比较快速的发展和广泛的应用,这个是向量检索的这样一个背。

相关文章
向量 (高维思考)
向量 (高维思考)
83 0
|
搜索推荐
|
自然语言处理 程序员 容器
向量学习之高维思考
向量学习之高维思考
|
C++ 容器
C++学习笔记_15 线性容器-vector容器 2021-05-12
C++学习笔记_15 线性容器-vector容器 2021-05-12
向量带来的高维思维
学习向量对于我们来说是突然的,感觉我一直在经历“降维打击”,经过十几节课的系统学习,向量似乎在我的眼里和高中时候的不太一样了。为什么这么说呢?在以前的认知里,向量就是简单的“有大小、有方向的量”,
学习笔记: 线性代数-向量的定义
线性代数个人学习笔记
171 0
|
存储 编译器 C++
C++学习笔记(十四)——vector的模拟实现(二)
C++学习笔记(十四)——vector的模拟实现
C++学习笔记(十四)——vector的模拟实现(二)
|
存储 编译器 C++
C++学习笔记(十四)——vector的模拟实现(一)
C++学习笔记(十四)——vector的模拟实现
C++学习笔记(十四)——vector的模拟实现(一)
|
算法 C++
C++学习笔记(十五)——vector练习题
C++学习笔记(十五)——vector练习题
C++学习笔记(十五)——vector练习题