TECH ARTICLES
多模态检索 CLIP 音频指纹 视频指纹

多模态检索揭秘:拍照搜题、听歌识曲、视频找原片,背后是同一个魔术

Jackie Zhan 2026-06-27
目录
一、图像检索:从"找一模一样"到"找意思相近" 二、音频检索:在噪声里捞出那根"指纹" 三、视频检索:一秒 30 帧,怎么找到原片 四、拆穿魔术:三件事其实是同一件事 五、总结:万物皆可向量的时代

上周三个朋友,问了我三个看起来八竿子打不着的问题。

做老师的那个问:「我家孩子用小猿搜题,拍张数学题照片,'唰'地就把同款题和解析翻出来了,连我手写歪歪扭扭的也认得。它怎么做到的?」

搞音乐的那个问:「在商场听到一段旋律,掏出手机点一下,十秒钟告诉我歌名歌手——周围那么吵,它凭什么没被吵晕?」

做短视频的那个问:「我被人盗剪了一段视频,平台居然自动识别出来打了原创标。它是怎么从几亿条视频里,认出那几秒是'我的'?」

我说:你们仨问的,其实是同一个问题

他们都愣了。一个是图片,一个是声音,一个是视频,怎么会是同一个问题?

因为这三件事,本质上都在干一件事:把一段你看得见、听得着的内容,变成一串机器看得懂的数字,然后去一个巨大的库里,找出最像的那个。区别只在于——图片、声音、视频,各自要用什么手艺把它「压缩成数字」。这串数字,有时候叫向量,有时候叫指纹。今天我就把这三个魔术,一个一个拆给你看。


一、图像检索:从"找一模一样"到"找意思相近"

先从拍照搜题说起。因为它最能暴露一个关键分叉:你到底是想找「一模一样的图」,还是「意思相近的内容」?

这是两条完全不同的路,很多人一上来就搞混。

第一条路:感知哈希,专治"近似图"

假设你想找的是「同一张图的不同版本」——比如同一张表情包,被人压缩过、加了水印、改了尺寸,但内容没变。这时候你不需要理解图里画了什么,你只需要一个能「容错」的指纹。

这就是感知哈希(Perceptual Hash, pHash)。它的思路简单得可爱:把图片缩到很小(比如 32×32),转成灰度,做一次频率变换,只留下最低频的那部分——也就是图片的「大致明暗结构」,然后跟平均值比大小,每个像素出一个 0 或 1。最后你得到一串比如 64 位的二进制码。

关键在于:两张「看起来差不多」的图,这串码也差不多。你比较两个哈希有几位不同(这叫汉明距离),差几位就知道有多像。改个色调、压一下、加个小水印?大结构没变,哈希就基本没变。

一句话记住
密码学哈希是「改一个字节,整串面目全非」,专门用来防篡改;感知哈希正好反过来——「看着像,码就像」,专门用来抓相似。同一个词"哈希",目标截然相反。

但感知哈希有个死穴:它只懂「像素长得像不像」,不懂「内容是不是一回事」。你给它一张手写的二次函数题,再给它一张印刷体的同一道题——像素天差地别,pHash 直接判定「这俩没关系」。

可搜题要的恰恰是后者啊:不管你字写得多丑、拍得多歪,我要找的是「这道题」本身。怎么办?

第二条路:CLIP,让机器"看懂"图里是什么

这就轮到主角登场了——CLIP(Contrastive Language-Image Pre-training,对比式语言-图像预训练),OpenAI 在 2021 年放出来的狠角色。

CLIP 干了一件听起来有点科幻的事:它把「图片」和「文字」塞进了同一个空间。在这个空间里,一张金毛犬的照片,和「a photo of a golden retriever」这句话,会落在几乎同一个位置。

它是怎么学会的?说穿了就四个字:连连看

