Gérez les schémas de votre application Vespa avec des migrations Python. Pour comprendre les concepts liés aux schémas, aux champs et au ranking, consultez Anatomie d'une application Vespa.
Créer et faire évoluer les schémas
Utilisez les migrations pour définir et modifier vos schémas. Les migrations sont des fichiers Python placés dans vespa_app/migrations/. Elles fonctionnent en ajout uniquement, sont ordonnées par horodatage et sont réexécutées à chaque déploiement.
Générez une nouvelle migration :
uv run mistral-vespa generate-migration --app-dir ./vespa_app <name>Cette commande 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éfinir un schéma
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 de fragment standard (contenu, embedding, identité, métadonnées) :
from mistralai.search.toolkit.embedding import MistralEmbeddingPreset
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_model=MistralEmbeddingPreset.MISTRAL_EMBED_DIM_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 sur le nom de l'application : Le nom transmis à set_app_name() doit contenir uniquement des lettres minuscules (a-z). Les chiffres, les underscores, les traits d'union et les autres caractères spéciaux ne sont pas autorisés.
Cette commande injecte les champs requis par le pipeline (contenu du fragment, embedding, identité, métadonnées) et ajoute les champs propres à votre projet via fields.
create_default_schema(...) est déprécié. Il produit uniquement l'ensemble de champs hérité IndexingMode.SINGLE_DOCUMENT et sera supprimé avant la version 1.0.0. Utilisez plutôt create_schema(..., indexing_mode=...).
Ajouter des champs à un schéma existant
Utilisez add_field dans une nouvelle migration pour ajouter des champs après la création du schéma 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, des embeddings par fragment ou des fragments de texte). Le modèle d'embedding est défini une seule fois dans create_schema(embedding_model=...).
Plusieurs schémas
Appelez create_schema() plusieurs fois pour enregistrer plusieurs types de documents dans une même application. Chaque schéma produit son propre fichier .sd et son propre profil de requête. Les noms doivent être uniques.
Helpers de migration
| Helper | Description |
|---|---|
set_app_name(name) | Définir le nom de l'application (requis 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. Déprécié et supprimé avant la version 1.0.0. |
add_field(schema, field) | Ajouter un champ à un schéma existant |
add_custom_functions(schema, functions) | Ajouter des fonctions de ranking personnalisées à un schéma 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 ranking personnalisés |
add_schema_model_files(schema, paths) | Ajouter des fichiers de modèle ML |
add_schema_custom_document_summary(...) | Ajouter des résumés de documents personnalisés |
set_content_id(id) | Remplacer l'id du cluster de contenu (évite les renommages de cluster destructifs) |
allow_schema_removal(until) | Autoriser la suppression du schéma jusqu'à une date donnée |
Pour les signatures et paramètres complets, consultez la référence des helpers de migration.
Déploiement
mistral-vespa migrate découvre les migrations, les exécute dans l'ordre, construit le paquet d'application, puis le télécharge. Consultez les guides Développement local et Déployer et exploiter pour plus de détails.
Snapshot facultatif
uv run mistral-vespa generate \
--app-dir ./vespa_app \
--path ./vespa.lockÉcrit le paquet d'application sur le disque pour inspection ou validation CI. Il n'est pas utilisé pour le déploiement.
Voir aussi
- Anatomie d'une application Vespa : concepts : schémas, champs, profils de ranking, migrations
- Développement local : boucle complète de développement local
- Référence de la CLI : ensemble complet des options de la CLI