Accueil / Articles / Notes pratiques : Que se passe-t-il si le modèle d’incorporation de votre agent est sur le point d’être abandonné ?

Notes pratiques : Que se passe-t-il si le modèle d’incorporation de votre agent est sur le point d’être abandonné ?

Guide pratique détaillé : Que se passe-t-il si le modèle d’incorporation de votre agent est sur le point d’être abandonné ? Contrats, vérifications et emplacements pour du code à insérer destinés aux équipes qui utilisent ce modèle.

4214 mots

Utilisez ceci comme une version révisée destinée aux opérateurs des idées présentées dans « Et si le modèle d’embedding de votre agent était sur le point de disparaître ? » : étapes claires, emplacements de code ordonnés et notes de récupération qui survivent au transfert. L’étape « Aperçu » fonctionne le mieux lorsqu’elle est considérée comme une surface mesurable. Capturez un enregistrement exemplaire, un cas d’échec et la note de réversion avant d’élargir le périmètre. Enregistrez les temps d’exécution ainsi que le coût en tokens ou requêtes à côté des résultats fonctionnels. Une visibilité précoce des coûts évite les factures inattendues lorsque le processus passe de la démonstration aux environnements partagés.

Backfill
   ↓
Validate
   ↓
Canary
   ↓
Cut over
   ↓
Soak
   ↓
Clean up

Le problème

Pour l’étape « Le Problème », définissez les entrées, le responsable de l’étape et les critères d’arrêt avant de modifier le code. Les opérateurs doivent pouvoir relancer l’étape à partir d’un point de contrôle connu sans deviner l’état caché. Conservez la configuration en dehors du code de l’application. Les fichiers d’environnement, les bases de données secrètes et les indicateurs fonctionnels doivent être regroupés en un seul endroit que les opérateurs peuvent auditer sans avoir à lire l’ensemble du système. Préférez des sorties structurées avec validation de schéma plutôt que du texte libre lorsque l’étape suivante consiste en du code ou une appel à outil.

1. Données historiques

Pour l’étape 1 des données historiques, définissez les entrées, le responsable de l’étape et les critères de fin avant de modifier le code. Les opérateurs doivent pouvoir relancer l’étape à partir d’un point de contrôle connu sans deviner l’état caché. Documentez ensemble le parcours normal et le parcours de récupération. Les tentatives répétées, les contrôles humains et la gestion des messages non livrés font partie du produit, et non d’une mise en forme ultérieure. Préférez des sorties structurées avec validation de schéma plutôt que du texte libre lorsque l’étape suivante consiste en du code ou une appel à outil.

2. Données en temps réel

Pour l’étape des données en direct, définissez les entrées, le responsable de l’étape et les critères d’arrêt avant de modifier le code. Les opérateurs doivent pouvoir relancer l’étape à partir d’un point de contrôle connu sans deviner l’état caché. Préférez des unités petites et testables plutôt que des scripts complexes. Lorsqu’une étape échoue, l’échec doit indiquer une seule responsabilité et non un pipeline embrouillé. Préférez des sorties structurées avec validation de schéma plutôt que du texte libre lorsque l’étape suivante consiste en du code ou une appel à outil. Pour l’étape des données en direct, définissez les entrées, le responsable de l’étape et les critères d’arrêt avant de modifier le code. Les opérateurs doivent pouvoir relancer l’étape à partir d’un point de contrôle connu sans deviner l’état caché. Enregistrez les temps d’exécution ainsi que le coût des tokens ou des requêtes à côté des résultats fonctionnels. Une visibilité précoce des coûts évite les factures inattendues lorsque le processus passe de l’environnement de démonstration à des environnements partagés.

3. Trafic en production

Lorsque vous travaillez sur l’étape 3 liée au trafic de production, notez d’abord les conditions requises, le signal de succès ainsi que ce qui se passe en cas d’échec partiel. Cette liste de contrôle permet de garantir l’intégrité des modifications ultérieures du code. Conservez la configuration en dehors du code de l’application. Les fichiers d’environnement, les bases de données contenant des informations secrètes et les indicateurs fonctionnels doivent être regroupés en un seul endroit que les administrateurs peuvent auditer sans devoir lire l’ensemble du système. Mémorisez les instructions système stables ainsi que les schémas des outils. L’envoi répété d’un préambule identique est une cause fréquente de surconsommation des ressources.

