Inicio / Artículos / Notas prácticas: ¿Qué pasa si el modelo de incrustación de su agente está a punto de dejar de funcionar?

Notas prácticas: ¿Qué pasa si el modelo de incrustación de su agente está a punto de dejar de funcionar?

Guía práctica paso a paso: ¿Qué pasa si el modelo de incrustación de su agente está a punto de dejar de funcionar?: contratos, verificaciones y espacios para código adicional para los equipos que implementan este patrón.

4214 palabras

Úselo como una versión reestructurada dirigida a los operadores de las ideas presentadas en “¿Qué pasa si el modelo de incrustación de su agente está a punto de dejar de funcionar?”: etapas claras, espacios ordenados para el código y notas de recuperación que perduran tras la transferencia de tareas. La etapa de Resumen funciona mejor cuando se trata como una superficie medible. Capture una transcripción clave, un caso de fallo y la nota de reversión antes de ampliar el alcance. Registre los tiempos y el costo en tokens o consultas junto con los resultados funcionales. La visibilidad temprana del costo evita facturas inesperadas cuando el proceso pasa de la demostración a entornos compartidos.

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

El problema

En la etapa de “El Problema”, defina las entradas, el responsable de la tarea y los criterios de finalización antes de modificar el código. Los operadores deben poder volver a ejecutar la tarea a partir de un punto de control conocido, sin tener que adivinar el estado oculto. Guarde la configuración fuera del código de la aplicación. Los archivos de entorno, los almacenes de datos secretos y las banderas de funcionalidad deben encontrarse en un lugar donde los operadores puedan auditarlos sin necesidad de leer todo el sistema. Prefiera salidas estructuradas con validación de esquema sobre texto libre cuando el siguiente paso sea escribir código o realizar una llamada a una herramienta.

1. Datos históricos

En la etapa de datos históricos 1, defina las entradas, el responsable del paso y los criterios de finalización antes de modificar el código. Los operadores deben poder volver a ejecutar el paso a partir de un punto de control conocido sin tener que adivinar el estado oculto. Documente tanto la ruta óptima como la ruta de recuperación. Las reintentos, los controles humanos y el manejo de mensajes no entregados forman parte del producto, no son mejoras posteriores. Prefiera salidas estructuradas con validación de esquema sobre texto en formato libre cuando el siguiente paso sea código o una llamada a una herramienta.

2. Datos en tiempo real

En la fase de datos 2 Live, defina las entradas, el responsable del paso y los criterios de finalización antes de modificar el código. Los operadores deben poder volver a ejecutar el paso a partir de un punto de control conocido sin tener que adivinar el estado oculto. Prefiera unidades pequeñas y verificables en lugar de scripts extensos. Cuando un paso falla, el error debe indicar una única responsabilidad y no un proceso complicado. Prefiera salidas estructuradas con validación de esquema en lugar de texto sin formato cuando el paso siguiente sea código o una llamada a una herramienta. En la fase de datos 2 Live, defina las entradas, el responsable del paso y los criterios de finalización antes de modificar el código. Los operadores deben poder volver a ejecutar el paso a partir de un punto de control conocido sin tener que adivinar el estado oculto. Registre los tiempos de ejecución y el costo de tokens o consultas junto con los resultados funcionales. Tener visibilidad del costo desde el principio evita facturas inesperadas cuando el proceso pasa de la fase de demostración a entornos compartidos.

3. Tráfico de producción

Al trabajar en la etapa 3 de tráfico de producción, anote primero el contrato: los datos de entrada requeridos, la señal de éxito y qué ocurre en caso de fallo parcial. Esa lista de verificación mantiene honestas las futuras modificaciones del código. Guarde la configuración fuera del código de la aplicación. Los archivos de entorno, los almacenes de datos secretos y las banderas de funcionalidad deben estar en un lugar donde los operadores puedan auditarlos sin tener que leer todo el sistema. Almacene en caché las instrucciones del sistema estables y los esquemas de las herramientas. Reenviar un preámbulo idéntico es una causa común de consumo excesivo.

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

La primera regla de diseño: versionar las incrustaciones

Al trabajar en la etapa de La primera regla de diseño, anote primero el contrato: las entradas requeridas, la señal de éxito y qué ocurre en caso de fallo parcial. Esa lista de verificación mantiene honestas las futuras modificaciones del código. Documente junto con ello el camino óptimo y el camino de recuperación. Las reintentos, los controles humanos y el manejo de mensajes no entregados forman parte del producto, no de mejoras posteriores. Almacene en caché las instrucciones estables del sistema y los esquemas de las herramientas. Reenviar un preámbulo idéntico es una causa común de agotamiento.

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

