Aller au contenu

Le média des artisans du web mercredi 2 septembre 2026

Back-end

Laravel 13.30 fait entrer les index vectoriels dans les migrations

Les versions 13.30.0 et 13.30.1 de Laravel, publiées le 1er septembre 2026, ajoutent la suppression d’index vectoriels au constructeur de schéma et une méthode Eloquent d’insertion sans doublon. Plusieurs correctifs visent les files d’attente, le cache Redis étiqueté et les mises à…

Laravel 13.30 fait entrer les index vectoriels dans les migrations

Laravel a publié coup sur coup les versions 13.30.0 et 13.30.1 le 1er septembre 2026. Au programme : la gestion des index vectoriels depuis les migrations, une nouvelle méthode Eloquent pour les insertions idempotentes, et une série de correctifs ciblés sur les files d’attente, le cache et le moteur SQL Server. Aucun changement cassant n’est signalé, la montée de version se fait donc sans réécriture.

Des index vectoriels pilotables depuis une migration

Le fait marquant de la version est l’arrivée de dropVectorIndex() sur le constructeur de schéma. La création d’index vectoriels existait déjà dans la branche 13 ; il manquait leur suppression propre depuis une migration, indispensable pour écrire une méthode down() réversible. Le stockage de vecteurs dans la base sert directement les fonctionnalités de recherche sémantique, aujourd’hui courantes dans les applications qui exposent des outils à des agents.

Schema::table('documents', function (Blueprint $table) {
    // Create the vector index (already available before 13.30)
    $table->vectorIndex('embedding');
});

// Reverse migration, now symmetrical
Schema::table('documents', function (Blueprint $table) {
    $table->dropVectorIndex('embedding');
});

Eloquent : insérer sans dupliquer, et récupérer les lignes

La méthode insertOrIgnoreReturning() complète le couple insertOrIgnore() et insertGetId(). Elle insère un lot en ignorant les violations de contrainte d’unicité, puis renvoie les enregistrements réellement créés, sur les pilotes qui prennent en charge la clause RETURNING.

$inserted = Document::insertOrIgnoreReturning([
    ['reference' => 'DOC-1024', 'status' => 'indexed'],
    ['reference' => 'DOC-1024', 'status' => 'indexed'], // duplicate ignored
]);

// $inserted only holds the rows that were actually written

Files d’attente et correctifs à connaître

L’événement WorkerStopping transporte maintenant le nom de la connexion et de la file concernées, ce qui facilite le diagnostic des arrêts de workers en production. Cette amélioration prolonge le travail engagé sur les files avec Laravel 13.26. Deux correctifs méritent l’attention des équipes : sous SQL Server, la clause limit() était ignorée lors d’un update(), et le cache Redis étiqueté laissait des entrées orphelines après invalidation.

ComposantChangementNature
SchémadropVectorIndex()Ajout
EloquentinsertOrIgnoreReturning()Ajout
Files d’attenteConnexion et file dans WorkerStoppingAmélioration
SQL Serverlimit() respecté sur update()Correctif
Cache RedisEntrées étiquetées orphelines suppriméesCorrectif

La suppression d’index vectoriels manquait à l’appel : sans elle, aucune migration de recherche sémantique n’était vraiment réversible.

La prise en charge des index vectoriels dépend du pilote de base de données et de son moteur. Vérifier la disponibilité de la fonctionnalité côté serveur, par exemple PostgreSQL équipé de pgvector, avant de porter une migration en production.

Ce qu’il faut retenir

Laravel 13.30 ne bouleverse rien mais consolide deux chantiers de fond : la recherche vectorielle native et l’ergonomie d’Eloquent pour les insertions de masse. La mise à jour est sans risque de rupture et se justifie surtout pour les projets qui manipulent des embeddings ou des files d’attente sensibles.

Sur mes projets, dropVectorIndex() résout un vrai point de friction : je gérais jusqu’ici la suppression d’index vectoriels en SQL brut dans mes migrations, avec le risque d’oublier la version de test. Voir la symétrie revenir dans le constructeur de schéma est le genre de détail qui fait gagner du temps sur la durée. — Simon Janvier

Pour aller plus loin

Notes de version officielles : Laravel 13.30.0 sur GitHub et le fichier CHANGELOG du dépôt.

Partager LinkedIn Bluesky Hacker News E-mail

À lire aussi