Historical data      → distributed backfill
Live changes         → async dual-write
Production traffic   → canary + guardrails

La première règle de conception : versionner les embeddings

Lors de la phase « The First Design Rule », notez d’abord les exigences : entrées requises, signal de succès et comportement en cas d’échec partiel. Cette liste de contrôle permet de rester honnête lors des modifications ultérieures du code. Documentez ensemble le parcours normal et le parcours de récupération. Les tentatives répétées, les contrôles humains et la gestion des messages non livrés font partie intégrante du produit, et non d’améliorations ultérieures. Mémorisez les instructions du système stables ainsi que les schémas des outils. Envoyer à nouveau un préambule identique est une cause fréquente de problèmes.

record
 ├── namespace
 ├── knowledge-base version
 ├── embed_version
 └── embedding
CREATE TABLE semantic_cache (
    id            BIGSERIAL,
    embed_version TEXT NOT NULL,
    namespace     TEXT NOT NULL,
    query_hash    BYTEA NOT NULL,
    embedding     vector(...) NOT NULL,
    response      JSONB NOT NULL,
    created_at    TIMESTAMPTZ NOT NULL DEFAULT now(),
    last_hit_at   TIMESTAMPTZ NOT NULL DEFAULT now(),
    hit_count     INT NOT NULL DEFAULT 0,
    expires_at    TIMESTAMPTZ NOT NULL,
    PRIMARY KEY (embed_version, id)
) PARTITION BY LIST (embed_version);
CREATE TABLE semantic_cache_v1
    PARTITION OF semantic_cache
    FOR VALUES IN ('gemini-embedding-001');
CREATE TABLE semantic_cache_v2
    PARTITION OF semantic_cache
    FOR VALUES IN ('text-embedding-3-large');
                 semantic_cache
                      │
          ┌───────────┴───────────┐
          │                       │
     embed_version=V1        embed_version=V2
          │                       │
      V1 vectors              V2 vectors

Phase 0 — Compléter la représentation V2

Lors du travail sur l’étape de remplissage Phase 0, notez d’abord le contrat : les entrées requises, le signal de succès et ce qui se passe en cas d’échec partiel. Cette liste de contrôle permet de garantir l’honnêteté des modifications ultérieures du code. Préférez des unités petites et testables plutôt que des scripts complexes. Lorsqu’une étape échoue, l’échec doit indiquer une seule responsabilité et non un processus embrouillé. Cachez les instructions du système stables ainsi que les schémas des outils. Envoyer à nouveau un préambule identique est une cause fréquente de gaspillage. Lors du travail sur l’étape de remplissage Phase 0, notez d’abord le contrat : les entrées requises, le signal de succès et ce qui se passe en cas d’échec partiel. Cette liste de contrôle permet de garantir l’honnêteté des modifications ultérieures du code. Enregistrez les temps d’exécution ainsi que le coût des tokens ou des requêtes à côté des résultats fonctionnels. Une visibilité précoce des coûts évite les factures inattendues lorsque le processus passe de la démonstration aux environnements partagés.

SELECT * FROM semantic_cache;

0.1 Créer la partition V2

La méthode « 0 1 Create the stage » fonctionne le mieux lorsqu’elle est considérée comme une surface mesurable. Capturez un exemple réussi, un cas d’échec et la note de réversion avant d’élargir le périmètre. Conservez les configurations en dehors du code de l’application. Les fichiers d’environnement, les bases de données secrètes et les indicateurs fonctionnels doivent être regroupés en un seul endroit que les opérateurs peuvent auditer sans devoir lire l’ensemble du système. Fixez des limites budgétaires par tour et par session. Les outils agents élargissent de manière importante le contexte ; des plafonds stricts empêchent que les démonstrations se transforment en factures inattendues.

V1 partition
   │
   │ still serving
   ▼
V2 partition
   │
   │ being populated
   ▼
migration control table

0.2 Diviser le corpus en plages gérables

