检索与 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.08CLIP 最典型的用途
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 = 让图片和文字拥有同一种“语义坐标”,从而实现图文相似度计算和跨模态检索。