Gérez les schemas de votre application Vespa à l’aide des migrations Python. Pour comprendre les concepts derrière les schemas, les champs et le classement, voir Anatomie d’une application Vespa.

Création et évolution des schemas

Création et évolution des schemas

Utilisez les migrations pour définir et modifier vos schemas. Les migrations sont des fichiers Python situés dans vespa_app/migrations/ qui sont uniquement ajoutés, ordonnés par horodatage et réexécutés à chaque déploiement.

Générez une nouvelle migration :

uv run mistral-vespa generate-migration --app-dir ./vespa_app <name>

Cela crée un fichier horodaté avec un squelette de classe :

from mistralai.search.toolkit.plugins.vespa.migration import VespaMigration


class MyMigration(VespaMigration):
    def migrate(self) -> None:
        pass  # Define your changes here
Définition d’un schema

Définition d’un schema

Utilisez create_schema avec un indexing_mode explicite. DOCUMENT_PER_CHUNK est le mode recommandé : il indexe un document Vespa par fragment et injecte automatiquement les champs standard du fragment (contenu, plongement, identité, métadonnées) :

from mistralai.search.toolkit.plugins.vespa.app.schemas.app import FieldDefinition, 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,
            # The standard chunk fields (content, embedding, identity, metadata) are
            # added automatically. `fields` only declares your extra fields.
            fields=[
                FieldDefinition.TextField(name="title"),
                FieldDefinition.TimestampField(name="created_at"),
            ],
        )
i
Information

Restrictions pour le nom de l’application : le nom passé à set_app_name() doit contenir uniquement des lettres minuscules (a-z). Les chiffres, traits de soulignement, traits d’union et autres caractères spéciaux ne sont pas autorisés.

Cela injecte les champs nécessaires au pipeline (contenu du fragment, plongement, identité, métadonnées) et ajoute vos champs spécifiques au projet via fields.

Avertissement

create_default_schema(...) est obsolète : il ne produit que l'ancien jeu de champs IndexingMode.SINGLE_DOCUMENT et sera supprimé avant la version 1.0.0. Utilisez plutôt create_schema(..., indexing_mode=...).

Ajout de champs à un schema existant

Utilisez add_field dans une nouvelle migration pour ajouter des champs après la création du schema initial :

from mistralai.search.toolkit.plugins.vespa.app.schemas.app import FieldDefinition
from mistralai.search.toolkit.plugins.vespa.migration import VespaMigration, add_field


class AddViewCount(VespaMigration):
    def migrate(self) -> None:
        add_field("articles", FieldDefinition.CountField(name="view_count"))

Définissez multi_dimensional=True pour les champs de type tableau (par exemple, les embeddings par fragment ou les fragments de texte). Les dimensions des embeddings sont définies une fois lors de la création du schema avec create_schema(embedding_dimensions=...).

Schemas multiples

Appelez create_schema() plusieurs fois pour enregistrer plusieurs types de documents sous une seule application. Chaque schéma génère son propre fichier .sd et profil de requête. Les noms doivent être uniques.

Aides pour les migrations

Aides pour les migrations

AideDescription
set_app_name(name)Définir le nom de l’application (obligatoire dans la première migration)
create_schema(...)Créer un schéma avec un indexing_mode explicite et des champs (recommandé)
create_default_schema(...)Schéma hérité à document unique (obsolète — supprimé avant la version 1.0.0)
add_field(schema, field)Ajouter un champ à un schema existant
add_query_profiles(...)Ajouter ou mettre à jour des profils de requête
add_schema_rank_profiles(schema, paths)Ajouter des fichiers de profils de classement personnalisés
add_schema_model_files(schema, paths)Ajouter des fichiers de Modèle de ML
add_schema_custom_document_summary(...)Ajouter des résumés de document personnalisés
Déploiement

Déploiement

mistral-vespa migrate découvre les migrations, les exécute dans l’ordre, construit le package de l’application et le télécharge. Voir les guides Développement local et Déploiement et exploitation pour plus de détails.

Instantané optionnel

Instantané optionnel

uv run mistral-vespa generate \
  --app-dir ./vespa_app \
  --path ./vespa.lock

Écrit le package de l’application sur disque pour inspection ou validation CI. Il n’est pas utilisé pour le déploiement.

Voir aussi

Voir aussi