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. Utilisez ce type pour instancier un MistralEmbedder. Search Toolkit valide les dimensions par rapport aux presets connus. Une dimension qui ne correspond pas au nom du modèle lève une erreur DimensionMismatchError. Transmettez un MistralEmbeddingPreset à create_schema 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.embedding import (
        DistanceMetric,
        MistralEmbeddingModel,
        MistralEmbeddingPreset,
        VectorDType,
    )
    
    # Pass a preset directly to create_schema (dimensions and metric filled in)
    from mistralai.search.toolkit.plugins.vespa.migration import create_schema
    
    create_schema(
        ...,
        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)Dimensionnalité vectorielle ; doit être >= 1
dtypeVectorDTypeFLOAT32FLOAT32 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