La méthode de division en 0 et 2 des étapes fonctionne le mieux lorsqu’elle est considérée comme une surface mesurable. Capturez un cas réussi exemplaire, un cas d’échec et la note de réversion avant d’élargir le périmètre. Documentez en même temps le parcours optimal et celui de récupération. Les tentatives répétées, les contrôles humains et le traitement des messages non livrés font partie intégrante du produit, et non d’une mise en forme ultérieure. Fixez un budget de tokens par tour et par session : les outils agents élargissent de manière importante le contexte ; des plafonds stricts empêchent que les démos se transforment en factures inattendues.

┌─────────────────────────────────────────┐
│ Migration control table                 │
├──────────────┬─────────────┬────────────┤
│ Range        │ Status      │ Worker     │
├──────────────┼─────────────┼────────────┤
│ 1 - 50K      │ complete    │ worker-1   │
│ 50K - 100K   │ processing  │ worker-2   │
│ 100K - 150K  │ pending     │ worker-3   │
│ 150K - 200K  │ pending     │ worker-4   │
└──────────────┴─────────────┴────────────┘
SELECT ...
FOR UPDATE SKIP LOCKED;

0.3 Récupération avec pagination par ensemble de clés

La méthode 0 3 Fetch with stage fonctionne le mieux lorsqu’elle est considérée comme une surface mesurable. Capturez un transcript idéal, un cas d’échec et la note de réversion avant d’élargir le périmètre. Préférez des unités petites et testables aux scripts complexes. Lorsqu’une étape échoue, l’erreur doit pointer vers une seule responsabilité plutôt que vers un processus embrouillé. Fixez des limites de tokens par tour et par session. Les outils agents élargissent lourdement le contexte ; des plafonds stricts empêchent que les démos ne se transforment en factures inattendues. La méthode 0 3 Fetch with stage fonctionne le mieux lorsqu’elle est considérée comme une surface mesurable. Capturez un transcript idéal, un cas d’échec et la note de réversion avant d’élargir le périmètre. Enregistrez les temps d’exécution ainsi que le coût en tokens ou en requêtes à côté des résultats fonctionnels. Une visibilité précoce des coûts évite les factures inattendues lorsque le processus passe d’une démo à des environnements partagés.

SELECT ...
FROM semantic_cache_v1
WHERE id > :last_id
  AND id <= :range_end
ORDER BY id
LIMIT :batch_size;
Migration range
    ≈ scheduling/checkpoint boundary
Embedding batch
    ≈ model/provider throughput boundary

0.4 Générer des embeddings à l’aide d’un pool dédié

Pour l’étape 0.4 Générer des embeddings, définissez les entrées, le responsable de cette étape ainsi que les critères d’arrêt avant de modifier le code. Les opérateurs doivent pouvoir relancer l’étape à partir d’un point de contrôle connu sans deviner l’état caché. Conservez la configuration en dehors du code de l’application. Les fichiers d’environnement, les bases de données secrètes et les indicateurs fonctionnels doivent être regroupés en un seul endroit que les opérateurs peuvent auditer sans avoir à lire l’ensemble du graphe. Préférez des sorties structurées avec validation de schéma plutôt que du texte libre lorsque l’étape suivante consiste en du code ou une appel à outil.

Embedding capacity
                           │
            ┌──────────────┴──────────────┐
            │                             │
     online traffic                 migration traffic
            │                             │
            ▼                             ▼
       production path              dedicated pool

0.5 Buffer et régulation des écritures

Pour le buffer et l’étape 0 5, définissez les entrées, le responsable de l’étape ainsi que les critères de fin avant de modifier le code. Les opérateurs doivent pouvoir relancer l’étape à partir d’un point de contrôle connu sans deviner l’état caché. Documentez conjointement le parcours normal et le parcours de récupération. Les tentatives répétées, les contrôles humains et la gestion des messages non livrés font partie intégrante du produit, et non d’une mise en forme ultérieure. Préférez des sorties structurées avec validation de schéma plutôt que du texte libre lorsque l’étape suivante consiste en du code ou une appel à outil.

existing records
      │
      ▼
embedding batches
      │
      ▼
buffer
      │
      ▼
throttled writes
      │
      ▼
V2 partition

0.6 Valider chaque plage terminée

