Галоўная / Артыкулы

Што рабіць, калі мадэль эмбедынгаў вашага агента хутка спыняць?

Калі мадэль эмбедынгаў агента выводзяць з эксплуатацыі: міграцыя гістарычных даных, жывых даных і прадакшн-трафіку на новыя эмбедынгі.

Выдавец: REACTAPP.TOP18 хв чытання4214 слоў

Крыніцы: What If Your Agent’s Embedding Model Is About to Sunset?

Існавайце гэта як перапрацоўаны варыянт ідэй з артыкула «Што, калі мадэль усадкі вашага агента скора перэстане працаваць?» для спецыялістаў: чыткія этапы, аранжаваныя блакіткі коду і прыметкі з восстанавлення, якія застаюцца пасля перадачы. Этап «Аптаварыс» найэфектывней працюе, калі яго розглядаць як мерыябельную плошчу. Запісайце адна ідэальная транскрыпцыю, адзін прыклад неудачы і прыметку з вярнення да пачатковага стану прычаму расшырэння масштаба. Запісвайце часы выканання і кост токенав або запытаў праза функцыйнае рэзультат. Відразлівае паказанне костаў з’являецца прычыну неспакою, калі працэс пераходзіць з дэмаверсіі ў спакульнаныя сераўысы.

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

Проблема

Для этапы «Проблема» неабяжна ўзначыць вхідныя даны, адпаведальнага за крок і крэтыяры завершэння пры перадзмене коду. Аперацыйныя працавнікі павінны магчымае перазапускаць крок з вядомай точкі контролю, не падозрываючы прыхованы стан. Конфігурацыю трэба знаходзіць за межамі коду прыемленае. Файлы сераўнавання, хранілішчы секрэтных даных і флагі функцыйяў павінны быць у адном месца, якое працавнікі можуць пераглядаць, не чытаючы весь граф. Калі наступны крок — гэта код або вызов інструмента, лепш выкарыстоўваць структураваныя выходныя даны з перакананнем схэмы, чым вольныя тэкстовыя апісанні.

1. Історычныя даны

Для этапы 1 «Історыя даных» неабходна прадзефінаванне вхідных дадзеных, адпраўніка крока і крэтарыяў завершэння працы перад зменым коду. Аперацыйныя працавнікі павінны магчымае перапрацаваць крок пачаткуючы з вядомага контрольнага пункту, не прымушаныя здогадвацца пра схованы стан. Неабходна аддзеіставіць дакументацыю як для стандартнага, так і для альтэрнатывнага ходу выканання. Практыка павторных спроб, перакрыцча ад чалавека і обработка непрацэсуемых паведамленняў ёсць часткай продукту, а не элементамі пазнейшага дапраўлення. Калі наступны крок — гэта код або вызов інструмента, лепш выкарыстоўваць структураваныя выходныя даныя з перакананням ў схеме, чым вольнай формы тэкст.

2. Жывыя даныя

Для этапы апрацоўкі прыемных дадзей 2 Live неабяжна прадзефінаваць вхідныя даны, адпраўніка крока і крэтыяры завершэння перад зменым коду. Аперацыяныя працавнікі павінны магчымае перзапускаць крок з вядомай точкі контролю, не падозрываючы прыхованы стан. Лепш выбіраць маленькія, тэставаныя елементы замест большых скрыптов. Калі крок не выканаецца, прычына неудачы павінна вказваць на адзін конкрэтны элемент, а не на заплутаны ланцуг задач. Калі наступны крок — гэта код або вызов інструмента, лепш выкарыстоўваць структураваныя выходныя даны з перакананнем схэмы, замест вольнага фармата тэксту. Для этапы апрацоўкі прыемных дадзей 2 Live неабяжна прадзефінаваць вхідныя даны, адпраўніка крока і крэтыяры завершэння перад зменым коду. Аперацыяныя працавнікі павінны магчымае перзапускаць крок з вядомай точкі контролю, не падозрываючы прыхованы стан. Запісваць час выканання і кост токенаў або запытаў разам з функцыйнаімі рэзультатамі. Відразувыя даны пра косцы запобегаюць неспакоўным рахункам, калі працэс пераходзіць з дэмавай версіі ў спяльныя сераўысы.

