Wer nach einer EmbeddingGemma 2 API sucht, muss zunächst zwei ähnlich benannte Angebote auseinanderhalten: Googles gehostete Embedding-API heißt Gemini Embedding 2. EmbeddingGemma 2 dagegen ist ein offenes Modell, das vor allem für lokale und Edge-Inferenz gedacht ist. Das macht es interessant für private multimodale Suche – allerdings wählen und betreiben Sie die Serving-Schicht selbst.
Gibt es EmbeddingGemma 2 als Google API?
EmbeddingGemma 2 ist offiziell verfügbar, in der aktuellen Dokumentation der verwalteten Gemini API nennt Google jedoch gemini-embedding-2, nicht embeddinggemma-2. Die Model Card von EmbeddingGemma 2 und Googles Entwicklerleitfaden beschreiben ein herunterladbares Modell für lokale Bibliotheken wie Sentence Transformers.
| Anforderung | Passendere Wahl | Zugriffsmuster |
|---|---|---|
| Verwalteter Google-Endpunkt | Gemini Embedding 2 | Von Google gehostete Gemini API |
| Private lokale Inferenz | EmbeddingGemma 2 | Hugging Face/Sentence Transformers oder eine andere Runtime |
| Lokale REST-Kompatibilität | EmbeddingGemma 2 | Ollama, LiteRT-LM oder ein Drittanbieter-Server |
| Retrieval auf Smartphone oder Edge-Gerät | EmbeddingGemma 2 | Google AI Edge / Device-Runtime |
Ein lokaler /v1/embeddings-Endpunkt wird von der Runtime bereitgestellt, die Sie einsetzen – nicht von Google Cloud. Falls der verwaltete Dienst gemeint ist: Die Dokumentation zu Gemini Embedding 2 beschreibt Cloud-SDK und Anfrageformate. Verwenden Sie dafür gemini-embedding-2, nicht embeddinggemma-2.
from google import genai
client = genai.Client()
result = client.models.embed_content(
model="gemini-embedding-2",
contents="A private semantic search service",
)
print(result.embeddings)
Der verwaltete Aufruf nutzt Googles gehostete API. Beim lokalen Modell gelten dagegen die Zugangsdaten und Limits der Runtime, die Sie bereitstellen.
Was im lokalen Modell steckt
EmbeddingGemma 2 ist ein multimodales Embedding-Modell mit 740 Millionen Parametern. Die Architektur trennt einen Textkern mit 270M Parametern von optionalen Encodern für Bild und Audio. Eine Bereitstellung kann daher nur die tatsächlich benötigten Modalitäten laden. Google und DeepMind positionieren das Modell für Retrieval über Text, Code, Bilder, Videos und Audio – nicht für die Textgenerierung.
| Spezifikation | EmbeddingGemma 2 |
|---|---|
| Parameter insgesamt | 740M |
| Textkern | 270M |
| Vision-Encoder | 170M |
| Audio-Encoder | 300M |
| Native Vektorgröße | 768 Dimensionen |
| Kleinere MRL-Größen | 512, 256 und 128 Dimensionen |
| Kontextfenster | 8.192 Token |
| Modalitäten | Text, Code, Bild, Video, Audio |
| Lizenz | Apache 2.0 |
Die Model Card beschreibt einen gemeinsamen Vektorraum für modalitätsübergreifende Vergleiche. Die Angabe von 740M bezieht sich auf das vollständige Modell. Googles Entwicklerleitfaden zeigt jedoch die selektive Nutzung der Encoder: Bei reinen Textpfaden ohne Bild und Audio können Speicherbedarf zur Laufzeit und aktive Berechnungen geringer ausfallen.
Die passende Serving-Option je nach Zielumgebung
Sentence Transformers für Python-Anwendungen
Für einen Python-Service ist der offiziell dokumentierte Weg der Checkpoint google/embeddinggemma-2 über Sentence Transformers. Damit steuern Sie Batching, Device-Platzierung, Prompts, Normalisierung und die Vektorkürzung direkt.
Für Retrieval sollten Query und Dokument unterschiedliche Instruktionen erhalten. Googles Beispiele verwenden für die Suchanfrage ein Query-Präfix und für Dokumente ein Format wie title: none | text: .... Am zuverlässigsten ist es, model.encode mit dem passenden Prompt-Namen zu verwenden, statt beide Seiten über einen generischen Aufruf einzubetten.
from sentence_transformers import SentenceTransformer
model = SentenceTransformer("google/embeddinggemma-2")
query_vector = model.encode(
"How do I rotate an API key?",
prompt_name="query",
normalize_embeddings=True,
)
document_vectors = model.encode(
[
"title: API keys | text: Rotate keys from the security settings page.",
"title: Billing | text: Download invoices from the billing page.",
],
prompt_name="document",
normalize_embeddings=True,
)
Wählen Sie diesen Weg, wenn Sie auf Python-Ebene volle Kontrolle benötigen. Brauchen mehrere Dienste einen stabilen Vertrag, ist eine HTTP-serving-Runtime die bessere Wahl.
Ollama für einen schnellen lokalen REST-Endpunkt
Die EmbeddingGemma-2-Seite von Ollama stellt eine einfache lokale API unter http://localhost:11434/api/embed bereit:
ollama pull embeddinggemma-2
curl http://localhost:11434/api/embed \\
-d '{
"model": "embeddinggemma-2",
"input": "A private semantic search service"
}'
Ollama führt Modell-Tags wie 270m, 440m, 570m und 740m auf; die sichtbaren Paketgrößen reichen von ungefähr 378 MB bis 1,3 GB. Verstehen Sie diese als separat paketierte Modellvarianten, nicht als austauschbare Bezeichnungen für den vollständigen Checkpoint mit 740M Parametern. Prüfen Sie vor einem Produktionsvertrag den installierten Tag und die unterstützten Eingabemodalitäten: Die Modellfamilie wird als multimodal beschrieben, doch die sichtbaren Variantenlisten dokumentieren nicht jede Modalität gleich eindeutig.
Weiterhin nötig sind konsistente Task-Präfixe, identisches Modell und dieselbe Dimension sowie ein Neuaufbau des Indexes bei Modellwechseln.
Edge-Runtimes für die Bereitstellung auf Geräten
Google AI Edge dokumentiert EmbeddingGemma V2 im Universal-Embedder-Leitfaden. Die Dokumentation zu LiteRT-LM-Embedding-Modellen beschreibt wiederum ein lokales, OpenAI-kompatibles Serving-Muster für /v1/embeddings. Dieser Weg passt, wenn Offline-Betrieb und Datenschutz direkt auf dem Gerät wichtiger sind als der Komfort eines klassischen Cloud-Deployments.
Für einen Server auf gewöhnlicher Hardware starten Sie mit Sentence Transformers oder Ollama. Wechseln Sie zu einer Edge-spezifischen Runtime, wenn Offline-Betrieb, Datenschutz, Start-Footprint oder Geräteintegration eine zentrale Anforderung sind.
Multimodale Szenarien, für die sich das größere Modell lohnt
EmbeddingGemma 2 spielt seine Stärken vor allem aus, wenn ein Projekt einen gemeinsamen Retrieval-Raum für unterschiedliche Medientypen benötigt.
| Einsatzfall | Vorteil multimodaler Embeddings |
|---|---|
| Modalitätsübergreifende Mediensuche | Natürlichsprachliche Anfragen lassen sich mit Produktfotos, Videoclips, Audio und Bildunterschriften abgleichen. |
| Suche in visuellen Dokumenten | Bei der Suche in Scans können OCR-Texte mit Seitenlayout und eingebetteten Bildern kombiniert werden. |
| Intent-Routing auf dem Gerät | Private Text- oder Medieninhalte werden lokal geroutet, ohne Rohdaten an einen gehosteten Dienst zu senden. |
Codesuche und Retrieval für Entwickler
Die veröffentlichte Evaluierungstabelle nennt für EmbeddingGemma 2 einen MTEB-Code-Score von 78,68 gegenüber 68,76 für EmbeddingGemma 1 im angeführten Code-Benchmark. Das ist ein guter Anlass, das Modell für Repository-Suche, Retrieval in API-Dokumentationen und Code-orientiertes RAG zu testen. Für Ihren Sprachmix oder Ihre Codebasis ist es jedoch keine Garantie.
Wann sich die Migration auf das größere Modell nicht lohnt
Besteht eine Pipeline ausschließlich aus gewöhnlichem OCR-Text, kann multimodale Unterstützung mehr Komplexität schaffen, ohne die Retrieval-Qualität zu erhöhen. Ein Paperless-ngx-Nutzer fasste den Zielkonflikt so zusammen:
„Ich bin nicht sicher, ob embeddinggemma-2 für das reine OCR, das paperless-ngx an das Modell sendet, überhaupt besser ist als reguläres embeddinggemma. Das wirkt nach deutlich mehr Aufwand für dieselben Ergebnisse.“ — u/Great-Cow7256, Reddit
Das ist kein Benchmark-Ergebnis, formuliert aber den richtigen Migrationstest: Vergleichen Sie die Retrieval-Qualität auf Ihrem tatsächlichen Korpus, bevor Sie einen funktionierenden Text-only-Index neu aufbauen.
Die richtige Dimension: 768d, 512d, 256d oder 128d
Die Embedding-Dokumentation von Google beschreibt für EmbeddingGemma 2 eine Matryoshka-artige Kürzung. Damit können Sie nach dem Encoding eine kleinere Repräsentation wählen. Kleinere Vektoren reduzieren Speicherbedarf im Index und Übertragungsgröße, bei der stärksten Reduktion sinkt jedoch die Qualität.
| Ausgabe | Kompressionsverhältnis | MTEB multilingual v2 | MTEB code v1 | MSEB retrieval |
|---|---|---|---|---|
| 768d | 1× | 61.36 | 78.68 | 69.54 |
| 512d | 1.5× | 61.17 | 77.24 | 69.18 |
| 256d | 3× | 60.41 | 76.18 | 66.76 |
| 128d | 6× | 57.89 | 71.41 | 56.71 |
Diese Werte stammen aus der veröffentlichten Evaluierungstabelle auf Ollamas Modellseite. Beginnen Sie bei einem neuen multimodalen Index mit 768d. Wenn Speicher zählt, kommen 512d oder 256d infrage; 128d sollten Sie erst nach Tests mit einem textlastigen Workload einsetzen.
Mischen Sie keine Dimensionen innerhalb eines Vektorindex. Speichert eine bestehende Datenbank Vektoren mit 768 Dimensionen, erfordert der Wechsel auf 256d ein erneutes Embedding der indexierten Dokumente und den Neuaufbau des Indexes. Query-Vektoren müssen dasselbe Modell, dieselben Prompts, dieselbe Normalisierung und dieselbe Dimension wie die Dokumentvektoren verwenden.
Die Entscheidung richtet sich nach dem Workflow, nicht nach der Modellgröße
Nutzen Sie Gemini Embedding 2 für einen verwalteten Google-Endpunkt. Sentence Transformers eignet sich für Kontrolle auf Python-Ebene, Ollama für einen schnellen lokalen HTTP-Service und AI Edge/LiteRT-LM für die Offline-Bereitstellung auf Geräten.
Bleiben Sie bei einem kleineren reinen Textmodell, wenn der Korpus aus schlichtem OCR-Text besteht und der bestehende Index sein Relevanzziel erfüllt. EmbeddingGemma 2 kann eine multimodale Architektur vereinfachen, verbessert aber nicht automatisch eine reine Textarchitektur.
FAQ zur EmbeddingGemma 2 API
Ist EmbeddingGemma 2 über die Gemini API verfügbar?
Die Dokumentation der verwalteten Gemini API nennt derzeit gemini-embedding-2. EmbeddingGemma 2 wird primär als offenes Modell für lokale Inferenz dokumentiert, auch wenn lokale Runtimes API-kompatible Endpunkte bereitstellen können.
Kann EmbeddingGemma 2 auf einer CPU laufen?
CPU-Inferenz ist mit lokalen Runtimes möglich, die ausdrücklich ein CPU-Backend anbieten. Die AI-Edge-Dokumentation zu Embeddings ist dafür die relevante Runtime-Referenz. Die Leistung hängt weiterhin von Hardware, Quantisierung, Batch-Größe und Modalität ab.
Müssen vorhandene Vektoren neu erstellt werden?
In der Regel ja, wenn Sie das Embedding-Modell, die Task-Formatierung, die Normalisierungsstrategie oder die Vektordimension ändern. Speichern Sie Modellkennung, Dimension und Preprocessing-Metadaten zusammen mit dem Index, damit sich eine Migration reproduzieren lässt.