Pour la phase 0 6, validez chaque étape : définissez les entrées, le responsable de l’étape et les critères d’arrêt avant de modifier du code. Les opérateurs doivent pouvoir relancer l’étape à partir d’un point de contrôle connu sans deviner l’état caché. Préférez des unités petites et testables plutôt que des scripts complexes. Lorsqu’une étape échoue, l’échec doit indiquer une seule responsabilité et non un processus embrouillé. Préférez des sorties structurées avec validation de schéma plutôt que du texte libre lorsque l’étape suivante consiste en du code ou une appel à outil. Pour la phase 0 6, validez chaque étape : définissez les entrées, le responsable de l’étape et les critères d’arrêt avant de modifier du code. Les opérateurs doivent pouvoir relancer l’étape à partir d’un point de contrôle connu sans deviner l’état caché. Enregistrez les temps d’exécution ainsi que le coût en tokens ou en requêtes à côté des résultats fonctionnels. Une visibilité précoce des coûts évite des factures inattendues lorsque le processus passe d’un environnement de démonstration à des environnements partagés.

write range
    │
    ▼
validate
    │
 ┌──┴────┐
PASS    FAIL
 │        │
 ▼        ▼
checkpoint retry
complete   │
           ▼
      persistent failure
           │
           ▼
        halt + alert

0.7 Créer les index V2

Lors du travail sur l’étape 0 7 Créer, notez d’abord le contrat : les entrées requises, le signal de succès, ainsi que ce qui se passe en cas d’échec partiel. Cette liste de contrôle permet de maintenir l’honnêteté des modifications ultérieures du code. Conservez la configuration en dehors du code de l’application. Les fichiers d’environnement, les bases de données secrètes et les indicateurs fonctionnels doivent être regroupés en un seul endroit que les opérateurs peuvent auditer sans devoir lire l’ensemble du système. Mémorisez les instructions stables du système et les schémas des outils. Envoyer à nouveau un préambule identique est une source fréquente de gaspillage.

V1
├── existing data
└── existing index
V2
├── migrated data
└── new index

Phase 1 — Valider V2 avant mise en production

Lors de la phase 1 « Valider V2 », notez d’abord les exigences du contrat : entrées requises, signal de succès et comportement en cas d’échec partiel. Cette liste de contrôle permet de rester honnête lors des modifications ultérieures du code. Documentez en même temps le parcours normal et les scénarios de récupération. Les tentatives répétées, les contrôles humains et la gestion des messages non livrés font partie intégrante du produit, et non d’améliorations ultérieures. Mémorisez les instructions du système stables ainsi que les schémas des outils. Envoyer à nouveau un préambule identique est une cause fréquente de surconsommation.

row_count(V1) == row_count(V2)
retrieval_quality(V2) < retrieval_quality(V1)
Golden-set query
       │
       ├──────────────► V1 retrieval
       │
       └──────────────► V2 retrieval
                              │
                              ▼
                       quality comparison
Golden-set evaluation
          │
      ┌───┴───┐
     PASS    FAIL
      │        │
      ▼        ▼
   Canary     Stop
              tune

Phase 2 — Tester le nouveau parcours en mode canari

Lors du travail sur l’étape Canary de la Phase 2, notez d’abord le contrat : les entrées requises, le signal de succès et ce qui se passe en cas d’échec partiel. Cette liste de contrôle permet de rester honnête lors des modifications ultérieures du code. Préférez des unités petites et testables plutôt que des scripts complexes. Lorsqu’une étape échoue, l’échec doit indiquer une seule responsabilité et non un processus embrouillé. Cachez les instructions du système stables ainsi que les schémas des outils. Envoyer à nouveau un préambule identique est une cause fréquente de gaspillage. Lors du travail sur l’étape Canary de la Phase 2, notez d’abord le contrat : les entrées requises, le signal de succès et ce qui se passe en cas d’échec partiel. Cette liste de contrôle permet de rester honnête lors des modifications ultérieures du code. Enregistrez les temps d’exécution ainsi que le coût des tokens ou des requêtes à côté des résultats fonctionnels. Une visibilité précoce du coût évite les factures inattendues lorsque le processus passe de la démonstration aux environnements partagés.

1% → 10% → 50% → 100%

2.1 Le chemin de la requête

