Modèle d'embedding

Un EmbeddingModel décrit les dimensions, le type de données et la métrique de distance des vecteurs stockés dans un index. La couche de schéma l’utilise comme source de vérité pour dimensionner les tenseurs d'embedding et choisir la métrique de classement, indépendamment de l'embedder qui produit les vecteurs à l'exécution.

L'embedder que vous transmettez au Pipeline (voir Embedders) produit les vecteurs, tandis que l'EmbeddingModel du schéma décrit l'index. Les deux doivent utiliser les mêmes dimensions.

Mistral ou personnalisé

Mistral ou personnalisé

Deux variantes existent, distinguées par type :

  • MistralEmbeddingModel : un modèle accessible via la Mistral Embedding API. Associez-le à un MistralEmbedder qui utilise le même nom de modèle. Search Toolkit valide les dimensions par rapport aux préréglages connus. Une dimension qui ne correspond pas au nom du modèle lève une ValidationError Pydantic (qui encapsule DimensionMismatchError). Transmettez un MistralEmbeddingPreset au schéma de la collection pour utiliser ses valeurs par défaut, ou construisez-le explicitement pour remplacer le type de données ou la métrique de distance :

    from mistralai.search.toolkit.document import Document
    from mistralai.search.toolkit.embedding import (
        DistanceMetric,
        MistralEmbeddingModel,
        MistralEmbeddingPreset,
        VectorDType,
    )
    from mistralai.search.toolkit.mistral_search_index.schema import MistralSearchIndexCollectionSchema
    
    # Pass a preset directly to the schema (dimensions and metric filled in)
    schema = MistralSearchIndexCollectionSchema.from_document_type(
        collection_name="my_collection",
        document_type=Document,
        embedding_model=MistralEmbeddingPreset.MISTRAL_EMBED_DIM_1024,
    )
    
    # Build explicitly to override the dtype or distance metric
    model = MistralEmbeddingPreset.MISTRAL_EMBED_DIM_1024.build_embedding_model(
        dtype=VectorDType.FLOAT16,
        distance_metric=DistanceMetric.INNER_PRODUCT,
    )
    
    # Construct directly (dimensions must match the known preset for that name)
    model = MistralEmbeddingModel(name="mistral-embed", dimensions=1024)
  • CustomEmbeddingModel : tout modèle d'embedding non accessible via la Mistral Embedding API, par exemple un modèle tiers ou auto-hébergé. Utilisez ce type avec votre propre implémentation de Embedder. Vous définissez les dimensions, le type de données et la métrique de distance. Search Toolkit n’applique aucune validation de preset :

    from mistralai.search.toolkit.embedding import CustomEmbeddingModel, DistanceMetric, VectorDType
    
    model = CustomEmbeddingModel(
        name="my-provider/text-embedding-3-small",
        dimensions=1536,
        dtype=VectorDType.FLOAT32,
        distance_metric=DistanceMetric.COSINE,
    )

L'union discriminée est exposée sous le nom EmbeddingModel, qui accepte l'une ou l'autre variante.

Presets

Presets

MistralEmbeddingPreset énumère les modèles d'embedding Mistral pris en charge et contient, pour chacun, son nom complet, ses dimensions et sa métrique de distance par défaut :

PresetNom complet du modèleDimensionsMétrique de distance
MISTRAL_EMBED_DIM_1024"mistral-embed"1024COSINE
MISTRAL_EMBED_DIM_256"mistral-embed-dim256-2510"256COSINE
MISTRAL_EMBED_DIM_128"mistral-embed-dim128-2510"128COSINE

Résolvez un preset à partir d'un nom de modèle avec MistralEmbeddingPreset.from_name("mistral-embed").

Associez chaque preset à la constante MistralEmbedder correspondante sur le pipeline :

Preset de schémaConstante d'embedder
MISTRAL_EMBED_DIM_1024MODEL_1024_EMBEDDING
MISTRAL_EMBED_DIM_256MODEL_256_EMBEDDING
MISTRAL_EMBED_DIM_128MODEL_128_EMBEDDING
Configuration vectorielle

Configuration vectorielle

Chaque EmbeddingModel contient trois champs de configuration vectorielle, également disponibles via le protocole VectorConfig :

ChampTypeValeur par défautRôle
dimensionsint(obligatoire)Dimension du vecteur, de 1 à 4096
dtypeVectorDTypeFLOAT16FLOAT32 ou FLOAT16
distance_metricDistanceMetricCOSINECOSINE, INNER_PRODUCT ou L2

La couche de schéma utilise ces champs pour dimensionner le tenseur d'embedding et sélectionner la métrique de classement (par exemple, similarité cosinus ou produit scalaire).

Schéma ou embedder

Schéma ou embedder

L'EmbeddingModel du schéma décrit l'index, tandis que l'embedder que vous transmettez au Pipeline produit les vecteurs lors des requêtes et de l'ingestion. Ces deux composants ont des rôles distincts et doivent utiliser les mêmes dimensions :

  • Un MistralEmbeddingModel dans le schéma s'associe à un MistralEmbedder avec la constante MODEL_*_EMBEDDING correspondante.
  • Un CustomEmbeddingModel dans le schéma s'associe à un Embedder personnalisé.

Gardez les dimensions synchronisées. Le schéma rejette les vecteurs dont la taille est incorrecte.

Voir aussi

Voir aussi

  • Embedders : le côté exécution qui produit les vecteurs.
  • Index de recherche : l'emplacement du schéma et du modèle d'embedding.
  • Mistral Search Index : Références pour MistralSearchIndexCollectionSchema(embedding_model=...). Les schémas Vespa et Postgres acceptent le même argument.