EmbeddingGemma:谷歌轻量级多语言向量模型
本文为长文精华摘要,完整内容请查看原文。
模型概览
EmbeddingGemma 是谷歌推出的最新多语言向量嵌入模型,参数规模 3.08 亿,上下文窗口 2048 token,支持超过 100 种语言。它在 Massive Text Embedding Benchmark (MTEB) 多语言和英语榜单上均取得领先成绩,是目前 5 亿参数以下表现最好的纯文本多语言嵌入模型。量化后模型内存占用低于 200 MB,非常适合移动设备上的检索增强生成(RAG)管道和智能体应用。
架构与训练
模型基于 Gemma3 变换器骨干网络,但将单向因果注意力改为双向注意力,从而从解码器转变为编码器架构。这种编码器在检索等嵌入任务上通常优于解码器型 LLM。架构末端通过均值池化层将 token 嵌入转换为文本嵌入,再经过两个全连接层输出 768 维向量。
EmbeddingGemma 采用了 Matryoshka 表示学习(MRL)训练,允许用户将 768 维输出按需截断为 512、256 或 128 维,从而加速下游处理并降低内存和存储开销。训练数据约 3200 亿 token,包含公开网页文本、代码文档和合成任务示例,并经过严格过滤以移除有害内容。
性能评估
在 MMTEB(多语言 v2)和 MTEB(英语 v2)基准测试套件中,EmbeddingGemma 在多项任务上均超越同规模基线模型。官方结果已在 MTEB 排行榜公布,且排除了在超过 20% MTEB 数据上训练的模型以避免过拟合。
使用指南
模型已集成到 Sentence Transformers、LangChain、LlamaIndex、Haystack、txtai、Transformers.js、Text Embeddings Inference (TEI) 和 ONNX Runtime 等主流框架中。使用时需注意提示词(prompt)的添加,例如查询任务应前置 "task: search result | query: ",文档任务应前置 "title: none | text: "。Sentence Transformers 的 encode_query 和 encode_document 方法会自动处理这些提示。
以下是一个使用 Sentence Transformers 进行语义检索的示例代码:
from sentence_transformers import SentenceTransformer
model = SentenceTransformer("google/embeddinggemma-300m")
query = "Which planet is known as the Red Planet?"
documents = [
"Venus is often called Earth's twin because of its similar size and proximity.",
"Mars, known for its reddish appearance, is often referred to as the Red Planet.",
"Jupiter, the largest planet in our solar system, has a prominent red spot.",
"Saturn, famous for its rings, is sometimes mistaken for the Red Planet."
]
query_embeddings = model.encode_query(query)
document_embeddings = model.encode_document(documents)
print(query_embeddings.shape, document_embeddings.shape) # (768,) (4, 768)
similarities = model.similarity(query_embeddings, document_embeddings)
print(similarities) # tensor([[0.3011, 0.6359, 0.4930, 0.4889]])
ranking = similarities.argsort(descending=True)[0]
print(ranking) # tensor([1, 2, 3, 0])
微调实战
文章以医疗指令检索数据集(MIRIAD)为例,展示了如何对 EmbeddingGemma 进行全参数微调。微调脚本在 RTX 3090(24GB VRAM)上运行约 5.5 小时,通过调整 mini_batch_size 和 batch_size 可进一步降低内存需求。
微调后的模型 sentence-transformers/embeddinggemma-300m-medical 在 MIRIAD 测试集上的 NDCG@10 分数从基线的 0.8340 提升至 0.8862,性能提升显著。对比显示,该微调模型在特定任务上甚至超越了参数规模两倍以上的通用嵌入模型,例如优于 5.96 亿参数的 Qwen/Qwen3-Embedding-0.6B(0.8493)。
延伸阅读
觉得有用?分享给更多人