Le rôle des embeddings dans le RAG
Les modèles d'embedding transforment du texte en vecteurs numériques qui capturent le sens sémantique. La qualité de votre retrieval dépend directement du choix du modèle d'embedding.
Comparatif des modèles principaux
OpenAI text-embedding-3-large
- Dimensions : 3072 (réductible via Matryoshka)
- Performance MTEB : top-tier
- Coût : $0.13 / 1M tokens
- Supporte le français avec une bonne qualité
- API simple, pas d'hébergement nécessaire
Cohere embed-v3
- Dimensions : 1024
- Supporte 100+ langues dont le français
- Input types spécialisés (search_document, search_query)
- Compression binaire native pour réduire les coûts de stockage
BGE-M3 (BAAI)
- Open source, hébergeable localement
- Multi-lingue, multi-granularité, multi-fonctionnalité
- Supporte dense, sparse et ColBERT en un seul modèle
- Excellent rapport qualité/coût pour le self-hosting
E5-Mistral-7B-Instruct
- Basé sur Mistral 7B, instruction-tuned pour l'embedding
- Performances proches de text-embedding-3-large
- Nécessite un GPU pour l'inférence
- Très bon sur les tâches complexes de retrieval
Critères de choix
- Budget : API (OpenAI/Cohere) vs self-hosted (BGE/E5)
- Latence : Modèles plus petits (BGE-small) pour le temps réel
- Langue : Vérifier la performance spécifique sur le français
- Dimensions : Plus de dimensions = plus de précision mais plus de stockage
- Volume : Au-delà de 1M documents, le self-hosting devient rentable
Configuration avec pgvector
CREATE EXTENSION vector;
CREATE TABLE documents (
id bigserial PRIMARY KEY,
content text,
embedding vector(1536)
);
CREATE INDEX ON documents USING ivfflat (embedding vector_cosine_ops);Recommandations par cas d'usage
- Prototype rapide : OpenAI text-embedding-3-small (bon marché, simple)
- Production multilingue : Cohere embed-v3 ou BGE-M3
- Données sensibles : BGE-M3 self-hosted (aucune donnée ne sort)
- Performance maximale : OpenAI text-embedding-3-large ou E5-Mistral