OpenAI 从互联网上扒了几亿对「图片 + 配文」,然后训练两个编码器:一个把图变成向量,一个把文字变成向量。训练目标只有一个——配对的图文,向量要尽量靠近;不配对的,尽量推远。一个批次里塞 N 张图、N 句话,正确配对只有对角线上那 N 对,其余 N×N−N 对全是错的。模型就在这个巨大的「连连看」里,被逼着学会了:什么样的画面,对应什么样的语义。

拍下的题目 题库里的题 图像编码器 图像编码器 向量 A [0.21, -0.08, ...] 向量 B [0.19, -0.05, ...] 算距离 越近越像
CLIP 检索:把查询图和库里的图都变成向量,比谁离得近

训练完之后,神奇的事情发生了:你拍一张手写的二次函数题,CLIP 给你一个向量;题库里那道印刷体的同款题,CLIP 给的向量跟它几乎重合。因为它们「讲的是同一件事」,哪怕像素毫无关系。

现在你回头看搜题这件事,就清楚了:把全网几千万道题事先用 CLIP(实际产品里多是基于 CLIP 思路微调的多模态模型)算好向量,存进库。你一拍照,实时算出查询向量,去库里找最近的几个——找到了,连带解析一起端给你。手写、印刷、拍歪、反光,统统不影响,因为比的是「意思」,不是「像素」。

对比一下
同样是搜图:找「这张表情包的盗版」用感知哈希(要的是像素级相似),找「和这道题考点一样的题」用 CLIP 向量(要的是语义级相似)。选错了路,效果天差地别。这也是为什么严肃的搜题、以图搜商品系统,几乎都站在 CLIP 这一边。

2025 年这条路还在狂奔——Jina-CLIP-v2 把它扩展到多语言,TripletCLIP、CLOC 这些变体在「组合理解」和「区域定位」上继续加码。但万变不离其宗:把图变成一个懂语义的向量,剩下的就是比距离。

所以图像检索的秘密,一句话:感知哈希比的是「长得像」,CLIP 比的是「想得像」。声音呢?声音可比不出"想得像",它得用另一套手艺。

二、音频检索:在噪声里捞出那根"指纹"

现在轮到商场里那段旋律。你点一下识曲,周围是嘈杂的人声、空调声、隔壁店的另一首歌,十秒后它精准报出歌名。这事的难度,比搜题高一个量级——因为现场录的音,跟原版几乎对不上。

你想想:手机麦克风的音质、商场的混响、背景噪声、你录的是歌曲中间随机一段……如果硬比波形,原版和你录的版本,数据上差了十万八千里。那它凭什么还能认出来?

答案藏在一个 2003 年的经典算法里。Shazam 的创始人 Avery Wang 写的那篇论文,被引用了上千次,至今仍是音频指纹的教科书。我把它拆成三步。

第一步:把声音"拍成一张照片"

声音是一维的波形,随时间起伏。直接比波形太脆弱了。Shazam 的第一招,是把声音变成一张二维图——声谱图(Spectrogram):横轴是时间,纵轴是频率,颜色深浅代表那个时刻、那个频率上的能量有多强。

这一步等于把「听觉」转成了「视觉」。一首歌,就变成了一张布满明暗斑点的图。

第二步:只留"最亮的星星"

关键的一招来了。在这张声谱图上,Shazam 只挑出能量最强的那些点——也就是局部最响亮的频率峰值。其余的,全扔掉。

这一扔,妙极了。为什么音质差、有噪声也不怕?因为噪声是杂乱的、低能量的,它形不成稳定的峰值。真正的旋律主音、鼓点,能量足够强,无论你怎么录,它们都会在那几个位置「亮」起来。只留最亮的星星,等于天然把噪声过滤掉了。

留下的这些峰值点,散落在时间-频率平面上,像一片星空。Shazam 管它叫星座图(Constellation Map)

时间 → 频率 锚点 + 目标点 = 一对哈希 灰点:弱能量噪声,被丢弃
星座图:只保留最强的频率峰值,再把成对的峰值编码成指纹哈希

第三步:把"星星配对",编成指纹