Fase 0: Completar la representación V2

Al trabajar en la fase de relleno inicial (Phase 0 Backfill), anote primero el contrato: los datos de entrada requeridos, la señal de éxito y qué ocurre en caso de fallo parcial. Esa lista de verificación garantiza que los cambios posteriores en el código sean transparentes. Prefiera unidades pequeñas y verificables a scripts extensos. Cuando un paso falla, el fallo debe referirse a una sola responsabilidad y no a un proceso complicado. Almacene en caché las instrucciones del sistema estables y los esquemas de las herramientas. Reenviar un preámbulo idéntico es una causa común de desperdicio de recursos. Al trabajar en la fase de relleno inicial (Phase 0 Backfill), anote primero el contrato: los datos de entrada requeridos, la señal de éxito y qué ocurre en caso de fallo parcial. Esa lista de verificación garantiza que los cambios posteriores en el código sean transparentes. Registre los tiempos de ejecución y el costo de tokens o consultas junto con los resultados funcionales. Tener visibilidad del costo desde el principio evita facturas inesperadas cuando se pasa de entornos de demostración a entornos compartidos.

SELECT * FROM semantic_cache;

0.1 Crear la partición V2

El proceso de “0 1 Create the stage” funciona mejor cuando se trata como una superficie medible. Capture un registro exitoso, un caso de fallo y la nota de reversión antes de ampliar el alcance. Mantenga la configuración fuera del código de la aplicación: los archivos de entorno, los almacenes de datos confidenciales y las banderas de funcionalidad deben estar en un lugar donde los operadores puedan auditarlos sin tener que leer todo el sistema. Asigne un límite de tokens por turno y por sesión; las herramientas autónomas amplían el contexto de manera excesiva, y los topes estrictos evitan que las demostraciones se conviertan en facturas inesperadas.

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

0.2 Dividir el corpus en rangos gestionables

El enfoque de dividir la etapa en 0 y 2 funciona mejor cuando se trata como una superficie medible. Capture un caso exitoso, un caso de fallo y la nota de reversión antes de ampliar el alcance. Documente tanto el camino óptimo como el camino de recuperación juntos. Las reintentos, los controles humanos y el manejo de mensajes no entregados forman parte del producto, no son ajustes realizados posteriormente. Asigne un presupuesto de tokens por turno y por sesión. Las herramientas agenciales amplían el contexto de manera excesiva; los límites estrictos evitan que las demostraciones se conviertan en facturas inesperadas.

┌─────────────────────────────────────────┐
│ 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 Obtener datos con paginación por conjunto de claves

El método 0 3 Fetch con etapas funciona mejor cuando se trata como una superficie medible. Capture un registro ideal, un caso de fallo y la nota de reversión antes de ampliar el alcance. Prefiera unidades pequeñas y verificables en lugar de scripts extensos. Cuando falla un paso, el error debe apuntar a una sola responsabilidad y no a un proceso complicado. Asigne un presupuesto de tokens por turno y por sesión; las herramientas agenciales amplían el contexto de forma excesiva, por lo que los límites máximos evitan que las demostraciones se conviertan en facturas inesperadas. El método 0 3 Fetch con etapas funciona mejor cuando se trata como una superficie medible. Capture un registro ideal, un caso de fallo y la nota de reversión antes de ampliar el alcance. Registre los tiempos y el costo en tokens o consultas junto con los resultados funcionales. Tener visibilidad del costo desde el principio evita facturas inesperadas cuando el proceso pasa de una demostración a entornos compartidos.

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 Generar embeddings a través de un pool dedicado

En la etapa 0.4 de generación de embeddings, se deben definir las entradas, el responsable de la tarea y los criterios de finalización antes de modificar el código. Los operadores deben poder volver a ejecutar la tarea a partir de un punto de control conocido sin tener que adivinar el estado oculto. La configuración debe mantenerse fuera del código de la aplicación; los archivos de entorno, los almacenes de datos confidenciales y las banderas de funcionalidad deben estar en un lugar donde los operadores puedan auditarlos sin necesidad de leer todo el sistema. Se prefiere un formato estructurado con validación de esquema sobre texto libre cuando el paso siguiente sea código o una llamada a una herramienta.

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

0.5 Bufferizar y regular las escrituras