3. Трафік у працоўным рэжыме

Калі працуеце з 3 стадзямі трафіка вырабоцтва, спачатку запісайце угоду: неабяжлівыя даны, сігнал успеху і тое, што выходзіць пад частыя неудачы. Такі спіс пераканаецца дапамагае залічваць змяны ў кодзе. Зберагаюце канфігурацыю паза кодам прыемленае. Файлы сераўіса, хранільнікі секрэтных дадзеных і флагі функцыйяў должны знаходзіцца ў аднам месцы, куды аператары можаюць адбавіць аўдыт без неабяжлівага чытання всей структуры. Кэшавайце стабільныя інструкцыі сістэмы і схемы інструментаў. Перасылка ідэнтычных прамультаў ёсць частым выклікам затрат энергіі.

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

Першыя правілы дызайну: версіюванне імбеддынгаў

Калі працюеце над стадзіяй «Першая правіла дыяграматыкі», спачатку запісайце умовы працы: неабяжлівыя даныя, сігнал успеху і тое, што выканаецца у разе частковага нявыполнення. Такі спіс контроля дапамагае заліцварыць пазнейшыя змены ў кодзе. Документавайце як шлях успеху, так і шлях вярнення ў нормальны стан. Перапрыбуткі, людзкія контрольны пункты і обработка некорэктных паведамленняў ёсць часткай продукту, а не элементамі пазнейшага дапрацоўкі. Зберагайце у кэшы стабільныя інструкцыі сістэмы і схемы інструментаў. Перасылка ідэнтычных прамультаў ёсць частым выклікам для сістэмы.

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

Фаза 0 — Даполненне прэдставлення V2

Калі працуеце над стадзіяй Phase 0 Backfill, спачатку запісайце умовы кантракта: неабяжлівыя даны, сігнал успеху і тое, што выканаецца у разе частковага нявыполнення. Такі спіс пераканаецца, што пазнейшыя змены коду будуць чыстымі. Валіце маленькія, тэставаныя елементы замест большых скрыптов. Калі якісь крок не выйшае, прычына нявыполнення павінна вказваць на адзіну абяжлівасць, а не на заплутаны ланцужок задач. Зберагаеце у кэшы стабільныя інструкцыі сістэмы і схемы інструментаў. Перадзял у тое ж самае прамэру ёсць частым выклікам затрат. Калі працуеце над стадзіяй Phase 0 Backfill, спачатку запісайце умовы кантракта: неабяжлівыя даны, сігнал успеху і тое, што выканаецца у разе частковага нявыполнення. Такі спіс пераканаецца, што пазнейшыя змены коду будуць чыстымі. Запісвайце час выканання і кост токенаў або запытаў разам з функцыйнальнымі рэзултатамі. Відразувая візуабельнасць костаў запобегае неспакойным рахункам, калі праця пераходзіць з дэмавай версіі ў спяльныя сераўы.

SELECT * FROM semantic_cache;

0.1 Стварыце партыцыю V2

Працэс 0 1 «Стварэнне сцэны» работае найкрашча, калі яго спрыявае можлівасць вімеры паверхні. Запісаўце адна «золатая» транскрыпцыя, адын прыклад неудачы і прыметку па анулюванні змян перш чым расшырваць масштабы. Зберагаўце настройкі праза код аплікацыі. Файлы сяродавішча, хранільнікі секрэтных дадзеных і флагі функцый должны знаходзіцца ў аднам месцы, куды аператары можаць адбавляць контроль без неабяжнага чытання всіх дадзеных. Задаўце ліміты бюджэту на кожны раунд і кожную сесію. Інструменты з агентным рэжымам агрэсіўна расшырваюць кантэкст; строгі ліміты не дазволяюць, каб дэманстрацыі ператварыліся на неспакоючыя рахункі.

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

0.2 Раздзеліце корпус на часткі, якія можна прызначыць

