跳到主要内容
Cowers://
全部文章
检索与 RAG

CLIP 模型:图文语义对齐与跨模态检索

CLIP 将图片与文本映射到同一个向量空间,通过图文语义对齐支持零样本图像分类、以文搜图和以图搜图。

CLIP(Contrastive Language–Image Pre-training)是一类把图片和文本映射到同一个向量空间里的多模态模型。

它最核心的能力不是“生成图片”,而是判断:

一张图片和一段文字在语义上有多匹配。

它是怎么训练的

训练数据通常是一对一的:

  • 图片:一只狗在草地上跑
  • 文本:a dog running on grass

CLIP 包含两个编码器:

图片 → Image Encoder → 图片向量
文本 → Text Encoder  → 文本向量

训练目标是:

匹配的图片-文本 → 向量距离更近
不匹配的图片-文本 → 向量距离更远

本质上就是一种对比学习(Contrastive Learning)

例如:

图片:🐶
 
"a dog"          相似度 0.92
"an animal"      相似度 0.81
"a car"          相似度 0.08

CLIP 最典型的用途

1. 零样本图像分类

传统分类模型可能需要专门训练“猫 / 狗 / 汽车”分类器。

CLIP 可以直接拿文本作为类别:

图片 → image embedding
 
"a photo of a cat" → text embedding
"a photo of a dog" → text embedding
"a photo of a car" → text embedding

计算余弦相似度:

sim(image, cat)
sim(image, dog)
sim(image, car)

最高的就是预测类别。

因此叫 Zero-shot Classification

2. 以文搜图

例如用户搜索:

海边夕阳下奔跑的狗

把搜索文本编码成向量,再去图片向量库中搜索:

Query

CLIP Text Encoder

query embedding

向量数据库

最相似图片

这其实跟 RAG 中:

文本 → Embedding → 向量检索

非常像,只不过 CLIP 支持:

文本 ↔ 图片

跨模态检索。

3. 以图搜图

图片

CLIP Image Encoder

Embedding

向量检索

相似图片

4. 给生成模型提供语义指导

CLIP 在早期文生图体系中经常被用于判断:

生成图片

CLIP

和 Prompt 是否匹配?

现代扩散模型的具体架构已经更复杂,但 CLIP / CLIP-like 文本编码器仍然影响很大。

和普通 Embedding 模型的区别

你最近在学 RAG,可以直接这样理解:

模型 输入 输出 典型用途
BGE 文本 文本向量 文本 RAG
Qwen Embedding 文本 文本向量 文本检索
CLIP 图片 + 文本 同空间向量 图文检索
OCR 图片 文字 提取图片中的文字

所以:

BGE:
"苹果手机" ↔ "iPhone"
 
CLIP:
"一只橘猫" ↔ 🐈图片

这是 CLIP 最重要的特点:跨模态语义对齐

CLIP 不是视觉大模型

这一点容易混淆。

CLIP 一般不会像 GPT-4o、Qwen-VL 这种模型一样:

“这张图片里有三个人,其中一个人在拿咖啡……”

CLIP 通常只输出一个向量:

image → [0.13, -0.27, 0.91, ...]

所以更准确地说:

CLIP 是图文 Embedding / 对齐模型,而不是完整的视觉问答模型。

你可以把它记成一句话:

CLIP = 让图片和文字拥有同一种“语义坐标”,从而实现图文相似度计算和跨模态检索。