Para el buffer y etapa 0.5, defina las entradas, el responsable de la tarea y los criterios de finalización antes de modificar el código. Los operadores deben poder volver a ejecutar la tarea desde un punto de control conocido sin tener que adivinar el estado oculto. Documente tanto la ruta óptima como la ruta de recuperación. Las reintentos, los controles humanos y el manejo de mensajes no entregados forman parte del producto, no son mejoras posteriores. Prefiera salidas estructuradas con validación de esquema sobre texto en formato libre cuando el siguiente paso sea escribir código o realizar una llamada a una herramienta.

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

0.6 Validar cada rango completado

Para la fase 0 6, valide cada etapa: defina las entradas, el responsable de la tarea y los criterios de finalización antes de modificar el código. Los operadores deben poder volver a ejecutar la tarea a partir de un punto de control conocido, sin tener que adivinar el estado oculto. Prefiera unidades pequeñas y verificables en lugar de scripts extensos. Cuando una tarea falla, el error debe indicar una única responsabilidad y no un proceso complicado. Opte por salidas estructuradas con validación de esquema en lugar de texto libre cuando el paso siguiente sea código o una llamada a una herramienta. Para la fase 0 6, valide cada etapa: defina las entradas, el responsable de la tarea y los criterios de finalización antes de modificar el código. Los operadores deben poder volver a ejecutar la tarea a partir de un punto de control conocido, sin tener que adivinar el estado oculto. Registre los tiempos de ejecución y el costo en tokens o consultas junto con los resultados funcionales. Tener visibilidad del costo desde el principio evita facturas inesperadas cuando el proceso pasa de entornos de demostración a entornos compartidos.

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

0.7 Construir los índices V2

Al trabajar en la etapa 0 7 Construir, anote primero el contrato: entradas requeridas, señal de éxito y qué ocurre en caso de fallo parcial. Esa lista de verificación mantiene honestas las futuras modificaciones del código. Guarde la configuración fuera del código de la aplicación. Los archivos de entorno, los almacenes de secretos y las banderas de funcionalidad deben estar en un lugar donde los operadores puedan auditarlos sin tener que leer todo el sistema. Almacene en caché las instrucciones del sistema estables y los esquemas de las herramientas. Reenviar un preámbulo idéntico es una causa común de consumo excesivo.

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

Fase 1: Validar V2 antes de la producción

Al trabajar en la fase 1 de validación V2, anote primero el contrato: los datos requeridos, la señal de éxito y qué ocurre en caso de fallo parcial. Esa lista de verificación ayuda a mantener la integridad de los cambios futuros en el código. Documente tanto el camino óptimo como el camino de recuperación. Las reintentos, los controles humanos y el manejo de mensajes no entregados forman parte del producto, no son mejoras posteriores. Almacene en caché las instrucciones estables del sistema y los esquemas de las herramientas. Reenviar un preámbulo idéntico es una causa común de problemas.

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

Fase 2: Prueba canaria del nuevo camino

Al trabajar en la fase Canary de la Etapa 2, anote primero el contrato: los datos de entrada requeridos, la señal de éxito y qué ocurre en caso de fallo parcial. Esa lista de verificación mantiene honestas las futuras modificaciones del código. Prefiera unidades pequeñas y probables sobre scripts extensos. Cuando un paso falla, el fallo debe apuntar a una única responsabilidad y no a un proceso complicado. Almacene en caché las instrucciones del sistema estables y los esquemas de las herramientas. Reenviar un preámbulo idéntico es una causa común de consumo excesivo. Al trabajar en la fase Canary de la Etapa 2, anote primero el contrato: los datos de entrada requeridos, la señal de éxito y qué ocurre en caso de fallo parcial. Esa lista de verificación mantiene honestas las futuras modificaciones del código. Registre los tiempos de ejecución y el costo de tokens o consultas junto con los resultados funcionales. Tener visibilidad del costo desde el principio evita facturas inesperadas cuando el proceso pasa de la demostración a entornos compartidos.

1% → 10% → 50% → 100%

2.1 La ruta de la solicitud

La etapa de solicitud funciona mejor cuando se trata como una superficie medible. Capture un registro exitoso, un caso de fallo y la nota de reversión antes de ampliar el alcance. Mantenga la configuración fuera del código de la aplicación. Los archivos de entorno, los almacenes de datos secretos y las banderas de funcionalidad deben estar en un lugar donde los operadores puedan auditarlos sin tener que leer todo el sistema. Establezca límites de tokens por turno y por sesión. Las herramientas agentes amplían el contexto de manera agresiva; los límites estrictos evitan que las demostraciones se conviertan en facturas inesperadas.

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