Працэс раздзелення на 0 2 этапы працюе найкрашча, калі яго розглядаць як вімерную паверхню. Запісаўце адна «золатая» транскрыпцыя, адзін прыклад неудачы і прыметку па адвярненню перад расшырэнням масштаба. Дакументавайце як шлях успеху, так і шлях вяснавання. Перапрыбуткі, людзкія контралі і обработка некорэктных паведамленняў ёсць часткай продукту, а не наступным етапам дорабачання.

┌─────────────────────────────────────────┐
│ 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 Зялезенне дадзеных з пагінацыяю за ключам

Метод 0 3 Fetch with stage работае наяўней, калі яго спрыяваць як мерыемую паверхню. Зберагуце адна ідэальная транскрыпцыя, адзін прыклад неудачы і запіс пра вярнэнне да пачатковага стану перш чым расшырваць масштабы. Валіце маленькія, тэставаныя елементы замест большых скрыптов. Калі якісь крок не выходзіць, прычына неудачы павінна вказываць на адну конкрэтную адпаведальнасць, а не на заплутаны ланцюг задач. Задаеце ліміты на колькасць токенав за раунд і за сесію. Інструменты-агенты агрэсывна расшырваюць кантэкст; строгі ліміты запобегаюць таму, што дэманстрацыі ператвараюцца на неспакоўныя рахункі. Метод 0 3 Fetch with stage работае наяўней, калі яго спрыяваць як мерыемую паверхню. Зберагуце адна ідэальная транскрыпцыя, адзін прыклад неудачы і запіс пра вярнэнне да пачатковага стану перш чым расшырваць масштабы. Запісвайце час выканання і кост токенав або запытаў разам з функцыйнальнымі рэзультатамі. Відразувыя даны пра косты запобегаюць неспакоўным рахункам, калі працэс пераходзіць з дэманстрацыі ў спяльныя сераўеры.

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 Стварэнне эмбедынгаў праз спецыяльны буфер

У этапы 0.4 Стварэнне эмбедынгаў неабходна пазначыць вхідныя даны, адпаведальнага за выкананне крока і крытэрыя завершэння прычыні змены коду. Аперацыйныя працоўнікі должны магчымае перзапускаць крок з вядомай точкі контролю, не падозрываючы стану, які захаваны ў сістэме. Конфігурацыю трэба залічыць параду ад коду прыкладнення. Файлы сераўіса, хранільнікі секрэтных дадзеных і флагі функцыяў должны знаходзіцца ў аднам месцы, куда працоўнікі можуць адбавіць контроль, не чытаючы весь код. Калі наступны крок — гэта код або вызов інструмента, лепш выкарыстоўваць структураваныя выходныя даны з перакананнем ў правільнасці схемы, чым вольныя тэкстовыя апісанні.

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

0.5 Буфераванне і контроль кількасці запісаў

Для буфера і етапа 0.5 неабяжна падзець задаць вхідныя даны, адміністратара крока і крытэрыя завершэння пры перадзеі коду. Аперацыйныя працавнікі должны магчымаю лёгкая перзапусціць крок з вядомай точкі контролю, не падозрываючы схованы стан. Неабяжна задокументаваць як шлях успеху, так і шлях вярнення. Перапрыбуткі, людзкіе перакрыцця і апрацоўка некорэктных паведамленняў ёсць часткай продукту, а не чымсь, што дадаецца пазней. Калі наступны крок — гэта код або вызов інструмента, лепш выкарыстоўваць структураваныя выходныя даны з паўнай верыфікацыёю схемы, чым вольнай формы тэкст.

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

0.6 Пераканаць кожны завершаны дзіапазон

Для пункту 0 6: перад змінайом код неабяжна адзыначэнне кожнага этапу, вакладків, адпавядача за шаг і крэтарыяў выходу. Аператары должны магчымае пераўталачваць шаг з вядомай точкі контролю, не спрабоўваючы здагадвацца пра схованы стан. Лепш выбіраць маленькія, тэставаныя елементы замест большых скрыптов. Калі шаг не выйшаў, прычына неудачы павінна вказываць на адзін конкрэтны аспект, а не на заплутаны ланцоўкі задач. Калі наступны шаг — гэта код або вызов інструмента, лепш выкарыстоўваць структураваныя выходны даныя з адзыначэннем схемы, замест вольнага фармата тэксту. Для пункту 0 6: перад змінайом код неабяжна адзыначэнне кожнага этапу, вакладків, адпавядача за шаг і крэтарыяў выходу. Аператары должны магчымае пераўталачваць шаг з вядомай точкі контролю, не спрабоўваючы здагадвацца пра схованы стан. Запісвайце час выканання і кост токеноў або запытаў разам з функцыйнальнымі рэзультатамі. Відразувыя даныя пра косцы запобегаюць неспакойным рашчыткам, калі працэс пераходзіць з дэмавай версіі ў спяльныя сераўы.

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

