一个AI小白如何理解近似匹配检索

在AI领域的相似性匹配中通常会接触很多新名词:ANN、KNN、HNSW、SQ8、Faiss、L2、L1、inner product...你可能会查了很多官方解释,但是:

--> 网上每个名词都告诉了是什么,我知道了他是什么,对,没错,我还是不知道它是什么

--> 根据用户手册,我Step by step成功完成了所有的实验,我依然不知道我在实验什么

--> 有业务场景讲解,与向量搜索/相似度匹配的关系是什么,没错,我也似乎连接不起来

今年有幸接触到“向量搜索”领域,从传统数据库/大数据到这个领域,我也是一个完全的小白,经历了一段时间自认有一点点小入门,觉得还是挺有意思,把一些没太吃透的理解用一些“大白话”分享一下,大家可以当闲聊文章来看。

从一个家庭小故事开始

上周家里小孩有幸参加了杭州某机构组织了小孩子军警技能培训,机构为了满足家长们的朋友圈心态所以给小孩子们拍摄了“非常多帅气的照片”发到某图库中心,图库中心包含了所有小孩的照片,那么如何找到自己小孩的照片就是一个问题,我老婆似乎发现了一个新技能忍不住跟我show一下:你看,我们上传一张咱们孩子的人脸,就可以从所有孩子中找到我们家孩子的帅气照了

-->  没错,这就是传说中的“相似性搜索”/“近似搜索”,在技术层面也可以叫“向量搜索”

--> 为什么是“相似性搜索”:因为每个人会有表情变化、服装变化、侧面角度变化、距离变化、光线变化等等,无法用传统意义上id=id的方式来匹配一个是否等于来确定唯一性(这里细节上我与家人探讨了为什么带着墨镜的小孩帅气照没识别出来,我理解人脸特征提取中比较重要信息会在眼角上)

--> 为什么技术上又是“向量搜索”:一张照片需要有一个体征提取过程,假设人脸上有100个特征,那么可以提取出来100个数据记录下来记录一个人脸(可先粗略理解为每个特征数据点一般用一个float来表达),我们把它叫100维向量数据,所以匹配的时候就叫向量匹配。更形象点理解:假设人脸只有2个特征数据,取出来的2个数据(2个float数据)相当于在x、y轴二维平面的上的1个point位置,相应的如果是3维就是在3维空间的一个point位置。

--> 如何理解特征提取过程(embedding):特征提取方式与模型有关,不同的模型对同一张图片提取出来的特征维数和值都不一样,对于我们小白来讲,咱们可以业余一点去理解就是一些距离、角度、位置、比例的信息组合(进一步还需要一些神经网络知识对变化的综合理解学习,否则无法对表情的变化无法去识别匹配,我们暂时先不关注太多否则很难理解),总之无论是一张图片、一段音频、一段文本、一个化学分子式可以embedding提取出多个特征点。接下来的内容,我们假设已经存在这些特征数据了,分析下这些数据做近似匹配。

从最简单的“1维”开始理解“相似性匹配”

假设在传统数据库中,有1个表是学生成绩表,常见的业务是取出班级前三、前十、倒数前三、比谁成绩更好的人、平均分、最高分、最低分、成绩分布图、按照学生姓名精确或Like匹配取出学生成绩等。

有一个新的需求取出与“小明”同学数学成绩最接近的20个同学的成绩。传统解法一定是先取出小明同学的成绩,(每个同学成绩 - 小明同学的成绩),然后对差值的绝对值做ORDER BY ASC以得到结果:“TOP 20个最接近小明同学数学成绩的同学名单”,这就是一种最初级的相似度匹配。

学习过数据库的同学肯定会说,你这是全表扫

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值