La phase de demande fonctionne le mieux lorsqu’elle est considérée comme une surface mesurable. Capturez un transcript parfait, un cas d’échec et la note de réversion avant d’élargir le périmètre. Gardez la configuration en dehors du code de l’application. Les fichiers d’environnement, les bases de données secrètes et les indicateurs fonctionnels doivent être regroupés en un seul endroit que les opérateurs peuvent auditer sans devoir lire l’ensemble du système. Fixez des limites budgétaires par tour et par session. Les outils agents élargissent de manière importante le contexte ; des plafonds stricts empêchent que les démonstrations se transforment en factures inattendues.

Incoming query
      │
      ▼
   L1 cache
      │
   ┌──┴───┐
  HIT    MISS
   │       │
   ▼       ▼
return   V2 embedding
           │
           ▼
       V2 retrieval
           │
           ▼
      quality check
        ┌──┴───┐
      strong  weak
        │       │
        ▼       ▼
       RAG   fallback V1
        │       │
        └──┬────┘
           ▼
        response

Récupération consciente de la version

La phase de récupération consciente de la version fonctionne le mieux lorsqu’elle est considérée comme une surface mesurable. Capturez un transcript idéal, un cas d’échec et la note de réversion avant d’élargir le périmètre. Documentez ensemble le parcours réussi et le parcours de récupération. Les tentatives répétées, les contrôles humains et la gestion des messages non livrés font partie intégrante du produit, et non d’une mise en forme ultérieure. Fixez un budget de tokens par tour et par session. Les outils agents élargissent lourdement le contexte ; des plafonds stricts empêchent que les démonstrations ne se transforment en factures inattendues.

namespace
+
knowledge-base version
+
embedding version
namespace   = customer-A
kb_version  = 42
embed_version = V2

2.2 Garde-fous de qualité

La phase des garde-fous de qualité 2 2 fonctionne le mieux lorsqu’elle est considérée comme une surface mesurable. Capturez un transcript idéal, un cas d’échec et la note de réversion avant d’élargir le périmètre. Préférez des unités petites et testables aux scripts complexes. Lorsqu’une étape échoue, l’échec doit pointer vers une seule responsabilité plutôt que vers un processus embrouillé. Fixez des limites de tokens par tour et par session. Les outils agents élargissent lourdement le contexte ; des plafonds stricts empêchent que les démos ne se transforment en factures inattendues. La phase des garde-fous de qualité 2 2 fonctionne le mieux lorsqu’elle est considérée comme une surface mesurable. Capturez un transcript idéal, un cas d’échec et la note de réversion avant d’élargir le périmètre. Enregistrez les temps d’exécution ainsi que le coût en tokens ou en requêtes à côté des résultats fonctionnels. Une visibilité précoce des coûts évite les factures inattendues lorsque le processus passe d’une démo à des environnements partagés.

Santé du système

Pour l’étape de santé du système, définissez les entrées, le responsable de l’étape et les critères de fin avant de modifier du code. Les opérateurs doivent pouvoir relancer l’étape à partir d’un point de contrôle connu sans deviner l’état caché. Conservez la configuration en dehors du code de l’application. Les fichiers d’environnement, les bases de données secrètes et les indicateurs fonctionnels doivent être regroupés en un seul endroit que les opérateurs peuvent auditer sans avoir à lire l’ensemble du système. Préférez des sorties structurées avec validation de schéma plutôt que du texte libre lorsque l’étape suivante consiste en du code ou une appel à outil.

Qualité de la récupération

Pour l’étape de qualité du retraitement, définissez les entrées, le responsable de l’étape et les critères d’arrêt avant de modifier le code. Les opérateurs doivent pouvoir relancer l’étape à partir d’un point de contrôle connu sans deviner l’état caché. Documentez conjointement le parcours normal et les scénarios de récupération. Les tentatives répétées, les contrôles humains et la gestion des messages non livrés font partie intégrante du produit, et non d’une mise en forme ultérieure. Préférez des sorties structurées avec validation de schéma plutôt que du texte libre lorsque l’étape suivante consiste en du code ou une appel à outil.

Santé de la migration