0.7 Ствароць індэксы V2

Калі працуеце на этапе 0.7 Ствароць індэксы, спачатку запісайце умовы працы: неабяжлівыя даныя, сігнал успеху і тое, што выканаецца у разе частковага нявыполнення. Такі спіс контроля дапамагае заліцвачыць змяны ў кодзе пазнейша. Храніце настройкі за межамі коду прыемліка. Файлы сераўнавання, хранальнікі секрэтных даных і флагі функцыйяў должны знаходзіцца ў аднам месцы, куда аператары можуць адбавіць аўдыт без неабяжлівага чытання всей структуры. Кэшавайце стабільныя інструкцыі сістэмы і схемы інструментаў. Перадзесланне ідэнтычных даных ўсё чашча становіцца прычыной зайвых вітрачэнняў.

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

Фаза 1 — Атстаяння V2 перад запускам у прыемліце

Калі працюеце над стадзіяй «Парадж 1: Адзначэнне V2», спачатку запісайце угоду: неабяжлівыя даныя, сігнал успеху і тое, што выходзіць у разе частковага неяксамоства. Такі спіс пераканаець у тым, што пазнейшыя змены коду будуць чыстымі. Дакументавайце як шлях успеху, так і шлях вярнення. Перапрыбуткі, людзкія контралі і обработка некорэктных паведамленняў ёсць часткай продукту, а не пазнейшым дапрацоўкам. Зберагайце у кэшы стабільныя інструкцыі сістэмы і схемы інструментаў. Перасылка ідэнтычных прамуслов ёсць частым выклікам зношэння рэсурсаў.

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

Парадж 2 — Тэставанне новага шляху

Калі працуеце над стадыяй Phase 2 Canary, спачатку запісайце умовы працы: неабяжлівыя даныя, сігнал працэздольнасці і тое, што выканаецца у разе частковага абярэння. Такі спіс контролю дапамагае заліцвачваць пазнейшыя змены коду. Валіце маленькія, тэставаныя елементы замест большых скрыптов. Калі якісь крок абярэнняе, абярэнне павінна вказваць на адзіну адпаведальнасць, а не на заплутаны ланцюг задач. Зберагаеце у кэшы стабільныя інструкцыі сістэмы і схемы інструментаў. Перадзесланне ідэнтычных даных — частая прычына зайвых вітрацоў. Калі працуеце над стадыяй Phase 2 Canary, спачатку запісайце умовы працы: неабяжлівыя даныя, сігнал працэздольнасці і тое, што выканаецца у разе частковага абярэння. Такі спіс контролю дапамагае заліцвачваць пазнейшыя змены коду. Запісвайце час выканання і вартасць токенаў або запытак пад функцыйнальнымі рэзултатамі. Відразувая візуабільнасць вартасцей запобегае неспакойным рахункам, калі працэс пераходзіць з дэмаверсіі ў спяльныя сераўы.

1% → 10% → 50% → 100%

2.1 Траекторыя запыту

Этап запіта працюе найэфектывней, калі яго розглядаць як вімерную плошчу. Зафіксавце адны ідэальны прыклад працы, адну сітуацыю неудачы і прыметкі па поверненню да пачатковага стану пры розшырэнні масштаба. Зберагачце настройкі пазначынай ад коду прыемліка. Файлы сяродавішча, хранільнікі секрэтных дадзеных і флагі функцыйяў должны знаходзіцца ў аднам месцы, куды аператары можаць адрабоўваць контроль без неабяжнага чытання всіх дадзеных. Установіце ліміты на колькасць токенав за раунд і за сесію. Інструменты-агенты агрэсывна расшырваюць кантэкст; строгі ліміты запобегаюць таму, каб дэманстрацыі ператварыліся на неспакоўныя рахункі.

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