光有一堆点还不够,单个点不够独特。Shazam 的第三招:把峰值两两配对。取一个锚点,再取它附近的几个目标点,记录下「锚点频率、目标点频率、两者的时间差」——这三个数,组合成一个哈希值

一对峰值就是一个指纹。一首歌,就是成千上万个这样的指纹。这些指纹有个绝佳的性质:它编码的是峰值之间的相对关系,不是绝对的音量或音色。所以你录得响一点、轻一点、糊一点,只要旋律结构在,指纹就对得上。

最后一步匹配也很巧妙。你录的十秒,生成几百个指纹,拿去库里查。命中的歌不止一首?没关系。Shazam 会看一个东西:时间对齐。如果你的指纹命中了某首歌,并且这些命中点在歌曲里的时间偏移是高度一致的(你录的第 3 秒对应原曲第 67 秒,第 4 秒对应第 68 秒……整整齐齐错开一个固定值),那基本就是它了。靠这个「时间偏移直方图里冒出一根尖峰」的信号,它能在几百万首歌里一锤定音。

踩坑记录
很多人以为听歌识曲是「AI 听懂了旋律」。其实 Shazam 这套经典算法完全不理解音乐——它不知道这是摇滚还是古典,听不出情绪。它干的是纯粹的模式匹配:把声音转成指纹,比指纹。正因为「不理解」,它才又快又稳。理解,是另一拨用深度学习做「哼唱识曲」「找相似风格」的活儿,那是更难、更模糊的问题。

所以音频检索的秘密,一句话:不要试图听懂整首歌,只要在噪声里抓住那几颗最亮的星,再记住它们的排列。视频呢?视频是会动的图,一秒 30 帧,难度又翻了一层。

三、视频检索:一秒 30 帧,怎么找到原片

最后是被盗剪的那段视频。这件事的工业级代表,是 YouTube 的 Content ID——它每小时要处理数千小时的上传视频,跟一个有几百万部版权作品的库去比对,几分钟内出结果。

难在哪?难在攻击者花样太多了。盗视频的人会:换个编码格式、掐头去尾剪几秒、角落加个 logo、左右镜像翻转、整体调速 10%、加滤镜调色……每一种都让画面的像素数据大变样。一个好的视频指纹系统,得扛住这所有花招。

先看一帧:还是感知哈希

视频说到底是一帧一帧的图。所以最底层的工具,你已经认识了——感知哈希。给每一帧(或者每隔几帧抽一帧)算一个 pHash,缩图、转灰度、抓低频结构、出一串二进制码。换编码、改尺寸、加点滤镜?低频结构没动,哈希基本不变。

Facebook 开源的 PDQ 就是这一路的代表——一个针对图片的、抗压缩抗缩放的感知哈希。它是单帧的「视觉指纹」。

再看一段:时间维度才是杀手锏

但单帧哈希有个软肋:一段视频抽出几百帧,你总不能拿几百个哈希去逐一硬比,又慢又容易被「抽帧、调速」骗过。视频真正的身份,不只在「每一帧长什么样」,更在「这些帧是按什么节奏、什么顺序排列的」

这就是 Facebook 另一个开源工具 TMK+PDQF(Temporal Match Kernel + PDQ Features,时序匹配核 + PDQ 特征)的核心思想。它不把视频看成「一堆独立的帧」,而是把整段视频的帧特征,沿时间做一次数学变换,压缩成一个固定长度的向量——无论原视频是 10 秒还是 10 分钟,都变成同样长度的一串数字。

这个设计的精妙之处:因为它编码的是「帧序列的整体时序模式」,所以你掐头去尾、轻微变速、改帧率,这个向量都只是小幅扰动,依然能匹配上。比对时先用这个紧凑向量做快速粗筛,再用逐帧的 PDQF 做精细确认——一粗一精,又快又准。

insider 视角
你有没有发现,视频指纹的「粗筛 + 精排」两段式,跟我之前写的搜索引擎「召回 + 精排」三级火箭,是一模一样的工程哲学?先用便宜的方法把候选从几百万砍到几百,再用贵的方法精挑。所有要在海量数据里找东西的系统,最后都会收敛到这个套路。不是巧合,是算力约束下的必然。