Pour l’étape de santé de la migration, définissez les entrées, le responsable de l’étape et les critères d’arrêt avant de modifier du code. Les opérateurs doivent pouvoir relancer l’étape à partir d’un point de contrôle connu sans deviner l’état caché. Préférez des unités petites et testables à des scripts complexes. Lorsqu’une étape échoue, l’échec doit indiquer une seule responsabilité plutôt qu’un processus embrouillé. Préférez des sorties structurées avec validation de schéma à du texte libre lorsque l’étape suivante consiste en du code ou une appel d’outil. Pour l’étape de santé de la migration, définissez les entrées, le responsable de l’étape et les critères d’arrêt avant de modifier du code. Les opérateurs doivent pouvoir relancer l’étape à partir d’un point de contrôle connu sans deviner l’état caché. Enregistrez les temps d’exécution ainsi que le coût des tokens ou des requêtes à côté des résultats fonctionnels. Une visibilité précoce des coûts évite les factures inattendues lorsque le processus passe de l’environnement de démonstration aux environnements partagés.

1%
 │
 ▼
guardrail
 │ PASS
 ▼
10%
 │
 ▼
guardrail
 │ PASS
 ▼
50%
 │
 ▼
guardrail
 │ PASS
 ▼
100%

2.3 Le rollback doit être un changement de configuration

Lors du traitement de l’étape 2.3 « Le rollback doit être… », notez d’abord les éléments essentiels : les entrées requises, le signal de succès, ainsi que ce qui se passe en cas d’échec partiel. Cette liste de contrôle permet de garantir l’honnêteté des modifications de code ultérieures. Gardez la configuration à part du code de l’application. Les fichiers d’environnement, les bases de données secrètes et les indicateurs fonctionnels doivent être regroupés en un seul endroit que les opérateurs peuvent auditer sans avoir à lire l’ensemble du système. Mémorisez les instructions stables du système ainsi que les schémas des outils. Envoyer à nouveau un préambule identique est une cause fréquente de gaspillage.

stop traffic
restore data
redeploy services
rebuild indexes
hope
active embed_version = V2
             │
             ▼
        config change
             │
             ▼
active embed_version = V1

La concurrence pendant le backfill : qu’en est-il des mises à jour en temps réel ?

Lorsque vous travaillez sur l’étape « The Race During Backfill », notez d’abord les exigences du contrat : les données requises, le signal de succès, ainsi que ce qui se passe en cas d’échec partiel. Cette liste de contrôle permet de rester honnête lors des modifications ultérieures du code. Documentez ensemble le parcours normal et le parcours de récupération. Les tentatives répétées, les contrôles humains et la gestion des messages non livrés font partie intégrante du produit, et non d’améliorations apportées ultérieurement. Mémorisez les instructions du système stables ainsi que les schémas des outils. Envoyer à nouveau un préambule identique est une cause fréquente de surconsommation.

10:00  worker reads record A
10:01  record A is updated
10:02  worker writes V2 generated from the older content
                application write
                        │
                ┌───────┴───────┐
                │               │
                ▼               ▼
             V1 write       async queue
                                │
                                ▼
                             V2 write

Phase 3 — Inverser le parcours de lecture

Lors de la phase 3 « Flip the stage », notez d’abord les conditions du contrat : entrées requises, signal de succès et conséquences en cas d’échec partiel. Cette liste de contrôle permet de garantir l’honnêteté des modifications ultérieures du code. Préférez des unités petites et testables plutôt que des scripts complexes. Lorsqu’une étape échoue, l’échec doit indiquer une seule responsabilité et non un processus embrouillé. Cachez les instructions du système stables ainsi que les schémas des outils. Envoyer à nouveau un préambule identique est une cause fréquente de gaspillage. Lors de la phase 3 « Flip the stage », notez d’abord les conditions du contrat : entrées requises, signal de succès et conséquences en cas d’échec partiel. Cette liste de contrôle permet de garantir l’honnêteté des modifications ultérieures du code. Enregistrez les temps d’exécution ainsi que le coût des tokens ou des requêtes à côté des résultats fonctionnels. Une visibilité précoce des coûts évite les factures inattendues lorsque le processus passe de la démonstration aux environnements partagés.

Before:
reads → V1
After:reads → V2

Phase 4 — Post-Flip Soak