Выкарыстоўванне інформацыі з урахоўванням версіі

Этап адаптавання выкарыстання на основе версіі працюе найэфектывней, калі яго розглядаць як меравальную плошчу. Запісаце адна ідэальная транскрыпцыя, адзін прыклад неудачы і запіс працэў па адвярненню бягункі перш чым расшырваць масштабы. Дакументаваце як успішны, так і вярнучыся шляхы. Перапрыбуткі, людзкія контралі і обработка некорэктных паведамленняў ёсць часткай продукту, а не пасляднім дапрацоўкам. Задаце ліміт токенав на кожны раунд і на кожную сесію. Інструменты-агенты агрэсывна расшырваюць кантэкст; строгі ліміты запобегаюць таму, каб дэманстрацыі ператварыліся на неспакоўныя рахункі.

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

2.2 Нормы якосці

Этап «2 2 Quality Guardrails» працюе найэфектывней, калі яго спрыяваць як меравальную плошчу. Зберагачыце адны ідэальны прыклад працы, адзін прыклад неудачы і запіс паўрання перш чым расшырваць масштабы. Валіце маленькія, тэставаныя елементы замест большых скрыптов. Калі якісь крок не выйшае, неудача должна вказваць на адну конкрэтную адпаведальнасць, а не на заплутаны працэс. Задаюце ліміты токенав на кожны рунг і сесыю. Інструменты-агенты агрэсіўна расшырваюць кантэкст; строгі ліміты запобегаюць таму, каб дэманстрацыі ператварыліся на неспакоючыя рахункі. Этап «2 2 Quality Guardrails» працюе найэфектывней, калі яго спрыяваць як меравальную плошчу. Зберагачыце адны ідэальны прыклад працы, адзін прыклад неудачы і запіс паўрання перш чым расшырваць масштабы. Запісвайце час выканання і кост токенав або запытаў разам з функцыйнальнымі рэзултатамі. Відразувыя даны пра косцы запобегаюць неспакоючым рахункам, калі працэс пераходзіць з дэманстрацыі ў спяльныя сераўеры.

Здароўе сістэмы

Для этапы здароўя сістэмы неабходна прадзефінаваць вхідныя даны, адпаведальную особу за кожны крок і крэтарыі выходу пры змяне коду. Аператары должны магчымаць перзапуск крока з вядомай точкі контролю, не прабуючы спадарожваць схованы стан. Конфігурацыю трэба залічыць паза кодам прыкладнення. Файлы сераўнавання, хранільнікі секрэтных даных і флагі функцыйяў должны знаходзіцца ў аднам месцы, якое аператары можаць пераглядаць, не чытаяўшы весь ланцуг задач. Калі наступны крок — гэта код або вызов інструмента, лепш выкарыстоўваць структураваныя выходныя даны з перакананнем ў схеме, чым вольныя тэкстовыя апісанні.

Якасць запошчыцтва даных

Для этапы перакантролю якасці неабяжна ўзначыць вхідныя даны, адпаведальнага за крок і крэтыры завершэння пры змяне коду. Аперацыйныя працавнікі павінны магчымае перазапускаць крок з вядомай точкі контролю, не падозрываючы прыхованы стан. Неабяжна задокументаваць як шлях успеху, так і шлях вярнення. Перапрыбуткі, людзкіе пераконтролы і обработка некантрольваных паведамленняў ёсць часткай продукту, а не наступным этапам дапрацоўкі. Калі наступным крокам ёсць код або вызов інструменту, лепш выкарыстоўваць структураваныя выходныя даны з перакантролем схэмы, чым вольнай формы тэкст.

Стан міграцыі

