向量搜索学习笔记

1、背景介绍

原有分词检索的瓶颈

e.g.1:

如以下三句话:

“中国首都占地16410.54平方千米”

“北京面积16410.54平方千米”

“北京面积多少平方千米”

如果按照传统的分词为Token的表示方法,三句话的分词Token表示为:

[“中国”,“首都”,“占地”,“16410.54”,“平方千米”]

[“北京”,“面积”,“16410.54”,“平方千米”]

[“北京”,“面积”,“多少”,“平方千米”]

很明显的是后两句相同Token占比更高,但是前两句语义更相似。由此可见,基于这种传统的特征表示的应用会如搜索引擎会碰到准确率不高等问题。

e.g.2:

用户搜索“浙一医院”

“浙一医院”的标准地址是“浙江大学医学院附属第一医院”

query只解析出关键词“浙一”和“医院”,匹配度很低。

更复杂的业务场景,要求跳脱出冰冷死板的分词或者分类标签,来做更贴近语义的搜索

推荐系统:通过支持相似性查询和向量聚合,向量数据库用于构建高效的推荐系统,实现对用户历史行为的个性化推荐。

搜索引擎:利用向量数据库可提高搜索质量和效率,将网页内容表示为向量,建立索引并实现与查询相关的快速检索。

社交媒体分析:向量数据库在社交媒体分析领域支持相似性查询和聚合操作,能够快速识别和提取社交媒体数据中的模式和趋势,包括情感分析、主题建模和社区发现等。

生物信息学:在基因序列分析和蛋白质相互作用预测等生物信息学领域,向量数据库有广泛应用。通过将基因序列和蛋白质表示为向量,实现高效的模式识别、聚类和预测。

图像和视频分析:应用于图像和视频分析,包括图像检索、物体识别和场景分类等。通过将图像和视频表示为向量,建立索引并实现对相似图像或视频的快速检索。

2、基础介绍

向量可以对物理世界的人/物/场景所产生各种非结构化数据(如语音、图片、视频,语言文字、行为等)进行抽象,如同数学空间中的坐标,标识着各个实体和实体关系。非结构化数据变成向量的过程称为向量化(Embedding)。向量检索就是对非结构化数据生成的向量进行检索,寻找相同或相似的向量,从而找到相同或相似的非结构化数据。

以图片搜索为例,每一幅图片可以被抽象成向量特征,然后将所有特征构建成向量索引,查询的时候,将查询(图片)也表示为一个相同维度的向量,然后用这个向量在之前构建的向量索引中查找出最相似的结果,这样就完成了一次以图搜图。

所谓向量就是由n个数字(二值向量由n个比特组成)组成的数组,我们称之为n维向量。

常见的向量近似度量有四种:欧式距离、余弦、内积、海明距离

欧氏距离计算的是两点之间最短的直线距离,距离值越小越相似。能够体现个体数值特征的绝对差异,适合数据完整,数据量纲统一的场景

余弦距离计算的是两个向量之间的夹角余弦值,夹角越小越相似。更多的是从方向上区分差异,而对绝对的数值不敏感,更多的用于使用用户对内容评分来区分兴趣的相似度和差异,同时修正了用户间可能存在的度量标准不统一的问题。

内积和余弦类似。

海明(汉明)、杰卡德距离、 谷本距离,属于二值型向量计算方式。

不同的度量方式对应不同的场景,通常欧式距离用于图片检索,余弦用于人脸识别,内积多用于推荐,海明距离由于向量比较小,通常用于大规模视频检索场景。

同构物品检索(Query和检索的物品属于统一类,两类可以用同一个模型产生表示向量)。

一般是三个步骤:

1、离线训练阶段:主要是训练深度编码模型

2、离线构建索引库:主要是用训练好的深度编码模型,对所有物品进行编码后保存到向量索引库

3、在线查询:将Query通过深度编码模型得到编码向量,取编码向量与索引向量库中距离最近的向量对应的物品ID,再通过物品ID去物品Meta库查询业务需要的Meta信息

除了同构物品检索,向量检索还可以用在异构物品检索场景

比如:个性化推荐在个性化推荐中Query 是用户,查询的对象是推荐物品(如商品、音乐、视频)。

底层的原理

1、对用户采用深度学习模型Mu进行向量表示得到VUi[i∈N N所有用户],

2、对物品采用深度学习模型Mp进行向量表示得到VPi[i∈M M所有物品],其中VUi和VPi维度一样,

3、在线推荐时查询VUi得到用户的表示x,从VPi中得到和x最相似的向量对应的物品作为推荐结果。

3、媒资应用

文本搜图

传统做法:用文本进行图像搜索,并没有对图像的真实内容做理解,而是利用图片的标题,图片所在文档中附加文本(标签)等,对这些信息和用户的Query进行第一节传统NLP计算得到搜索结果。

这种做法有两个问题:一是图片附加文本(标签)信息可能是错误的,二是还有绝大多数图片都没附加文本从而无法被搜索。

向量检索的做法:

1、利用标注的图片和描述文本对,联合训练图片深度编码模型MI和文本编码模型Mt,两个模型输出的向量维度一样

2、利用训练好的MI将所有图片进行向量表示得到VIi[i∈M M所有图片](实际就是翻库)

3、在线上搜索是将用户Query用Mt进行编码得到xt,从VIi中得到和xt最相似的图片作为搜索结果。

ES向量搜索

Elasticsearch 最初并未专门针对向量检索进行设计。然而,随着机器学习和人工智能的兴起,对于高维向量空间的查询需求逐渐增长。

在Elasticsearch的 5.x 版本中,Elastic 爱好者们开始尝试通过插件和基本的数学运算实现简单的向量检索功能。

到 Elasticsearch 7.0 版本,正式开始增加对向量字段的支持,例如通过 dense_vector 类型。这标志着Elasticsearch正式进入向量检索领域,不再只依赖于插件。

在 Elasticsearch 8.9 版本上新了:Semantic search 语义检索功能

4、测试相关

主要是从性能表现和搜索精准度来考虑。

性能:翻库(写入)性能,查询性能

搜索精准度:更多的是根据业务场景判断算法选择是否合适,以及算法本身的准确召回评测

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值