当然,2026 年的前沿已经不止于此。新一代系统在感知哈希之外,叠加了深度学习提取的语义特征——这样不仅能抓「同一个视频的盗版」,还能识别「同一场景的不同拍摄」「换脸合成的深度伪造」。但底座没变:把一段会动的内容,压成一个能容错、能比对的指纹。

所以视频检索的秘密,一句话:单帧靠感知哈希扛住画面变形,整段靠时序指纹扛住剪辑变速——空间和时间,两道防线缺一不可。

四、拆穿魔术:三件事其实是同一件事

绕了一大圈,现在我可以兑现开头那句话了:搜题、识曲、找原片,是同一个问题

把三个魔术并排放在一起,你会看到一条一模一样的流水线:

原始内容 图 / 声 / 视频 编码 / 抽指纹 CLIP / 星座 / TMK 一串数字 向量 / 哈希 最近邻检索 在库里找最像的
三种多模态检索,共享同一条「编码 → 数字 → 找最近邻」管线

左边输入什么不重要,中间用什么手艺把它压成数字才是各家的功夫。压完之后,右边那一步——「在一个巨大的库里找最像的」——三者完全相同。

而「找最像的」这一步,本身也是一门大学问。库里有几千万、几亿个向量,你总不能跟每一个都算一遍距离。所以工业界用的是近似最近邻(ANN)算法,比如 HNSW、IVF,把向量组织成一种巧妙的图或树结构,让你不用遍历全库,就能闪电般找到「八九不离十」的那几个。这也是为什么向量数据库这几年这么火——它就是专门干「最近邻检索」这一步的基础设施。

维度图像检索(搜题)音频检索(识曲)视频检索(找原片)
压成数字的手艺CLIP 语义向量 / 感知哈希星座图指纹感知哈希 + TMK 时序指纹
比的是什么语义相似 / 像素相似频率峰值的排列画面结构 + 时间节奏
要扛住的干扰手写、拍歪、反光噪声、混响、音质差剪辑、调速、加水印、镜像
找最近邻同一套:ANN 近似最近邻 + 向量库

看懂这张表,你就拿到了多模态检索的总钥匙。所谓「多模态」,不是说有一个无所不能的大模型同时懂图、懂声、懂视频;而是说,无论哪种模态,我们都有办法把它翻译成同一种「通用语言」——向量,然后在同一个空间里比远近。

这就是为什么我说它们是同一个问题。表面是三种内容,本质是一种思想:万物皆可向量,向量皆可比对。

五、总结:万物皆可向量的时代

回到开头三个朋友的问题。现在你可以用一句话回答他们了:你们手机里那个「魔术」,是把内容压成数字,再去库里找最近邻。搜题、识曲、找原片,魔术师的手法不同,但变的是同一个戏法。

把今天的几个关键点收一下:

我的判断:感知哈希、音频指纹这类「不理解内容」的经典算法不会消失,因为它们便宜、稳定、可解释——在「找一模一样」的场景里,没人打得过它们。但「找意思相近」的战场,正在被 CLIP 这类多模态向量模型快速吞并。未来真正的趋势,是两者融合:用指纹做精确召回,用语义向量做模糊理解,叠在同一套向量检索底座上。

我做两个预测,给自己设个 deadline:

到 2027 年底,主流的以图搜图、听歌识曲、视频版权三类产品,后端会高度统一到「一套向量数据库 + 多种编码器」的架构上——前端三个入口,后端一个引擎。

再往后看,「跨模态检索」会变成常态:你哼一段旋律去搜视频、描述一个画面去搜音乐。因为既然万物都能变成同一个空间里的向量,那么用什么去搜什么,就不再有边界。

半年后、两年后,回来看看我说得对不对。但有一件事我现在就敢下结论:当你理解了「万物皆可向量」这六个字,你就理解了这个时代一半的 AI 应用。