Для этапы перахоўкі здароў’я неабходна прадзефінаваць вхідныя даны, адпаведальную особу за кожны крок і крэтыяры завершэння пры зміне коду. Аперацыйныя працавнікі должны магчымае перзапускаць крок з вядомай точкі контролю, не падозрываючы прыхованы стан. Лепш выбіраць маленькія, тэставаныя елементы замест большых скрыптов. Калі крок не выконваецца, прычына неудачы должна вказываць на адну конкрэтную адпаведальнасць, а не на заплутаны працэс. Калі наступны крок — гэта код або вызов інструмента, лепш выкарыстоўваць структураваныя выходныя даны з пераканальваннем схэмы, замест вольнага фармата тэксту. Для этапы перахоўкі здароў’я неабходна прадзефінаваць вхідныя даны, адпаведальную особу за кожны крок і крэтыяры завершэння пры зміне коду. Аперацыйныя працавнікі должны магчымае перзапускаць крок з вядомай точкі контролю, не падозрываючы прыхованы стан. Запісваць час выканання і вартасць токена або запыту разам з функцыйнальнымі рэзультатамі. Відразувыя даны пра вартасці запобегаюць неспакоўным рахункам, калі працэс пераходзіць з дэмовай асяроддзя ў спакульнаныя сераверы.

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

2.3 Адміністрацыя павертання должна быць змянай канфігурацыі

Калі працюеце над этапам 2.3 «Адміністрацыя павертання», спачатку запісайце умовы: неабяжлівыя даны, сігнал успеху і тое, што выходзіць на падзею частковага невыпання. Такі спіс контроля дапамагае заставіць пасляэтапныя змены коду быць чыстымі. Зберагаюце канфігурацыю пазначынай ад коду прыемліка. Файлы сераўнавання, храненні секрэтных дадзенаў і флагі функцыйяў должны знаходзіцца ў аднам месцы, куда аператары можуць адбавіць аўдыт без неабяжлівага чытання всей структуры. Зберагаюце у кэшы стабільныя інструкцыі сістэмы і схемы інструментаў. Перадача ідэнтычных даных знову ёсць частым выклікам некантрольванага спалювання рэсурсаў.

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

Конкурэнцыя пад час заполнення: што з жывымі апдэйтамі?

Калі працюеце над стадзіяй «The Race During Backfill», спачатку запісайце угоду: неабяжлівыя даны, сігнал успеху і тое, што выканаецца у разе частковага неяўнасці. Такі спіс пераконтроўкі дапамагае заліцьварыць пазнейшыя змены ў кодзе. Документавайце як шлях успеху, так і шлях вяснавання. Перапрыбуткі, людзкія контралі і обработка некорэктных паведамленняў ёсць часткай продукту, а не пазнейшым дапрацоўкам. Зберагайце у кэшы стабільныя інструкцыі сістэмы і схемы інструментаў. Перасылка ідэнтычных прамуров ёсць частым выклікам для рэсурсаў.

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

Фаза 3 — Зміна шляху чытання

Калі працуеце над фазай 3 «Flip the stage», спачатку запісаце кантракт: неабяжлівыя даны, сігнал успеху і тое, што выходзіць у разе частковага неяксамоства. Такі спіс пераканальвае ў тым, каб пазнейшыя змены коду былі чыстымі. Валіце маленькія, тэставаныя елементы замест вялікіх скрыптов. Калі якісь крок неяксамоства, гэта неяксамоства павінна вказваць на адну адпаведальнасць, а не на заплутаны ланцужок задач. Зберагаеце у кэшы стабільныя інструкцыі сістэмы і схемы інструментаў. Перадзесланне ідэнтычных прамаравых дастакоў — частая прычына збыткав.

Before:
reads → V1
After:reads → V2

Фаза 4 — Пасля-Flip Soak

Этап занурэння пасля перамены на 4-й фазе дае найлепшыя рэзультаты, калі яго расследжваць як меравальную паверхню. Зафіксавайце адны «золаты» прымер, адну справу з бягамі і запіс пра вярнэнне да пачатковага стану, перш чым расшырваць масштабы. Зберагаюце настройкі пазначкай за межамі коду прыемліка. Файлы сераўнавання, хранільнікі секрэтных даных і флагі функцый должны знаходзіцца ў аднам месцы, куда аператары можу працаваць без неабяжнага чытання всіх дадзеных. Встановіце ліміты токенаў на кожны раунд і на кожную сесію. Інструменты з агентным рэжымам актыўна расшырваюць кантэкст; строгі ліміты запобегаюць таму, каб дэманстрацыі ператварыліся на неспакоючыя рахункі.

