Référence pour les assistants utilisés dans les migrations. Tous les assistants sont importés depuis mistralai.search.toolkit.plugins.vespa.migration et appelés depuis la méthode migrate() d’une migration.

from mistralai.search.toolkit.plugins.vespa.migration import (
    VespaMigration,
    set_app_name,
    create_schema,
    add_field,
    add_query_profiles,
)
Configuration de l’application

Configuration de l’application

set_app_name

def set_app_name(app_name: str) -> None

Définir le nom de l’application pour l’exécution de la migration. Obligatoire dans la première migration. Doit contenir uniquement des lettres minuscules (a-z).

set_content_id

def set_content_id(content_id: str) -> None

Remplace l’ID du cluster de contenu utilisé dans services.xml (par défaut, le nom de l’application). Utilisez ceci si le cluster déployé a été créé initialement avec un ID différent — une modification du nom serait sinon considérée par Vespa comme une suppression + recréation, détruisant tous les documents stockés.

allow_schema_removal

def allow_schema_removal(until: str) -> None

Marquez une migration comme supprimant intentionnellement un ou plusieurs schémas. Vespa rejette les suppressions de schémas par défaut pour protéger les données ; ceci écrit un fichier validation-overrides.xml autorisant la suppression jusqu’à la date until (au format ISO "AAAA-MM-JJ"). Choisissez une date une ou deux semaines après votre fenêtre de déploiement.

set_distribute_across_groups

def set_distribute_across_groups(value: bool) -> None
Avertissement

Obsolète. Un mécanisme de compatibilité pour l’autodécouverte Kubernetes. Définissez les groupes explicitement dans le fichier de topologie pour les nouveaux déploiements.

Création de schémas

Création de schémas

create_schema

def create_schema(
    name: str,
    mode: SearchMode,
    embedding_dimensions: int,
    indexing_mode: IndexingMode,
    fields: list[FieldDefinition] | None = None,
    custom_functions: list[FunctionWithInputs] | None = None,
    default_query_profile_name: str | None = None,
    top_chunks: int | None = None,
    id_field: str | None = None,
    content_cluster: str = "content",
) -> None

Créer un schéma avec un mode d’indexation explicite. Il s’agit de la méthode recommandée pour définir un schéma.

ParamètreTypeValeur par défautDescription
namestr(obligatoire)Nom du type de document (uniquement des lettres minuscules et des traits de soulignement)
modeSearchMode(obligatoire)INDEX ou STREAMING
embedding_dimensionsint(obligatoire)Taille des embeddings appliquée à tous les champs d’embedding
indexing_modeIndexingMode(obligatoire)Disposition du document : DOCUMENT_PER_CHUNK (recommandé) ou SINGLE_DOCUMENT (obsolète, déconseillé)
fields`list[FieldDefinition]None`None
custom_functions`list[FunctionWithInputs]None`None
default_query_profile_name`strNone`None
top_chunks`intNone`None
id_field`strNone`None
content_clusterstr""content""Cluster de contenu Vespa qui contient les documents de ce schéma

create_default_schema

Avertissement

Obsolète — supprimé avant la version 1.0.0. Assistant historique pour les schémas SINGLE_DOCUMENT : il prend schema_version et additional_fields au lieu de indexing_mode/fields. Utilisez plutôt create_schema(..., indexing_mode=...).

Énumérations

Énumérations

Les deux sont importées depuis mistralai.search.toolkit.plugins.vespa.app.schemas.app.

SearchMode

ValeurDescription
SearchMode.INDEXRecherche indexée traditionnelle — BM25, ANN/HNSW, classement en deux phases
SearchMode.STREAMINGRecherche en streaming — voisin le plus proche exact, filtrage d’attributs, classement en une seule phase

IndexingMode

ValeurDescription
IndexingMode.DOCUMENT_PER_CHUNKRecommandé. Un document Vespa par fragment, adressable individuellement par son ID déterministe
IndexingMode.SINGLE_DOCUMENTHéritage : un document Vespa par source, les fragments regroupés dans des tableaux. Obsolète — supprimé avant la version 1.0.0
Types de champs

Types de champs

Les champs sont déclarés avec FieldDefinition, importé depuis mistralai.search.toolkit.plugins.vespa.app.schemas.app, puis passés à create_schema(fields=[...]) ou add_field(...). Définissez multi_dimensional=True (lorsqu’il est pris en charge) pour rendre un champ multivalué.

