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
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 hereDé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"),
],
)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.
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
| Aide | Description |
|---|---|
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
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
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
- Anatomie d’une application Vespa — Concepts : schemas, champs, profils de classement, migrations
- Développement local — Boucle complète de développement local
- Référence de la CLI — Ensemble complet des options de la CLI