Recuperación consciente de la versión

La etapa de recuperación consciente de la versión funciona mejor cuando se trata como una superficie medible. Capture un transcripto exitoso, un caso de fallo y la nota de reversión antes de ampliar el alcance. Documente tanto el camino óptimo como el camino de recuperación juntos. Las reintentos, los controles humanos y el manejo de correos no entregados forman parte del producto, no son mejoras posteriores. Asigne un presupuesto de tokens por turno y por sesión. Las herramientas agenciales amplían el contexto de manera intensiva; los límites estrictos evitan que las demostraciones se conviertan en facturas inesperadas.

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

2.2 Límites de calidad

La etapa de 2 2 Quality Guardrails funciona mejor cuando se trata como una superficie medible. Capture un registro ideal, un caso de fallo y la nota de reversión antes de ampliar el alcance. Prefiera unidades pequeñas y verificables en lugar de scripts extensos. Cuando falla un paso, el fallo debe apuntar a una sola responsabilidad y no a un proceso complicado. Estime los tokens por turno y por sesión. Las herramientas agenciales amplían el contexto de forma excesiva; los límites máximos evitan que las demostraciones se conviertan en facturas inesperadas. La etapa de 2 2 Quality Guardrails funciona mejor cuando se trata como una superficie medible. Capture un registro ideal, un caso de fallo y la nota de reversión antes de ampliar el alcance. Registre los tiempos y el costo en tokens o consultas junto con los resultados funcionales. Tener visibilidad del costo desde el principio evita facturas inesperadas cuando el proceso pasa de una demostración a entornos compartidos.

Salud del sistema

En la etapa de salud del sistema, defina las entradas, el responsable de cada paso y los criterios de finalización antes de modificar el código. Los operadores deben poder volver a ejecutar el paso a partir de un punto de control conocido, sin tener que adivinar el estado oculto. Mantenga la configuración fuera del código de la aplicación. Los archivos de entorno, los almacenes de datos secretos y las banderas de funcionalidad deben estar en un lugar donde los operadores puedan auditarlos sin necesidad de leer todo el sistema. Prefiera salidas estructuradas con validación de esquema sobre texto libre cuando el siguiente paso sea la ejecución de código o una llamada a una herramienta.

Calidad de la recuperación

En la fase de calidad de recuperación, defina las entradas, el responsable del paso y los criterios de finalización antes de modificar el código. Los operadores deben poder volver a ejecutar el paso a partir de un punto de control conocido sin tener que adivinar el estado oculto. Documente tanto la ruta óptima como la ruta de recuperación. Las intentonas, los controles humanos y el manejo de correos no entregados forman parte del producto, no son mejoras posteriores. Prefiera salidas estructuradas con validación de esquema sobre texto libre cuando el siguiente paso sea código o una llamada a una herramienta.

Salud de la migración

En la fase de estado de migración, defina las entradas, el responsable del paso y los criterios de finalización antes de modificar el código. Los operadores deben poder volver a ejecutar el paso a partir de un punto de control conocido sin tener que adivinar el estado oculto. Prefiera unidades pequeñas y verificables en lugar de scripts extensos. Cuando un paso falla, el error debe indicar una única responsabilidad y no un proceso complicado. Prefiera salidas estructuradas con validación de esquema en lugar de texto libre cuando el paso siguiente sea código o una llamada a una herramienta. En la fase de estado de migración, defina las entradas, el responsable del paso y los criterios de finalización antes de modificar el código. Los operadores deben poder volver a ejecutar el paso a partir de un punto de control conocido sin tener que adivinar el estado oculto. Registre los tiempos de ejecución y el costo de tokens o consultas junto con los resultados funcionales. Tener visibilidad del costo desde el principio evita facturas inesperadas cuando el proceso pasa de entornos de demostración a entornos compartidos.

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

2.3 El retroceso debe ser un cambio de configuración

Al trabajar en la fase 2.3 “El retroceso debe ser un cambio de configuración”, anote primero el contrato: los datos de entrada requeridos, la señal de éxito y qué ocurre en caso de fallo parcial. Esa lista de verificación mantiene honestas las futuras modificaciones del código. Guarde la configuración fuera del código de la aplicación. Los archivos de entorno, los almacenes de datos secretos y las banderas de funcionalidad deben encontrarse en un lugar donde los operadores puedan auditarlos sin tener que leer todo el sistema. Almacene en caché las instrucciones del sistema estables y los esquemas de las herramientas. Reenviar un preámbulo idéntico es una causa común de problemas.

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

