EmbeddingGemma 是什么?
EmbeddingGemma 是 Google DeepMind 推出的轻量级开放文本嵌入模型。它基于 Gemma 3 架构,参数量约为 3.08 亿,因此也经常以 EmbeddingGemma 300M 的名称出现。
与生成文本的聊天模型不同,EmbeddingGemma 会把文本转换成数值向量,用来表示文本的语义。含义相近的文本通常会在向量空间中更接近。
因此,它适合用于 语义搜索、RAG、文本分类、聚类、相似度计算、重复内容检测、推荐和代码检索。
核心规格
| 项目 | 说明 |
|---|---|
| 开发者 | Google DeepMind |
| 架构 | 基于 Gemma 3 |
| 参数量 | 约 308M |
| 输入 | 文本 |
| 上下文窗口 | 最多 2K tokens |
| 完整向量维度 | 768 |
| MRL 支持维度 | 512、256、128 |
| 语言 | 使用 100+ 种语言训练 |
| 本地运行 | 支持 |
Embedding 实际做了什么?
假设有两句话讨论 AI 如何改善 CRM,还有一句话讨论天气。EmbeddingGemma 会把每句话转换成向量。语义相近的前两句话应该比天气句子更接近。常见的比较方法是 Cosine Similarity。
主要应用
语义搜索
传统搜索依赖关键词,而语义搜索关注“意思”。例如“如何留住不满意的客户”可能检索到一篇关于“降低 Customer Churn”的文章,即使两者没有完全相同的关键词。
RAG
典型流程如下:
- 将文档切分成有意义的 Chunk。
- 为每个 Chunk 生成 Embedding。
- 把向量保存到 Vector Database。
- 对用户 Query 生成 Embedding。
- 找到最相近的 Chunk。
- 把检索到的 Context 交给生成式 LLM。
EmbeddingGemma 本身并不生成最终答案,它的核心职责是找到 相关上下文。
分类与聚类
可以将客服消息分类为销售、技术支持、账单等,也可以对大量文章或 Ticket 进行语义聚类。
相似内容与重复检测
适合查找相似文章、重复问题、相关产品或相似 Ticket。
代码检索
模型提供专门的 Code Retrieval prompt,可以根据自然语言描述搜索相关代码块。
使用 Ollama 运行
ollama pull embeddinggemma然后调用本地 API:
curl http://localhost:11434/api/embed \
-d '{
"model": "embeddinggemma",
"input": "Semantic search is useful for RAG systems."
}'Python 示例
import ollama
response = ollama.embed(
model="embeddinggemma",
input="Embedding models convert text into numerical vectors."
)
vector = response["embeddings"][0]
print(len(vector))完整向量为 768 维。
Ollama 官方模型页说明 EmbeddingGemma 需要 Ollama 0.11.10 或更高版本。
使用 Sentence Transformers
pip install -U sentence-transformersfrom sentence_transformers import SentenceTransformer
model = SentenceTransformer("google/embeddinggemma-300m")
query = model.encode(
"What is semantic search?",
prompt_name="Retrieval-query"
)
document = model.encode(
"Semantic search retrieves information based on meaning.",
prompt_name="Retrieval-document"
)
print(model.similarity(query, document))通过 Hugging Face 下载模型文件前,需要接受 Gemma 的使用条款。
Task Prompt 很重要
EmbeddingGemma 针对不同任务提供不同的推荐 prompt:
| 任务 | 推荐 Prompt |
|---|---|
| Retrieval Query | task: search result | query: ... |
| Retrieval Document | title: none | text: ... |
| Question Answering | task: question answering | query: ... |
| Fact Checking | task: fact checking | query: ... |
| Classification | task: classification | query: ... |
| Clustering | task: clustering | query: ... |
| Sentence Similarity | task: sentence similarity | query: ... |
| Code Retrieval | task: code retrieval | query: ... |
在 RAG 中,建议对 Query 使用 Retrieval-query,对文档使用 Retrieval-document。如果文档有明确标题,也可以把标题放入 prompt。Google 文档指出,合适的标题可能提升文档向量的效果。
Matryoshka Representation Learning
EmbeddingGemma 使用 MRL,因此除了完整的 768 维向量,还可以保留前 512、256 或 128 维。
- 768:优先质量和信息量
- 512:质量与存储之间的平衡
- 256:适合更大的索引
- 128:存储和检索成本最低,但可能带来更明显的质量下降
import numpy as np
small = vector[:256]
small = small / np.linalg.norm(small)截断 MRL 向量后,应当 重新归一化。
生产环境注意事项
注意 2K 上下文限制
不要把非常长的文档作为一个输入直接生成向量。更好的做法是切成语义完整的 Chunk。可以从 300–800 tokens 左右开始测试,但最终参数应根据真实 Retrieval 评估决定。
保持模型、维度和 Prompt 一致
不同模型、不同维度或不同 prompt 策略生成的向量不应随意混在同一个索引中。改变策略后,通常应重新生成向量并执行 Re-index。
统一相似度 Metric
Cosine Similarity 是常见选择。应用代码和 Vector Database 必须在归一化及距离配置上保持一致。
对语言和领域进行实际评估
虽然模型使用 100 多种语言训练,但不同语言和专业领域的效果仍可能不同。最好用真实 Query 与相关文档建立小型 Evaluation Set。
Embedding 不是 Reranker
Embedding 适合快速召回候选结果。如果对精度要求较高,可以再使用 Reranker 对 Top-K 结果重新排序。
本地运行有助于隐私保护
本地生成 Embedding 可以让原始文档保留在自己的基础设施中,而不必发送到第三方 API。
一个简单的本地 RAG 架构
Documents → Chunking → EmbeddingGemma → Vector DB
User Query → EmbeddingGemma → Similarity Search
Top-K Chunks → LLM → Final AnswerVector Database 可以使用 PostgreSQL + pgvector、Qdrant、Milvus 或 Weaviate 等方案。
什么时候适合使用 EmbeddingGemma?
如果你需要本地或离线 Embedding、多语言搜索、RAG、较低的硬件需求,或者更强的数据隐私控制,EmbeddingGemma 是一个值得考虑的选择。
但如果主要目标是 文本生成、聊天或直接推理,仍然需要生成式 LLM。
总结
EmbeddingGemma 将较小的模型规模、100+ 语言支持、2K 上下文、768 维向量和 MRL 结合在一起,非常适合语义搜索与本地 RAG。真实项目中的效果不仅取决于模型本身,还高度依赖 Task Prompt、Chunking、向量维度、Similarity Metric 和 Retrieval Evaluation。
官方资料
- Google AI for Developers — EmbeddingGemma model overview
- Google Developers Blog — Introducing EmbeddingGemma
- Hugging Face —
google/embeddinggemma-300m - Ollama Library —
embeddinggemma