La phase 4 de trempage post-inversion fonctionne le mieux lorsqu’elle est considérée comme une surface mesurable. Capturez un transcript parfait, un cas d’échec et la note de réversion avant d’élargir le périmètre. Conservez la configuration en dehors du code de l’application. Les fichiers d’environnement, les bases de données secrètes et les indicateurs fonctionnels doivent être regroupés en un seul endroit que les opérateurs peuvent auditer sans devoir lire l’ensemble du système. Fixez des limites budgétaires par tour et par session. Les outils agents élargissent de manière importante le contexte ; des plafonds stricts empêchent que les démonstrations ne se transforment en factures inattendues.

Phase 5 — Validation finale et nettoyage

La phase de validation finale du niveau 5 fonctionne le mieux lorsqu’elle est considérée comme une surface mesurable. Capturez un transcript idéal, un cas d’échec et la note de réversion avant d’élargir le périmètre. Documentez en même temps le parcours optimal et le parcours de récupération. Les tentatives répétées, les contrôles humains et la gestion des messages non livrés font partie intégrante du produit, et non d’une mise en forme ultérieure.

1. Arrêter l’écriture simultanée V1

La phase d’écriture double de 1 Stop V1 fonctionne le mieux lorsqu’elle est considérée comme une surface mesurable. Capturez un transcript idéal, un cas d’échec et la note de réversion avant d’élargir le périmètre. Préférez des unités petites et testables plutôt que des scripts complexes. Lorsqu’une étape échoue, l’échec doit pointer vers une seule responsabilité plutôt que vers un processus embrouillé. Fixez des limites de tokens par tour et par session. Les outils agents élargissent lourdement le contexte ; des plafonds stricts empêchent que les démos ne se transforment en factures inattendues. La phase d’écriture double de 1 Stop V1 fonctionne le mieux lorsqu’elle est considérée comme une surface mesurable. Capturez un transcript idéal, un cas d’échec et la note de réversion avant d’élargir le périmètre. Enregistrez les temps d’exécution ainsi que le coût en tokens ou en requêtes à côté des résultats fonctionnels. Une visibilité précoce des coûts évite les factures inattendues lorsque le processus passe de la démo aux environnements partagés.

2. Effectuer la validation finale

Pour la phase finale de validation des 2 exécutions, définissez les entrées, le responsable de l’étape et les critères d’arrêt avant de modifier le code. Les opérateurs doivent pouvoir relancer l’étape à partir d’un point de contrôle connu sans deviner l’état caché. Conservez la configuration en dehors du code de l’application. Les fichiers d’environnement, les bases de données secrètes et les indicateurs fonctionnels doivent être regroupés en un seul endroit que les opérateurs peuvent auditer sans avoir à lire l’ensemble du système. Préférez des sorties structurées avec validation de schéma plutôt que du texte libre lorsque l’étape suivante consiste en du code ou une appel à outil.

V2
 │
 ▼
final validation
 │
 ├── FAIL → stop cleanup
 │
 └── PASS
        │
        ▼
    continue cleanup

3. Supprimer la représentation V1

Pour l’étape 3 « Supprimer la V1 », définissez les entrées, le responsable de l’étape et les critères de fin avant de modifier le code. Les opérateurs doivent pouvoir relancer l’étape à partir d’un point de contrôle connu sans deviner l’état caché. Documentez conjointement le parcours normal et le parcours de récupération. Les tentatives répétées, les contrôles humains et la gestion des messages non livrés font partie intégrante du produit, et non d’une mise en forme ultérieure. Préférez des sorties structurées avec validation de schéma plutôt que du texte libre lorsque l’étape suivante consiste en du code ou une appel à outil.

Backfill
  ↓
Validate
  ↓
Canary
  ↓
100% V2
  ↓
Soak
  ↓
Final validation
  ↓
Delete V1

Le cycle de vie complet

Pour l’étape du cycle de vie complet, définissez les entrées, le responsable de l’étape et les critères d’arrêt avant de modifier du code. Les opérateurs doivent pouvoir relancer l’étape à partir d’un point de contrôle connu sans deviner l’état caché. Préférez des unités petites et testables aux scripts complexes. Lorsqu’une étape échoue, l’échec doit indiquer une seule responsabilité plutôt qu’un processus embrouillé. Préférez des sorties structurées avec validation de schéma à du texte libre lorsque l’étape suivante consiste en du code ou une appel d’outil. Pour l’étape du cycle de vie complet, définissez les entrées, le responsable de l’étape et les critères d’arrêt avant de modifier du code. Les opérateurs doivent pouvoir relancer l’étape à partir d’un point de contrôle connu sans deviner l’état caché. Enregistrez les temps d’exécution ainsi que le coût des tokens ou des requêtes à côté des résultats fonctionnels. Une visibilité précoce des coûts évite des factures inattendues lorsque le processus passe d’un environnement de démonstration à des environnements partagés.

