Embedders

Les embedders convertissent du texte en embeddings vectoriels pour la recherche sémantique. Les embeddings capturent le sens sémantique du texte, permettant de trouver des concepts similaires même si les formulations diffèrent.

API Embedder

API Embedder

Tous les embedders implémentent la classe de base abstraite Embedder, qui propose trois méthodes :

MéthodeSignatureDescription
embed(texts: list[str]) -> EmbeddingResultMéthode de base : génère un batch d’embeddings à partir de chaînes de caractères.
embed_chunks(chunks: list[DocumentChunk]) -> list[DocumentChunk]Génère des embeddings pour des fragments et renvoie des copies avec les embeddings intégrés.
embed_query(text: str) -> list[float]Génère un embedding pour une seule chaîne de caractères et renvoie le vecteur.

Seule la méthode embed est abstraite. embed_chunks et embed_query sont des méthodes concrètes construites par-dessus celle-ci.

EmbeddingResult

Type retourné par embed :

from pydantic import BaseModel

class EmbeddingResult(BaseModel):
    embeddings: list[list[float]]  # One embedding per input
    total_tokens: int              # Total tokens consumed
Mistral Embedder

Mistral Embedder

Utilisez l’API d’embedding de Mistral pour vectoriser du texte.

Installation : Bibliothèque principale (pas de dépendance supplémentaire requise)

Exemple :

from mistralai.client import Mistral
from mistralai.search.toolkit.embedders import MistralEmbedder, MODEL_1024_EMBEDDING

client = Mistral(api_key="your-api-key")
embedder = MistralEmbedder(
    client=client,
    model_name=MODEL_1024_EMBEDDING,
)
embedded_chunks = await embedder.embed_chunks(chunks)

Configuration :

OptionTypeValeur par défautUtilisation
model_namestrMODEL_128_EMBEDDINGmodèle d’embedding à utiliser (voir les constantes de modèle ci-dessous)
clientMistralObligatoireClient API Mistral (doit être configuré)

Constantes des modèles d’embedding :

Utilisez ces constantes prédFINies lors de la configuration de MistralEmbedder. Assurez-vous que le paramètre embedding_dimensions dans votre schéma Vespa correspond aux dimensions de sortie du modèle.

ConstanteNom du modèleDimensionsIdéal pour
MODEL_1024_EMBEDDING"mistral-embed"1024Par défaut pour les pipelines Search Toolkit (correspond au schéma Vespa embedding_dimensions=1024)
MODEL_256_EMBEDDING"mistral-embed-dim256-2510"256Environnements à faible latence et contrainte mémoire
MODEL_128_EMBEDDING"mistral-embed-dim128-2510"128Dimensions minimales (valeur par défaut)

Importation et utilisation :

from mistralai.search.toolkit.embedders import MistralEmbedder, MODEL_1024_EMBEDDING, MODEL_256_EMBEDDING, MODEL_128_EMBEDDING

# Use MODEL_1024_EMBEDDING for Search Toolkit pipelines
embedder = MistralEmbedder(client=client, model_name=MODEL_1024_EMBEDDING)

# Or use a different model for specific use cases
embedder_compact = MistralEmbedder(client=client, model_name=MODEL_256_EMBEDDING)

Traitement par lots (automatique) :

# Embed_chunks handles batching internally
chunks_with_embeddings = await embedder.embed_chunks(chunks)

# For custom batching
embeddings = await embedder.embed([
    "text 1",
    "text 2",
    "text 3",
])
Embedders personnalisés

Embedders personnalisés

Implémentez la classe de base Embedder avec une seule méthode embed :

from mistralai.search.toolkit.embedders import Embedder, EmbeddingResult


class MyEmbedder(Embedder):
    async def embed(self, texts: list[str]) -> EmbeddingResult:
        embeddings = my_provider.embed(texts)
        return EmbeddingResult(
            embeddings=embeddings,
            total_tokens=sum(len(t.split()) for t in texts),
        )

embed_chunks et embed_query sont héritées automatiquement.