Type de champObjectifUtilisé dans la correspondance de requêteGénère des Fonctions de classement
EmbeddingFieldEmbeddings vectoriels pour la recherche sémantiqueOui (ANN/HNSW)Distance, similarité cosinus
TextFieldTexte pour la recherche par mot-clé/BM25OuiBM25, correspondance de champ
StringFieldMétadonnées stockées, non utilisées pour la correspondanceNonAucune
TimestampFieldClassement basé sur le tempsNonActualité, récence
CountFieldValeur numérique utilisée pour le classementNonNormalisation, boost
IntFieldEntier stocké, non classéNonAucune
BoolFieldBooléen stocké, non classéNonAucune
LanguageFieldBalise de langue par document (RFC 3066)Non (filtre)Aucune

EmbeddingField

FieldDefinition.EmbeddingField(name: str, multi_dimensional: bool = False)

Embeddings vectoriels indexés avec HNSW. La dimension du tenseur est dérivée des embedding_dimensions du schéma. Définissez multi_dimensional=True pour un tableau d’embeddings (par exemple par fragment).

TextField

FieldDefinition.TextField(
    name: str,
    multi_dimensional: bool = False,
    summary: SummaryDefinition = SummaryDefinition(),
)

Texte tokenisé correspondant à la requête utilisateur (BM25). Inclus dans le jeu de champs par défaut. summary contrôle la manière dont le champ est affiché dans les résultats.

StringField

FieldDefinition.StringField(
    name: str,
    multi_dimensional: bool = False,
    fast_search: bool = False,
    match: MatchDefinition | None = None,
    summary: SummaryDefinition | None = SummaryDefinition(),
    attribute: bool = True,
)

Métadonnées stockées qui ne sont pas utilisées pour la correspondance avec la requête (à utiliser pour les filtres, les identifiants, les balises). fast_search construit un index d’attributs dédié (plus de mémoire/CPU, recherches plus rapides) ; match définit un schéma de correspondance explicite ; attribute=False conservent la valeur hors des attributs en mémoire.

TimestampField

FieldDefinition.TimestampField(name: str, type: Literal["long", "int"] = "long")

Horodatage numérique utilisé pour les Fonctions d’actualité et de récence.

CountField

FieldDefinition.CountField(name: str)

Compteur entier qui génère des Fonctions de normalisation et de boost. Pour un entier que vous ne souhaitez pas classer, utilisez IntField.

IntField

FieldDefinition.IntField(
    name: str,
    multi_dimensional: bool = False,
    summary: SummaryDefinition = SummaryDefinition(),
)

Entier stocké non utilisé pour le classement ou la correspondance.

BoolField

FieldDefinition.BoolField(name: str)

Booléen stocké, non utilisé pour le classement ou la correspondance.

LanguageField

FieldDefinition.LanguageField(name: str = "language")

Définissez la langue du document (balise RFC 3066) et créez un index pour permettre le filtrage des documents par langue.

Évolution des schémas

Évolution des schémas

Ajout à un schéma existant dans une migration ultérieure. Chacun lève une ValueError si le schéma nommé n’existe pas.

add_field

def add_field(schema_name: str, field: FieldDefinition) -> None

Ajoute un champ unique à un schéma existant.

add_custom_functions

def add_custom_functions(schema_name: str, functions: list[FunctionWithInputs]) -> None

Ajoute des Fonctions de classement personnalisées à un schéma existant.

add_query_profiles

def add_query_profiles(query_profiles: list[QueryProfile]) -> None

Ajoute ou met à jour les profils de requête sur l’application. Voir Gestion du classement.

add_schema_rank_profiles

def add_schema_rank_profiles(schema_name: str, rank_profiles: list[Path]) -> None

Attachez des fichiers de profil de classement personnalisés à un schéma.

add_schema_model_files

def add_schema_model_files(schema_name: str, model_files: list[Path]) -> None

Attachez des fichiers de Modèle de ML à un schéma.

add_schema_custom_document_summary

def add_schema_custom_document_summary(schema_name: str, custom_document_summary: DocumentSummary) -> None

Attachez un résumé de document personnalisé à un schéma.

VespaMigration

VespaMigration

Classe de base pour chaque migration. Sous-classez-la et implémentez migrate(), en appelant les assistants ci-dessus :

from mistralai.search.toolkit.plugins.vespa.app.schemas.app import IndexingMode, SearchMode
from mistralai.search.toolkit.plugins.vespa.migration import VespaMigration, create_schema, set_app_name


class InitialSchema(VespaMigration):
    def migrate(self) -> None:
        set_app_name("myapp")
        create_schema(
            name="articles",
            mode=SearchMode.INDEX,
            embedding_dimensions=1024,
            indexing_mode=IndexingMode.DOCUMENT_PER_CHUNK,
        )
Voir aussi

Voir aussi