Le Modèle mistral-embed
Présentation de mistral-embed
Le modèle mistral-embed est le modèle d’embedding textuel de Mistral AI. Il transforme n’importe quel texte en un vecteur de 1024 dimensions, quelle que soit la longueur de l’entrée — une phrase courte ou un paragraphe entier produiront toujours un vecteur de taille identique.
Ce modèle est optimisé pour les tâches de recherche sémantique, de classification et de clustering sur du texte naturel (articles, documents, conversations, etc.).
Configuration et installation
Avant d’utiliser l’API, vous devez installer le SDK Python de Mistral et configurer votre clé API :
# Installation
# pip install mistralai
import os
from mistralai import Mistral
# Initialiser le client
api_key = os.environ.get("MISTRAL_API_KEY")
client = Mistral(api_key=api_key)
Vous pouvez obtenir votre clé API depuis la console Mistral. Stockez-la dans une variable d’environnement pour ne jamais l’exposer dans votre code.
Générer des embeddings
L’appel API est simple : vous passez une liste de textes et récupérez les vecteurs correspondants.
from mistralai import Mistral
client = Mistral(api_key=api_key)
# Générer des embeddings pour un ou plusieurs textes
response = client.embeddings.create(
model="mistral-embed",
inputs=[
"Les embeddings capturent la signification sémantique.",
"Mistral AI propose des modèles performants.",
"Le RAG améliore la qualité des réponses."
],
)
# Accéder aux vecteurs
for i, data in enumerate(response.data):
print(f"Texte {i+1}: vecteur de {len(data.embedding)} dimensions")
print(f" Premiers éléments: {data.embedding[:5]}")
Sortie typique :
Texte 1: vecteur de 1024 dimensions
Premiers éléments: [0.0234, -0.1567, 0.0891, 0.0123, -0.0456]
Texte 2: vecteur de 1024 dimensions
Premiers éléments: [0.0189, -0.1234, 0.0678, 0.0345, -0.0567]
Texte 3: vecteur de 1024 dimensions
Premiers éléments: [0.0312, -0.1456, 0.0789, 0.0234, -0.0345]
Structure de la réponse API
La réponse contient plusieurs informations utiles :
response = client.embeddings.create(
model="mistral-embed",
inputs=["Exemple de texte à encoder."],
)
# Objet de réponse
print(response.model) # "mistral-embed"
print(response.usage) # tokens consommés
# Données d'embedding
embedding_data = response.data[0]
print(embedding_data.index) # 0 (position dans la liste d'inputs)
print(len(embedding_data.embedding)) # 1024
print(type(embedding_data.embedding)) # list[float]
Exemple complet : encoder et stocker
Voici un pipeline typique pour encoder un corpus de documents et préparer les vecteurs pour une recherche ultérieure :
import numpy as np
from mistralai import Mistral
client = Mistral(api_key=api_key)
# Corpus de documents
documents = [
"Mistral AI est une entreprise française d'intelligence artificielle.",
"Le RAG combine recherche d'information et génération de texte.",
"Les embeddings permettent la recherche sémantique.",
"Python est le langage le plus utilisé en data science.",
"FAISS est une bibliothèque de recherche vectorielle par Meta.",
]
# Encoder tous les documents
response = client.embeddings.create(
model="mistral-embed",
inputs=documents,
)
# Convertir en matrice NumPy pour les calculs
embeddings_matrix = np.array([d.embedding for d in response.data])
print(f"Matrice d'embeddings: {embeddings_matrix.shape}")
# Matrice d'embeddings: (5, 1024)
# Sauvegarder pour usage ultérieur
np.save("document_embeddings.npy", embeddings_matrix)
Limites et bonnes pratiques
Quelques points importants à garder en tête :
- Longueur maximale : le modèle tronque les textes trop longs. Préférez des chunks de 512 à 2048 tokens.
- Pas de type d’input : contrairement à d’autres APIs, mistral-embed ne distingue pas
queryvsdocument. Vous passez simplement le texte. - Coût : les embeddings sont facturés au token. Optimisez en regroupant vos appels (batching, leçon suivante).
- Déterminisme : pour un même texte, le modèle retourne toujours le même vecteur.
Points clés à retenir
- mistral-embed produit des vecteurs de 1024 dimensions pour tout texte
- L’API accepte une liste d’inputs et retourne les vecteurs correspondants
- Les vecteurs sont des listes de float, facilement convertibles en NumPy
- Stockez vos embeddings en matrice NumPy pour les calculs de similarité
- Pensez à découper les textes longs avant l’encodage