BGE,Clip,VIT
时间: 2025-05-29 14:47:16 浏览: 30
### BGE Model, CLIP, 和 Vision Transformer (ViT) 的对比
#### 背景介绍
BGE(BigScience General Embedding)、CLIP(Contrastive Language–Image Pre-training)以及 Vision Transformers (ViT) 是近年来机器学习领域中的重要进展。这些模型分别在自然语言处理、跨模态理解和计算机视觉方面取得了显著成就。
---
#### 1. **BGE 模型**
BGE 是由 BigScience 开发的一种通用嵌入模型,旨在通过大规模预训练生成高质量的语言表示向量[^1]。它支持多种语言,并能够用于文本分类、语义检索等多种任务。
其主要特点如下:
- 基于 Transformer 架构设计。
- 支持多语言环境下的语义理解。
- 提供了强大的零样本和少样本能力,在未见过的任务中表现优异。
```python
from sentence_transformers import SentenceTransformer
model = SentenceTransformer('bge-base-en')
embeddings = model.encode(["This is a test.", "Another example."])
print(embeddings.shape)
```
---
#### 2. **CLIP 模型**
CLIP 是 OpenAI 推出的一个联合图像与文本的双塔结构模型[^2]。它的核心目标是从大量互联网数据中提取特征并建立图像与文字之间的关联关系。具体而言:
- 使用对比学习方法优化损失函数。
- 可以直接应用于零样本迁移场景,比如识别新类别图片或生成描述性标签。
- 在多个基准测试集上的性能优于传统监督学习方法。
示例代码展示如何加载 CLIP 并计算相似度:
```python
import torch
from clip import load as clip_load
device = "cuda" if torch.cuda.is_available() else "cpu"
clip_model, preprocess = clip_load("RN50", device=device)
text_inputs = torch.cat([torch.tensor(preprocess(text)) for text in ["a photo of cat"]]).to(device)
image_input = preprocess(image).unsqueeze(0).to(device)
with torch.no_grad():
image_features = clip_model.encode_image(image_input)
text_features = clip_model.encode_text(text_inputs)
similarity = (100.0 * image_features @ text_features.T).softmax(dim=-1)
print(similarity)
```
---
#### 3. **Vision Transformer (ViT)**
不同于卷积神经网络的传统架构,ViT 将输入图像分割成固定大小的小块(patch),并将它们视为序列化 token 输入到标准 transformer 中进行建模[^3]。这种创新方式使得 ViT 成为了现代 CV 领域的重要组成部分之一。以下是几个关键特性总结:
- 更灵活的设计允许更高效地扩展至更大规模的数据集中去训练更深更大的网络;
- 对硬件资源需求较高但由于 GPU/TPU 加速效果明显所以实际应用广泛;
简单实现例子如下所示:
```python
from transformers import ViTModel, ViTFeatureExtractor
import requests
from PIL import Image
import numpy as np
url = 'https://upload.wikimedia.org/wikipedia/commons/thumb/d/dd/Golden_Retriever_Head.jpg/800px-Golden_Retriever_Head.jpg'
image = Image.open(requests.get(url, stream=True).raw)
feature_extractor = ViTFeatureExtractor.from_pretrained('google/vit-base-patch16-224-in21k')
model = ViTModel.from_pretrained('google/vit-base-patch16-224-in21k')
inputs = feature_extractor(images=image, return_tensors="pt")
outputs = model(**inputs)
last_hidden_states = outputs.last_hidden_state
print(last_hidden_states[:, 0].shape)
```
---
#### 总结比较表
| 特征 | BGE | CLIP | ViT |
|---------------------|------------------------------|------------------------------|-------------------------------|
| 主要用途 | 文本嵌入 | 图像-文本匹配 | 单纯图像分类 |
| 数据类型 | 纯文本 | 多模态 | 纯图像 |
| 技术基础 | Transformer | Contrastive Learning | Pure Transformer |
| 输出形式 | 向量空间内的密集表达 | 图片和句子间的概率分布 | 图片分类得分 |
以上就是关于这三种不同类型的先进 AI 工具之间的一些基本信息及其潜在应用场景分析[^4].
---
阅读全文
相关推荐


