La competencia durante el relleno: ¿qué pasa con las actualizaciones en tiempo real?

Al trabajar en la etapa The Race During Backfill, anote primero el contrato: los datos necesarios, la señal de éxito y qué ocurre en caso de fallo parcial. Esa lista de verificación mantiene honestas las futuras modificaciones del código. Documente junto con ello el camino óptimo y el camino de recuperación. Las reintentos, los controles humanos y el manejo de mensajes no entregados forman parte del producto, no de mejoras posteriores. Almacene en caché las instrucciones estables del sistema y los esquemas de las herramientas. Reenviar un preámbulo idéntico es una causa común de problemas.

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

Fase 3 — Invertir el camino de lectura

Al trabajar en la Fase 3 “Flip the stage”, anote primero el contrato: los datos de entrada requeridos, la señal de éxito y qué ocurre en caso de fallo parcial. Esa lista de verificación garantiza que los cambios posteriores en el código sean transparentes. Prefiera unidades pequeñas y verificables a scripts extensos. Cuando un paso falla, el fallo debe referirse a una única responsabilidad y no a un proceso complicado. Almacene en caché las instrucciones del sistema estables y los esquemas de las herramientas. Reenviar un preámbulo idéntico es una causa común de desperdicio. Al trabajar en la Fase 3 “Flip the stage”, anote primero el contrato: los datos de entrada requeridos, la señal de éxito y qué ocurre en caso de fallo parcial. Esa lista de verificación garantiza que los cambios posteriores en el código sean transparentes. Registre los tiempos de ejecución y el costo de tokens o consultas junto con los resultados funcionales. Tener visibilidad del costo desde el principio evita facturas inesperadas cuando el proceso pasa de la fase de demostración a entornos compartidos.

Before:
reads → V1
After:reads → V2

Fase 4 — Período de pruebas posterior al cambio

La etapa de remojo posterior al cambio en la Fase 4 funciona mejor cuando se trata como una superficie medible. Capture un registro exitoso, un caso de fallo y la nota de reversión antes de ampliar el alcance. Mantenga la configuración fuera del código de la aplicación. Los archivos de entorno, los almacenes de datos confidenciales y las banderas de funcionalidad deben estar en un lugar donde los operadores puedan auditarlos sin tener que leer todo el sistema.

Fase 5: Validación final y limpieza

La etapa de Validación Final de Fase 5 funciona mejor cuando se trata como una superficie medible. Capture un transcripte ideal, un caso de fallo y la nota de reversión antes de ampliar el alcance. Documente tanto el camino óptimo como el de recuperación. Las reintentos, los controles humanos y el manejo de correos no entregados forman parte del producto, no son mejoras posteriores. Asigne un presupuesto de tokens por turno y por sesión. Las herramientas agenciales amplían el contexto de manera excesiva; los límites máximos evitan que las demostraciones se conviertan en facturas inesperadas.

1. Detener la escritura dual en V1

La etapa de escritura dual de The 1 Stop V1 funciona mejor cuando se trata como una superficie medible. Capture un transcripto ideal, un caso de fallo y la nota de reversión antes de ampliar el alcance. Prefiera unidades pequeñas y verificables en lugar de scripts extensos. Cuando falla un paso, el fallo debe apuntar a una sola responsabilidad y no a un proceso complicado. Asigne un presupuesto de tokens por turno y por sesión. Las herramientas agenciales amplían el contexto de forma excesiva; los límites estrictos evitan que las demostraciones se conviertan en facturas inesperadas. La etapa de escritura dual de The 1 Stop V1 funciona mejor cuando se trata como una superficie medible. Capture un transcripto ideal, un caso de fallo y la nota de reversión antes de ampliar el alcance. Registre los tiempos y el costo en tokens o consultas junto con los resultados funcionales. Tener visibilidad del costo desde el principio evita facturas inesperadas cuando el proceso pasa de una demostración a entornos compartidos.

2. Ejecutar la validación final

