EmbeddingGemma 2 : la recherche sémantique multilingue tient en 176 Mo sur un PC
Google publie EmbeddingGemma 2, un modèle d'embeddings de 0,74 B qui place texte, images, audio et vidéo dans le même espace vectoriel, et Unsloth le décline en GGUF à partir de 176 Mo. Pour une recherche documentaire locale, sans serveur ni API, c'est une brique à essayer.
Google publie EmbeddingGemma 2, un modèle d'embeddings de 0,74 B qui place texte, images, audio et vidéo dans le même espace vectoriel, et Unsloth le décline en GGUF à partir de 176 Mo. Pour une recherche documentaire locale, sans serveur ni API, c'est une brique à essayer.
Ce que fait le modèle
Un modèle d'embeddings transforme un texte (ou une image) en un vecteur de nombres. Deux contenus proches de sens donnent des vecteurs proches : c'est la base de la recherche sémantique et du RAG. EmbeddingGemma 2 totalise 740 M de paramètres selon sa fiche : un tronc texte de 130 M, un « embedder » de 140 M, un encodeur vision de 170 M et un encodeur audio de 300 M. On peut ne charger qu'une partie : 270 M pour le texte seul, 440 M avec les images, 740 M pour tout.
Les vecteurs font 768 dimensions, mais le modèle est entraîné en « Matryoshka » : on peut les tronquer à 512, 256 ou 128 dimensions, puis les renormaliser, pour diviser le stockage par six. Le contexte atteint 8 192 tokens, partagés entre modalités (environ 29 images ou 327 secondes d'audio). La fiche annonce plus de 100 langues couvertes et 140 à l'entraînement ; le français n'est pas cité nommément.
Ce que la fiche annonce, et ce qu'il faut vérifier
Les résultats sont ceux de Google DeepMind, sans vérification tierce mentionnée. Sur MTEB multilingue v2, la fiche donne 61,36, contre 61,15 pour la première version : le gain en texte pur est faible. Le progrès est net sur le code (78,68 contre 68,76) et sur les nouvelles modalités : 57,28 en recherche d'images (MMEB v2), 67,84 sur les documents visuels (VisDoc). La troncature coûte peu : 61,17 en 512 dimensions, 60,41 en 256, 57,89 en 128.
Trois points à vérifier. La licence, d'abord : l'en-tête affiche Apache 2.0 mais le lien pointe vers un document « gemma_4_license » ; la base Radar l'enregistre comme licence Gemma. À lire avant un usage professionnel. Ensuite, le modèle exige des préfixes de tâche : task: search result | query: pour une requête, title: none | text: pour un document ; les oublier dégrade les résultats. Enfin, la fiche déconseille le float16 (risque de valeurs NaN) et recommande bfloat16 ou float32. Aucun chiffre de mémoire n'est donné.
Les versions GGUF et la démo navigateur
La fiche Google ne mentionne ni GGUF, ni ONNX, ni MLX, mais son arbre compte 62 quantisations tierces. Celle d'Unsloth est la plus téléchargée (59 k en un mois d'après la page de liste). Elle ne couvre que la partie texte (0,3 B) : pas d'images ni d'audio en GGUF pour l'instant.
| Variante | Précision | Taille |
|---|---|---|
| UD-Q4_K_XL | 4 bits | 176 Mo |
| UD-Q5_K_XL | 5 bits | 210 Mo |
| UD-Q6_K_XL | 6 bits | 249 Mo |
| Q8_0 | 8 bits | 310 Mo |
| BF16 / F16 | 16 bits | 558 Mo |
Le Space embeddinggemma-2-webgpu montre l'autre voie : on dépose images, vidéos, sons ou textes, les embeddings sont calculés dans le navigateur via WebGPU, et une requête retrouve les médias correspondants. Rien ne quitte le poste. Sa page ne détaille ni la pile technique ni les prérequis ; un navigateur compatible WebGPU est à prévoir.
Comment l'essayer
- Installer la version GGUF :
ollama run hf.co/unsloth/embeddinggemma-2-GGUF:UD-Q4_K_XL, oullama-server -hf unsloth/embeddinggemma-2-GGUF:UD-Q4_K_XLpour obtenir un point d'accès local. - En Python, charger
SentenceTransformer("google/embeddinggemma-2")et encoder avecprompt_name="SearchQuery"pour les questions etprompt_name="Document"pour les textes. - Constituer un lot de 200 documents internes en français (comptes rendus, procédures), indexer en 256 dimensions, puis noter si les 10 premiers résultats de 20 questions sont pertinents. Refaire la mesure en 768 dimensions pour voir si la troncature coûte quelque chose sur votre corpus.
- Pour les scans et schémas, tester la version complète (740 M) en bfloat16 : c'est elle qui indexe les images.
À surveiller : la clarification de la licence et l'arrivée d'une quantisation qui embarque les encodeurs image et audio, condition pour une recherche multimodale vraiment locale.