EMBEDDING MIGRATION
                           │
                           ▼
                    Create V2 storage
                           │
                           ▼
                      Backfill V2
                 work stealing + retries
                           │
                           ▼
                    Range validation
                           │
                           ▼
                    Build V2 indexes
                           │
                           ▼
                  Golden-set evaluation
                           │
                    ┌──────┴──────┐
                   FAIL          PASS
                    │              │
                    ▼              ▼
                stop/tune       Canary
                              1% → 10% → 50%
                                       │
                                       ▼
                                  Guardrails
                                       │
                                       ▼
                                  100% V2
                                       │
                                       ▼
                                  Read flip
                                       │
                                       ▼
                                   V2 soak
                                       │
                                       ▼
                                Final validation
                                       │
                                       ▼
                                  Drop V1
Live production writes
                           │
                           ▼
                       V1 write
                           │
                           └──── async dual-write → V2
Migration safety
                       │
        ┌──────────────┼──────────────┐
        ▼              ▼              ▼
       Data          Quality         Traffic
       safety         safety         safety
        │              │              │
   checkpoints      golden set      canary
   retries          guardrails      fallback
   validation       evaluation      rollback

Les leçons généralisables

Lors de la phase des « Leçons généralisables », notez d’abord les exigences : entrées requises, signal de succès et comportement en cas d’échec partiel. Cette liste de contrôle permet de maintenir l’honnêteté des modifications ultérieures du code. Conservez la configuration en dehors du code de l’application. Les fichiers d’environnement, les bases de données secrètes et les indicateurs fonctionnels doivent être regroupés en un seul endroit que les administrateurs peuvent auditer sans devoir lire l’ensemble du système. Mémorisez les instructions stables du système ainsi que les schémas des outils. Envoyer à nouveau un préambule identique est une cause fréquente de gaspillage.

1. Faire du concept d’incorporation de version un élément essentiel

Lors de la phase 1 « Créer une version d’incorporation », notez d’abord le contrat : les entrées requises, le signal de succès et ce qui se passe en cas d’échec partiel. Cette liste de contrôle permet de rester honnête lors des modifications ultérieures du code. Documentez ensemble le parcours normal et le parcours de récupération. Les tentatives répétées, les contrôles humains et la gestion des messages non livrés font partie intégrante du produit, et non d’améliorations ultérieures. Mémorisez les instructions du système stables ainsi que les schémas des outils. Envoyer à nouveau un préambule identique est une cause fréquente de gaspillage.

2. Remplir les données comme un ingénieur de base de données

Lorsque vous travaillez sur l’étape « Backfill », notez d’abord les exigences du contrat : les données requises, le signal de succès et ce qui se passe en cas d’échec partiel. Cette liste de contrôle permet de rester honnête lors des modifications ultérieures du code. Préférez des unités petites et testables plutôt que des scripts complexes. Lorsqu’une étape échoue, l’échec doit pointer vers une seule responsabilité et non vers un processus embrouillé. Cachez les instructions système stables ainsi que les schémas des outils. Envoyer à nouveau un préambule identique est une cause fréquente de problèmes.

3. Séparer la migration des données de la migration du trafic

V2 exists
   ≠
V2 is trusted
   ≠
V2 is serving production

4. Considérer la qualité de la récupération comme faisant partie de la correction

Data correctness
      +
Retrieval quality
      +
Production health

5. Conserver l’ancien chemin en tant que filet de sécurité

6. Rendre le retrait en arrière ennuyeux

change configuration
change code + redeploy + restore state

7. Supprimer le dernier

En résumé

model identity
      +
vector storage
      +
traffic routing
Partition
   ↓
Backfill
   ↓
Validate
   ↓
Canary
   ↓
Cut over
   ↓
Soak
   ↓
Clean up

Liste de contrôle opérationnelle