Para la fase final de validación de las 2 ejecuciones, defina los datos de entrada, el responsable del paso y los criterios de finalización antes de modificar el código. Los operadores deben poder volver a ejecutar el paso a partir de un punto de control conocido sin tener que adivinar el estado oculto. Guarde la configuración fuera del código de la aplicación. Los archivos de entorno, los almacenes de datos secretos y las banderas de funcionalidad deben encontrarse en un lugar donde los operadores puedan auditarlos sin necesidad de leer todo el sistema. Prefiera salidas estructuradas con validación de esquema sobre texto libre cuando el paso siguiente sea código o una llamada a una herramienta.

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

3. Eliminar la representación V1

Para la etapa 3 “Eliminar V1”, defina las entradas, el responsable de la tarea y los criterios de finalización antes de modificar el código. Los operadores deben poder volver a ejecutar la tarea a partir de un punto de control conocido, sin tener que adivinar el estado oculto. Documente tanto la ruta óptima como la ruta de recuperación. Las intentonas repetidas, los controles humanos y el manejo de mensajes no entregados forman parte del producto, no son mejoras posteriores. Prefiera salidas estructuradas con validación de esquema sobre texto en formato libre cuando el siguiente paso sea escribir código o realizar una llamada a una herramienta.

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

El ciclo de vida completo

En la etapa del Ciclo de Vida Completo, defina las entradas, el responsable de la tarea y los criterios de finalización antes de modificar el código. Los operadores deben poder volver a ejecutar la tarea a partir de un punto de control conocido sin tener que adivinar el estado oculto. Prefiera unidades pequeñas y verificables en lugar de scripts extensos. Cuando una tarea falla, el error debe indicar una única responsabilidad y no un proceso complicado. Prefiera salidas estructuradas con validación de esquema en lugar de texto libre cuando el siguiente paso sea código o una llamada a una herramienta. En la etapa del Ciclo de Vida Completo, defina las entradas, el responsable de la tarea y los criterios de finalización antes de modificar el código. Los operadores deben poder volver a ejecutar la tarea a partir de un punto de control conocido sin tener que adivinar el estado oculto. Registre los tiempos de ejecución y el costo en tokens o consultas junto con los resultados funcionales. Tener visibilidad del costo desde el principio evita facturas inesperadas cuando el proceso pasa de entornos de demostración a entornos compartidos.

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

Las lecciones que se generalizan

Al trabajar en la etapa de “Las lecciones que se generalizan”, anote primero el contrato: las entradas requeridas, la señal de éxito y qué ocurre en caso de fallo parcial. Esa lista de verificación mantiene honestas las futuras modificaciones del código. Guarde la configuración fuera del código de la aplicación. Los archivos de entorno, los almacenes de datos secretos y las banderas de funcionalidad deben encontrarse en un lugar donde los operadores puedan auditarlos sin tener que leer todo el sistema. Almacene en caché las instrucciones del sistema estables y los esquemas de las herramientas. Reenviar un preámbulo idéntico es una causa común de consumo excesivo de recursos.

1. Hacer que la versión de incrustación sea un concepto de primera clase

Al trabajar en la fase de crear la versión con incrustación, anote primero el contrato: las entradas requeridas, la señal de éxito y qué ocurre en caso de fallo parcial. Esa lista de verificación mantiene honestas las futuras modificaciones del código. Documente junto con ello el camino óptimo y el camino de recuperación. Las reintentos, los controles humanos y el manejo de mensajes no entregados forman parte del producto, no son mejoras posteriores. Almacene en caché las instrucciones estables del sistema y los esquemas de las herramientas. Reenviar un preámbulo idéntico es una causa común de agotamiento.

2. Complete los datos como un ingeniero de bases de datos

Al trabajar en la fase de relleno, anote primero el contrato: los datos necesarios, la señal de éxito y qué ocurre en caso de fallo parcial. Esa lista de verificación ayuda a mantener honestas las futuras modificaciones del código. Prefiera unidades pequeñas y verificables en lugar de scripts extensos. Cuando un paso falla, el fallo debe apuntar a una sola responsabilidad y no a un proceso complicado. Almacene en caché las instrucciones del sistema estables y los esquemas de las herramientas. Reenviar un preámbulo idéntico es una causa común de problemas.

3. Separe la migración de datos de la migración del tráfico

V2 exists
   ≠
V2 is trusted
   ≠
V2 is serving production

4. Considere la calidad de la recuperación como parte de la corrección

Data correctness
      +
Retrieval quality
      +
Production health

5. Mantenga la ruta antigua como red de seguridad

6. Haga que el retroceso sea tedioso

change configuration
change code + redeploy + restore state

7. Elimine lo último

Conclusión final

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

Lista de verificación operativa