5-я фаза — Завершальная перакананне і чыстка

Этап апошнайя пераканалення на 5-й фазе дае найлепшыя рэзультаты, калі яго спрыявае можлівасць вімеры. Зберажыце адны ідэальны прыклад працы, адну справу з бягам і прыметку па вярнэнню да пачатковага стану пры расшырэнні масштаба. Дакументавайце як шлях успеху, так і шлях вярнэння да нормальнага стану. Перапрыбуткі, людзкі контроль і обработка некорэктных паведамленняў ёсць часткай продукту, а не элементамі пазнейшага дапрацоўкі. Задазвайце ліміт токенав на кожны раунд і на кожную сесію. Інструменты-агенты агрэсывна расшырваюць кантэкст; строгі ліміты запобегаюць таму, каб дэманстрацыі ператварыліся на неспакоўныя рахункі.

1. Зупніце двойную запіс V1

Этап двойнага запісу The 1 Stop V1 працюе наяўней калі яго спрыяваць як до меры прыемлемых рэзультатаў. Зберагчыце адны ідэальны прыклад працы, адзін прыклад неудачы і запіс паўторнага запуску пры перадачы задання на большы масштаб. Валідзіруйце маленькія, тэставаныя елементы замест большых скрыптов. Калі якісьць кроку не задаеся, прычына неудачы павінна быць асоўваная з конкрэтным элементам, а не з усім сложным ланцоўкам заданняў. Задаеце ліміты на колькасць токенав за раунд і за сесію. Інструменты з агентным падходам актыўна расшырваюць кантэкст; строгі ліміты не дазволяюць, каб дэманстрацыі ператварыліся на неспакоючыя рахункі. Этап двойнага запісу The 1 Stop V1 працюе наяўней калі яго спрыяваць як до меры прыемлемых рэзультатаў. Зберагчыце адны ідэальны прыклад працы, адзін прыклад неудачы і запіс паўторнага запуску пры перадачы задання на большы масштаб. Запісвайце час выканання і вартасць токенав або запытак праза функцыйнае рэзультат. Відкрытая інформацыя пра вартасці заранее запобегае неспакоючым рахункам, калі працэс пераходзіць з дэманстрацыі ў спяльныя сераўеры.

2. Адрабоць фінальную пераверку

Для фінальнага этапа адзыявання 2-го запуску неабходна ўскладненне вхідных дадзэнняў, адпаведальнага за крок і крэатарыяў завершэння працы перад зменым коду. Аперацыйныя працавнікі должны магчымае перазапускаць крок з вядомай точкі контролю, не падозрываючы схованы статус. Конфігурацыю трэба захаваць праз аддзел коду прыкладнення. Файлы сераўіса, хранілішча секрэтных дадзэнняў і флагі функцыйяй должны знаходзіцца ў аднам месцы, якое працавнікі можуць пераглядаць, не чытаючы весь граф. Калі наступны крок — гэта код або вызов інструмента, лепш выкарыстоўваць структураваныя выходныя даныя з адзыяванням схемы, чым вольныя тэкстовыя апісанні.

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

3. Адмахнуць прэдставленне V1

Для этапы 3 «Выдаленне V1» неабяжна прадзефінаваць вхідныя даны, адпраўніка крока і крэтыяры завершэння перад зменым коду. Аперацыяныя працавнікі павінны магчымае перзапускаць крок з вядомай точкі контролю, не падозрываючы прыхованы стан. Неабяжна задокументаваць як шлях успеху, так і шлях вярнення. Перапрыбуткі, людзкіе перакрыцця і апрацоўка некорэктных паведамленняў ёсць часткай продукту, а не пасляднім дапрацоўкам. Калі наступны крок — гэта код або вызов інструмента, лепш выкарыстоўваць структураваныя выходныя даны з перакрыцчама схемы, чым вольнай формы тэкст.

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

Полны жыцёвы цыкл

У стадыі «Полны жыцёвы цыкл» неабяжна практычна вказаць інпуты, адпавядаючага за крок адпаведальнага, а таксама крытэрыі завершэння пры змяне коду. Аперацыйныя працавнікі павінны магчымаць перзапуск кроку з вядомай точкі контролю, не падозрываючы прыхованы стан. Лепш выбіраць маленькія, тэставаныя елементы замест большых скрыптов. Калі крок не выйшоў, прычына неудачы павінна вказываць на адну конкрэтную адпаведальнасць, а не на заплутаны ланцюг задач. Калі наступны крок — гэта код або вызов інструмента, лепш выкарыстоўваць структураваныя выходны даныя з пераканальванням схемы, замест вольнага фармата тэксту. У стадыі «Полны жыцёвы цыкл» неабяжна практычна вказаць інпуты, адпавядаючага за крок адпаведальнага, а таксама крытэрыі завершэння пры змяне коду. Аперацыйныя працавнікі павінны магчымаць перзапуск кроку з вядомай точкі контролю, не падозрываючы прыхованы стан. Запісваць час выканання, а таксама вартасць токеноў чы запытанняў разам з функцыйнальнымі рэзультатамі. Відразувыя даныя пра вартасці запобегаюць неспакоўным рахункам, калі працэс пераходзіць з дэмовай асяроддзя ў спакульную.

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

Урокі, які можна застосаваць у разы розных сітуацый

Калі працюеце над этапам «Урокі, які можна застосаваць у разы розных сітуацый», спачатку запісайце умовы: неабяжныя даны, сігнал успеху і тое, што выканаецца у разы частковага нявучнасці. Такі спіс дапамагае залічваць усі змяны ў кодзе. Зберагаюце настройкі праза код аплікацыі. Файлы сераўнавання, храненні секрэтных даных і флагі функцыйяў должны знаходзіцца ў аднам месцы, куды аператары можаюць пераглядаць іх без неабяжнага чытання всіх элементаў сістэмы. Зберагаюце у кэшы стабільныя інструкцыі сістэмы і схемы інструментаў. Павторны адправкі ідэнтычных даных ўсё часта становяцца прычыной зайвых вітрачэнняў.

1. Зробіце версію вбудоввання прадукту празнэчным элементам

Калі працуеце над стадзіяй 1 «Стварэнне версіі з вбудованым элементам», спачатку запішыце контракт: неабяжлівыя даныя, сігнал успеху і тое, што выканаецца у разе частковага нявыпалення. Такі спіс пераканальвае ў тым, каб пазнейшыя змены коду былі чыстымі. Дакументаваць трэба як шлях успеху, так і шлях вярнення. Перапрыбуткі, людзкі контроль і обработка некорэктных паведамленняў ёсць часткай продукту, а не чыставаннем пазнейша. Зберагачвайце у кэшы стабільныя інструкцыі сістэмы і схемы інструментаў. Перадача таго ж самога прамэра ёсць частым выклікам рэсурсоў.

2. Выпаленне дадзеных даных як інжынер базы дадзеных

Калі працюеце над этапам «2 Backfill», спачатку запісайце угоду: неабяжлівыя даны, сігнал успеху і тое, што выходзіць у разе частковага неудачы. Такі спіс пераконтроўкі дапамагае заліцьварыць пазнейшыя змены ў кодзе. Валіце маленькія, тэставаныя елементы замест вялікіх скрыптав. Калі якісь крок не выйшае, неудача павінна вказываць на адну адповядальнасць, а не на заплутаны ланцужок задач. Зберагаеце у кэшы стабільныя інструкцыі сістэмы і схемы інструментаў. Перадзесланне ідэнтычных даных — частая прычына працоўных проблем.

3. Раздзеляйце міграцыю дадзеных ад міграцыі трафіку

V2 exists
   ≠
V2 is trusted
   ≠
V2 is serving production

4. Вважайце якасць адзысквання дадзеных часткаю правільнасці

Data correctness
      +
Retrieval quality
      +
Production health

5. Залічвайце стары шлях як апатэнцію

6. Робіце працэс анулювання нудным

change configuration
change code + redeploy + restore state

7. Адчыняйце останні элемент

Апошняя заключэнне

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

Чэрніця для эксплуатацыі