Эмбеддингтерді сервисті тоқтатпай жаңарту: blue-green
Сервисті тоқтатпай эмбеддингтерді жаңарту бойынша практикалық стратегиялар: blue-green, параллель индекстер, сапаны тексеру және кері қайтару.

Мәселе: сервис тоқтамай тұрып модель мен эмбеддингтерді жаңарту
Модель эмбеддингті өзгертсеңіз немесе векторлық қатпарларды қайта есептесеңіз, бір ғана компонент емес — бүкіл жүйе әсерленеді. Векторлық іздеу жаңа векторларды ескі индекспен (немесе керісінше) салыстыра бастайды, сол себепті нәтиже болжап болмайды. Тіпті сервис формальды түрде жұмыс істесе де, қолданушылар тез байқайды: «бұрын табатын, ал қазір таппайды».
Тоқтау әсіресе қауіпті болған жерде, мұнда іздеу мен ұсыныстар күнделікті жұмыс бөлігі. Ішкі регламент бойынша іздеу, service desk сұраулары, ұқсас құжаттарды табу, чаттағы көмекші жауаптары — бұлардың кез келгенінің бір сағаттық жұмыссыздығы қолмен іздеуге оралуға, сұрауларды қайталауға, қолдау жүктемесінің өсуіне және жүйеге сенімнің төмендеуіне әкеледі.
Ескерілетін белгілер, егер модель немесе эмбеддингтерді ұқыпсыз ауыстырсаңыз:
- Релеванттық төмендейді: топқа сөздік ұқсастыққа негізделген, бірақ мән-мағынасы сәйкес келмейтін құжаттар шығады.
- Бос жауаптар пайда болады: жүйе бұрын табатын жерден ештеңе таппай қалады.
- Кешігулер өседі: индекс прогревается, кэштер тазаланады, сұраулар баяулайды.
- Нәтижелердің таралымы қатты өзгереді: бірдей сұраулар «басқа әлем» береді.
Жаңарту бірнеше қабатты өзгертеді: модель нұсқасы, мәтінді алдын ала өңдеу пайплайны, эмбеддингтерді қайта есептеу процесі, векторлық индекс және сервис (фильтрлер, аралас ранжирлеу: векторлық және кілттік).
Мәселе тек қайта есептеуде емес: көбінесе үйлесімсіздік бұзады: ескі индекс жаңа векторлармен жұмыс істей алмайды, ал жаңа модель мәтінді басқа «көреді». Сондықтан мақсат мынадай: сервис қолжетімділігін сақтау, сапаны бақылауда ұстау және ауысқаннан кейін тез кері қайту мүмкіндігі болу.
Тұрақтылық талаптары қатаң ұйымдарда (мемлекеттік органдар, банктер) инфрақұрылым локалды серверлерде болғанда «түнде жаңартып, қарап шығу» мүмкін емес. Қажет — параллель жұмыс істейтін жүйені жаңартуға мүмкіндік беретін стратегиялар, өзгерістерді барлық қолданушылар көрмей тұрып бақылауға мүмкіндік беретін тәсілдер.
Компонент картасы: нені нұсқалау қажет
Сервисті тоқтатпай жаңарту үшін алдымен жүйенің бір қарапайым ағысын сызған дұрыс. Қате жиі модельде емес, бір бөлікті өзгертіп, көрші бөліктерді ескермегенде шығады. Нәтижесінде жүйе оғаш жауап береді.
Сұраудың типтік жолы: бастапқы деректер (құжаттар мен сұраулар) — эмбеддинг моделінің шығару векторы — векторлық индекс — ближайший соседи іздеуі — (кейде) қосымша ранжирлеу — қолданушыға жауап. Нұсқаны модельде ғана емес, қадамдар арасындағы үйлесімділікке әсер ететін барлық нәрсеге сүйкеніп ұстаған дұрыс.
Ашық нұсқалануы тиіс заттар:
- Эмбеддинг моделі (салмақтар, атауы/хэш нұсқасы) және жұмыс режимі (векторлар нормализациясы қосулы ма емес пе).
- Токенизатор немесе сөздік (шағын өзгеріс те репрезентацияны жылжытады).
- Эмбеддинг құру параметрлері: размер, мәлімет түрі (float32/float16), pooling, пост‑өңдеу (L2‑нормализация).
- Іздеу параметрлері: қашықтық метрикасы (cosine/dot/L2), индекс параметрлері (кластер саны/граф байланыстары, efSearch), фильтрлер және дубликаттарды жою ережелері.
Практикада бір «нұсқа карточкасын» модель мен индекспен бірге ұстау ыңғайлы: мысалы, embedding_model=v3, tokenizer=v3, dim=768, metric=cosine, normalize=true, index_build=v3.1. Осылай кез келген эмбеддинг пен индекс нақты бір конфигурацияға тәуелді болады.
Ең қауіпті тәуелділіктер, миграцияда жиі бұзатындар:
- Вектор размері. Жаңа модель 1024 береді де ескі 768 күткен индекс жаңа векторларды қабылдамайды.
- Метрика мен нормализация. Cosine әдетте нормаланған векторларды күтеді, ал dot product басқаша нәтиже береді.
- Сақтау форматы. float16 немесе кванттау іздеуді жеделдетуі мүмкін, бірақ сапа мен қашықтық таралымын өзгертеді.
Ең қауіпті операциялар — оларды тез кері қайтару қиын. Переиндексация уақытты және ресурсты талап етеді, ал трафикті ауыстыру барлығын бірден әсер етеді. Сондықтан қауіпті қадамдарды осылай құрыңыз: ескі тізбек (модель + эмбеддингтер + индекс + іздеу параметрлері) параллель жұмыс істесін және кез келген уақытта қайта қабылдауға дайын болсын.
Тоқтатпай ауыстыру: blue-green, canary, shadow
Негізгі ереже — қызметкерлерді жаңа нұсқаны бірінші рет жұмыс уақытында «сынауға» мәжбүрлемеу. Үш тәсіл бар, олар трафикті қалай бағыттайтыны мен қаншалықты тез кері қайтып кетуге болатынын анықтайды.
Blue-green
Blue-green — екі бірдей орта: «көк» (ағымдағы) және «жасыл» (жаңа). Жаңа модельді, жаңа эмбеддингтерді және соларға қатысты барлығын бөлек ортада көтеріп, тексеріп, содан кейін трафикті бір батырмамен ауыстырасыз (роутер, балансировщик, флаг).
Артықшылығы: кері қайтару жылдам, жауапкершілік айқын (әр сәтте бір нұсқа белсенді). Минусы: ресурс жағынан қымбатырақ — екі толық көшірмені ұстау керек.
Canary және shadow
Canary — жаңа нұсқаны біртіндеп трафиктің бөлігінен қосу. Алдымен 1–5% сұрауларға, кейін көпке дейін. Қателер ерте көрінеді, тәуекел бөлінген.
Shadow — «көлеңкелі» тексеріс. Жаңа нұсқа сұраулардың көшірмесін алады және жауаптарды есептейді, бірақ пайдаланушыларға әдеттегі (ескі) жауаптар беріледі. Осылай тірі деректерге негізделген статистика жинауға болады, тәжірибеге әсер етпей.
Жиі таңдау келесі сияқты:
- Blue-green — егер тез кері қайтару керек және екі контур ресурстарына мүмкіндік болса.
- Canary — тәуекелді біртіндеп азайтқыңыз келгенде.
- Shadow — нақты сұрауларда сапаны тексеріп, қолданушылар тәжірибесін өзгерткіңіз келмесе.
- Canary + shadow — алдымен «көлеңкеде» салыстырып, содан кейін біртіндеп трафикті ұлғайту.
Практикалық мысал: ішкі база бойынша іздеуде жаңа модель «идеал тапсырмаларда» жақсы нәтиже көрсеткенімен, нақты жұмыс кезінде қызметкерлер қысқа және қате жазылған сұраулар жазады. Shadow арқылы жаңа нұсқаның мұндай сұраулардағы қателерін әсер етпей байқай аласыз.
Әр тәсіл қауіпсіз болу үшін алдын ала үш нәрсені ойластырыңыз:
- Анық переключатель: трафик қайда баратынын өзгертетін бір параметр.
- Жылдам кері қайтару: алдын ала тексерілген команда немесе батырма, қолмен түзетусіз.
- Тоқтату шегі: раскатты тоқтататын қарапайым ереже (мысалы, қателердің өсуі немесе кликтердің азаюы).
Параллель индекстер: векторлық іздеуді қалай миграциялау керек
Векторлық іздеуді жаңартудың ең қауіпсіз жолы — екі индексті қатар ұстау. Ескі индекс пайдаланушыларға қызмет көрсетуді жалғастырады, ал жаңа фон режимінде жаңа эмбеддингтермен құрылады. Осылай іздеуді «ұру» тәуекелін азайтуға болады.
Идея қарапайым: трафик v1 индексіне бара жатқанда сіз v2 құрып, оның деректер қамтуын теңестіресіз. Ауыстыру тек v2 сәйкес немесе жақсырақ сапа көрсетерде жасалады.
Dual write: жаңа деректерді жоғалтпау үшін
Жаңа индекс құрастырылып жатқанда деректер де өзгереді: құжаттар қосылады, карточкалар жаңартылады, жаңа тикеттер пайда болады. v2 артта қалмас үшін dual write қосады: әр жаңа немесе өзгерген объект жаңа эмбеддингпен және екі индекске бірден жазылады.
Мұнда жазу келісімі маңызды: бірдей id-лер, бірдей жою ережелері және бірдей мәтінді нормализациялау. Бұл салыстыруды айтарлықтай жеңілдетеді.
Backfill: тарихты толықтыру және прогресті бақылау
Dual write қосқаннан кейін тарихты v2-ге қосасыз (backfill): барлық ескі құжаттар жаңа модельмен қайта есептеліп, жаңа индексқа түседі. Процент аяқталуын ғана емес, саңылауларды да қадағалаңыз.
Практикалық минимум бақылауға:
- өңделген объектілер және қалған хвост есептегіші
- қателер үлесі түрлері бойынша (таймауттар, бос мәтін, кодировканың бұзылуы)
- таңдамалы тексеріс: топ‑құжаттардың id-лері v2-де бар ма
- индексация уақыты және толықтыру жылдамдығы
Нұсқаларды шатастырмас үшін атау ережелерін белгілеңіз: мысалы, search-index-v1, search-index-v2 және жинақтау уақыты немесе релиз нөмірі метадеректерде. Сол кезде ауыстыру мен кері қайтарып алу нақтыланады.
Миграцияның қадамы: дайындықтан ауыстыруға дейін
Алдын ала ескі мен жаңа нұсқаны бөліп, табыс критерийлерін келісіп алған маңызды. Сонда ауыстыру басқарылатын операция болады.
1) Жаңа нұсқаны бөлек контур ретінде дайындаңыз
Модель, алдын ала өңдеу пайплайны және вектор форматы бір нұсқаға байлануы тиіс. Бұл модель жаңартылып, токенизация немесе мәтінді нормализациялау ескі қалып қалған жағдайда сапа «жылжып» кетпеуін қамтамасыз етеді.
Алдын ала қандай деректерді қайта есептейтініңізді анықтаңыз (барлық құжаттар немесе тек белсенділері) және объектілерді қалай маркировкалайтыныңызды белгілеңіз: document_id, эмбеддинг нұсқасы, қайта есептелу уақыты.
2) Жаңа индексті параллель құрып, консистенцияны тексеріңіз
Жаңа индекс продқа тимей жанында құрылсын. Алдымен фонда эмбеддингтерді қайта есептеп, индекс жинап, негізгі тексерістерді жүргізіңіз: құжат саны, бос/бұзылған векторлар үлесі, метадеректер сәйкестігі.
Практикалық тест: 50–100 типтік сұрауды алып, жаңа индекс қажетті құжаттарды табатынына көз жеткізіңіз.
Ыңғайлы жұмыс схемасы 4 қадамнан тұрады:
- Пайплайн нұсқасын бекіту және тест сұраулар жинағы.
- Эмбеддингтерді қайта есептеп, жаңа индексті бөлек ортада құру.
- Сұрауларды ескі және жаңа контурларға параллель жіберу (shadow) немесе шағын трафикте (canary).
- Негізгі трафикті ауыстыру, бірақ кері қайтаруға уақыт пен механизм сақтау.
3) Shadow/canary іске қосып, сигналдарды жинаңыз
Shadow пайдаланушыларға жауап өзгертпей, «арқаңда» сапаны тексеруге ыңғайлы. Canary нақты жүріс‑тұрыс: кликтер, қажетті құжатқа жету уақыты, қайта сұрау саны сияқты сигналдар көрсетеді.
4) Ауыстыру және кері қайтару уақыты
Трафикті тез ауыстырыңыз, бірақ ескі индексті бірден жоймаңыз. Қарапайым «рубильник» болсын: конфигурациялық флаг, нұсқаға қарай роутинг немесе бөлек endpoint. Бұл алаңдаушылықты азайтады: егер сирек, бірақ маңызды кейс шығысса, кері қайтару біраз минутта орындалады.
Сапаны бақылау: миграциядан бұрын және кейін не өлшейміз
Миграциялар жиі бірден емес, жай ғана сапа тыраңқылығымен байқалады. Сондықтан базаны ауыстырмас бұрын алып, кейін салыстыру маңызды.
Алдымен шынайы қолданушы тапсырмаларын сипаттайтын тест сұраулар жинағын жасаңыз. «Әдемі» мысалдар емес, адамдар шын енгізетін нәрсе: қысқа фразалар, қателер, орыс‑қазақ‑ағылшын араласып кеткен сұрақтар, ішкі аттар. Практикада логтардан 50–200 сұрау жинап, 10–20 «ауру» кейсті қолмен қосу ұсынылады.
Офлайн тексеріс: қолданушыларсыз сапа
Офлайн тесттер модель мен индекстің өзгерісін дәл анықтауға көмектеседі. Әр тест сұрауға күтілетін құжаттарды бекітіп, ескі мен жаңа нұсқаларды салыстырыңыз.
Көбінесе өлшенетіндер:
- Қажетті құжаттың top‑1 немесе top‑5 ішінде табылу үлесі (recall@k).
- Дұрыс нәтиженің орташа позициясы.
- Тұрақтылық: бірдей сұрауда жауаптардың қаншалықты секіруі.
- Бос жауаптар мен топта релевант емес жауаптардың үлесі.
- Іздеудің уақыты және алғашқы нәтижеге дейінгі уақыт.
20–30 сұрауды қолмен қарап шығу пайдалы: адамдар метрикалар кейде жіберіп алатын мәнді айырмашылықтарды тез байқайды.
Онлайн сигналдар: қолданушылар не көреді
Жаңа нұсқа қосылғаннан кейін қолданушы әрекеттерін бақылаңыз, жай ғана «дұрыстық» емес. Адамдарға табу қиындаса, бұл кликтер мен уақытқа әсер етеді.
Көзіңізде болу керек көрсеткіштер: нәтижелерге кликтер, алғашқы кликке дейінгі уақыт, құжат ашуға кететін уақыт, переформулировкалар саны, кликтерсіз сұраулардың үлесі, іздеу бойынша қолдауға арыздардың өсуі.
Алдын ала шектеулер қойыңыз. Мысалы: егер recall@5 2–3 пайыздан артық төмендесе, кликтер азайса немесе кликтерсіз сұраулар 5% өссе — раскатты тоқтатыңыз. Осындай ережелер «айтарлықтай нашарлады» деген дау‑дамайды жояды.
Наблюдаемость: деградацияны өткізіп алмайтын метрикалар мен алертер
Ең үлкен тәуекел — жүйенің толық құлауы емес, тыныш деградация: жауаптар нашарлап, адамдар қолмен айналып өтеді. Бақылауды ауыстырудан бұрын дайындау керек.
Не өлшеу керек: темірден бастап қолданушы тәртібіне дейін
Ескі мен жаңа нұсқаны қатар салыстыратындай панельдер жасаңыз: бірдей терезелер, бірдей метрикалар, нұсқа мен индекс бойынша бөлек метка.
Минималды жинақ:
- Техникалық метрикалар: p95 кідіріс, 5xx пен таймаут үлесі, CPU/GPU жүктемесі, жад, өңдеу кезектері.
- Векторлық іздеу метрикалары: іздеу және сұрауды дайындау уақыты, индекс көлемі және өсу темпі, бос нәтижелер пайызы, өте төмен скорлы сұраулар үлесі.
- Ағын бойынша сапа сигналдары: ұсыныстардағы CTR, переформулировкалар үлесі, орташа кликке дейінгі әрекет саны, сәтсіз сессиялар үлесі.
- Бизнес сигналдары: қолдау сұраулары, шағымдар, қолмен жасалатын операциялардың көбеюі.
Базалық норманы келісіңіз: бұл сіздің жүктемеңіз үшін қалыпты мәндер. Олай болмаса, алертер не үнсіз қалады, не үндемей шулы болады.
Алертер: не дереу дежурлықты оятуы керек
Жақсы алерт «қазір дежурлықты ояту керек пе?» деген сұраққа жауап береді. Оларды қарапайым және қолданушыға әсерімен байлаңыз.
Жиі пайдалы ережелер:
- p95 кідіріс blue‑ға қарағанда X% өсті (соңғы 10–15 минут бойынша).
- Бос нәтижелер пайызы шекті асып, Y минут бойы тұрақты.
- 5xx немесе таймауттар шекті өтті, ретрайлдар өсті.
- Жадтың күрт өсуі немесе индекс түйіндерінде бос орынның тез азаюы.
- «Бизнес‑стоп»: қолдау сұрауларының немесе интерфейс әрекеттерінің күрт өсуі.
Алерт хабарламасына контекст қосыңыз: модель нұсқасы, индекс нұсқасы, регион, трафик пайызы, соңғы өзгерістер (ауысу, прогрев, ребилд).
Мысал: green 20% трафикке қосылғаннан кейін p95 өзгермеген, бірақ бос нәтижелер 1%-дан 6%-ға дейін өсті. Бұл эмбеддинг пайплайнындағы нормализация, тіл, энкодер қателері немесе фильтрлер мәселенің белгілері болуы мүмкін. Мұндай алерт трафиктің өсуін тоқтатып, қолданушыларды blue-ға қайтару немесе бір бөлігін ескі индекске бағыттау әрекеттеріне әкелуі тиіс.
Наблюдаемость тек қана жауап беретін болса ғана жұмыс істейді. Миграция кезінде метрикалардың иесін белгілеңіз және қысқа әрекет жоспарын дайындаңыз: ең бірінші не тексереміз және деградация расталса кім кері қайтарады.
Эмбеддингтерді жаңартудағы жиі қателіктер және тұзақтар
Көбінесе қателіктер — ауысудан кейін ғана көрінетін кішкентай сәйкессіздіктер. Қызметті тоқтатпайтын мақсат болғанда мұндай қателіктер қызметкерлерге тигізеді: іздеу дұрыс файлдарын таппайды, ұсыныстар мәнсіз болады, қолдау жүктемесі артады.
Іздеуді бұзатын техникалық сәйкессіздіктер
Бірінші тұзақ — вектор размерінің үйлесімсіздігі. Мысалы, модель 768‑ден 1024‑ке өткен болса, индекс немесе клиент код ескі форматты күте береді. Ең жақсы жағдайда қате шығады, ең жаманы — үнсіз түрде мусор қайтара бастайды.
Екінші — қашықтық метрикасы мен нормализацияның сәйкес келмеуі. Бұрын cosine+нормализация қолданылған болса, ал енді dot product немесе L2 қолданылса, сапа кенет нашарлауы мүмкін. Әртүрлі векторлық базалар cosine-ды әр түрлі түсіндіруі мүмкін: кейде бұл бөлек метрика, кейде dot product + нормализацияны білдіреді.
Үшінші — әртүрлі нұсқа эмбеддингтерін бір индексқа араластыру. Бұл «ыңғайлы» көрінсе де, ближайшие соседи кездейсоқ болады. Сол сияқты, құжаттардың бір бөлігі жаңа модельмен, бір бөлігі ескі модельмен индекстелсе, коллекцияда бәрі араласқаннан кейін нәтиже жаман болады.
Жоспарлау және бақылау қателері
Переиндексация уақытын жеңілдетпеу көбінесе мәселелерге апарады. Переиндексация CPU, диск пен желіні жүктейді, пайплайнде кезектер тудырады. Егер параллель сұраулар болса, таймауттар мен жылдамдықтың төмендеуі секілді қосалқы проблемалар пайда болады.
Кері қайтару жоспары көбіне формальді болады: «қайтарамыз, егер болды». Қызмет көрсету шарттарын нақты стоп‑сигналдар мен әрекеттермен белгілеңіз. Мысалы:
- сапа шектен төмен (кликтер, қолмен бағалау топ‑5)
- іздеудің p95 2 есе өсіп, 15 минут ұсталады
- бос жауаптар немесе қателер X%-дан асты
- база/кезек жүктемесі қауіпті шектен өсті
Тағы бір тұзақ — клиенттерді тексермеу: кейбір клиенттер кэш ұстап қалады немесе ұзақ байланыс ұстайды. Ауыстырудан кейін кейбір қолданушылар әлі ескі нұсқамен жұмыс істей береді және аралас тәртіп диагностика қиындатады.
Практикалық мысал: ішкі нұсқаулар бойынша іздеуді жаңартасыз. Жаңа модель ұзын регламенттерді жақсы табады, бірақ қысқа атаулар мен артикулдарды нашар табады. Қызметкерлер сұрауларды көшіруді, көп бетті ашуды және әріптестерге жүгінуді бастауы мүмкін — бұл «орташа скордан» бұрын байқалады.
Осы тұзақтарды болдырмау үшін үйлесімділікті алдын ала бекітіңіз (размер, метрика, нормализация), бір индекс ішінде нұсқаларды араластырмаңыз, переиндексацияны бөлек жүктеме ретінде жоспарлаңыз және кері қайтаруды тез орындауға болатындай етіп дайындаңыз.
Ауыстыру алдындағы қысқа чеклист
Финалдық ауыстырудан бұрын модель ғана емес, оны қоршайтын барлығын бақылап тұрғаныңызға көз жеткізіңіз. Көпшілік сәтсіздіктер кішкентай нәрселерден: басқа токенизатор, индекс басқа параметрлермен жиналды, лимиттер дайын емес, тез кері қайтару жоқ.
Ауыстыруға дейін дайын болу керек нәрселер
Нұсқалар бекітілсін және қатысушыларға түсінікті болсын. Релиз карточкасында көрсетіңіз: модель нұсқасы, токенизатор нұсқасы, мәтінді алдын ала өңдеу схемасы және индекс нұсқасы. Эмбеддинг параметрлері өзгерсе (размер, нормализация, тіл) бұл да жазылсын.
Жаңа индекс толық құрастырылып, бақылау деректерінде тексерілген болсын. Бұл тек «индекс қателіксіз жиналды» ғана емес — алдын ала таңдалған сұрауларға жауаптар күтілгендей болуы керек. 50–200 «эталон» сұраулар жиыны өте пайдалы.
Қауіпсіз іске қосу режимі дайын болуы керек: canary немесе shadow. Canary‑де жаңа контуртың бір бөлігі трафик алады, shadow‑та жаңа контур сұраулардың көшірмесін алады. Екі жағдайда да 5 минут ішінде мәселені көруге мүмкіндік беретін дашборд болуы тиіс.
Кері қайтару үшін міндетті талаптар
Кері қайтару ауыстыру сияқты қарапайым болу керек. Егер кері қайтару бірнеше сервиске қолмен өзгеріс талап етсе, бұл бөлек күрделі операцияға айналады.
- Трафик переключатель дайын (деплойсыз тез қайтару мүмкіндігі)
- Ескі индекс сақталған және қолжетімді (жойылмаған)
- Жаңа контуртың жүктемесіне шектеулер белгіленген (QPS, таймауттар, кезектер өлшемі)
- Кері қайтару критерийлері жазылған (қателер өсуі, сапа төмендеуі, кідіріс ұзартуы)
Қызметкерлер сценарийлеріне тексеріс
Соңғы қадам — нақты жұмыс сценарийлерін өту. Мысалы: қызметкер өткен жылғы келісімді атау бойынша іздейді, инженер нақты модель бойынша нұсқаулық іздейді, есепші мәтін фразасы бойынша хат үлгісін табады. Маңыздысы — жалпы іздеуді емес, адамдар күнделікті жасайтын тізбекті тексеру.
Егер сіз 24/7 сенімділік талап ететін ұйымға жұмыс істесеңіз (мемлекеттік органдар, медицина, қаржы), бұл чеклист міндетті стандарт ретінде енгізген дұрыс.
Мысал сценарий және келесі қадамдар
Сценарий: корпоративтік құжаттар мен өтініштер бойынша іздеу
Ішкі портал бар, қызметкерлер саясаттар, келісімдер, нұсқаулықтар және service desk сұраулары бойынша іздейді. Іздеу эмбеддингтерге негізделген: қолданушы сұрақ енгізеді, жүйе мәні бойынша ұқсас үзінділерді тауып көрсетеді. Команда жаңа модельге өтуді қалайды, өйткені ағымдағы модель «сброс пароля» немесе «отчет по закупкам» сияқты қысқа сұрауларды нашар түсінеді.
Міндет — жаңартуды қызмет тоқтамай өткізу және типтік сұрауларда сапаның күрт нашарламауын қамтамасыз ету.
Қауіпсіз жаңартудың практикалық жолы
Параллель индекс + shadow, содан кейін canary. Ескі және жаңа контурлар қатар жұмыс жасап, нақты сұраулар бойынша салыстырылады, қолданушыларға әсер етпей тексеріледі.
Типтік жоспар:
- Жаңа индексті ескі жақта параллель көтеріп, құжаттарды фонда қайта есептеу, модель мен баптауларды нұсқалау.
- Shadow қосу: пайдаланушылар ескі индекс арқылы алынып, жаңа контур сұраулардың көшірмесін алып нәтижелер мен метрикаларды журналға жазады.
- 20–50 типтік сұрауды таңдап, «эталон» белгілеңіз: жақсы жауап қандай және қай құжаттар топта болуы тиіс.
- Canary іске қосыңыз: 1–5% трафик жаңа индекске, қалғаны ескіге.
- Метрикалар тұрақты болса, трафикті көбейтіп, негізгі трафикті ауыстырыңыз, бірақ кері қайтару мүмкіндігін сақтаңыз.
Әр қадам арасында тексеру үшін кідіріс жасаңыз. Миграция жылдамдығы көбіне сапаны бақылаудан кейін екінші орында тұрады.
Ерте стадияда мәселені қалай ұстау
Көп жағдайда жалпы метрикалар қалыпты көрінгенімен, кейбір маңызды сценарийлерде релеванттық төмендеп қалады. Мысалы, жаңа индекс әдемі құжаттарды жоғарылатса да, қолдау сұрақтарына нақты жауаптарды нашар тауып беруі мүмкін.
Ең айқын белгі — типтік сұраулар бойынша сапаның төмендеуі: релевант емес нәтижелерге көбірек кликтер, переформулировкалардың көбеюі, бір-екі әрекетте қажетті нәтижені табу үлесінің төмендеуі. Сондықтан shadow журналдары мен эталондық сұрауларды қолмен өткізу релизді сақтап қалуға көмектеседі.
Келесі қадамдар
Осындай жаңартуларды бір реттік күреске айналдырмау үшін процесті бекітіңіз:
- Міндетті нұсқалар енгізіңіз: модель, эмбеддинг параметрлері, индекс схемасы және эталондық сұраулар жинағы.
- Переиндексация мен переключение автоматтандырсын, сонда кері қайтару минуттар алады, сағаттар емес.
- Canary үшін стоп‑шарттарды келісіп алыңыз (қандай метрикалар және қаншаға нашарласа тоқтату керек).
- Параллель индекстер мен қайта есепке арналған ресурстарды алдын ала жоспарлаңыз.
Егер инфрақұрылым шектеулері (екі контурға арналған ресурстар, сенімді сақтау, мониторинг, 24/7 қолдау) мүмкіндік бермесе, жүйелік интегратор шақыру тиімді болуы мүмкін. Қазақстанда бұл салада, соның ішінде, GSE.kz (gse.kz) жұмыс істейді: олар жергілікті өндірілген S200 серверлерін жеткізу және корпоративтік ИТ‑жүйелер инфрақұрылымын құру бойынша тәжірибеге ие.
FAQ
Неліктен модельді жай жаңартып, ескі индексті қалдыру болмайды?
Жаңа векторларды ескі индекспен салыстырмау үшін. Модель өзгерген кезде кеңістік «геометриясы» өзгереді: ұқсас құжаттар басқа орынға қонып, ескі индекс оларды дұрыс ранжирлей алмайды. Нәтижесінде сервис ресми түрде жұмыс істесе де релеванттық төмендейді.
Эмбеддингтерді жаңартқанда не нәрсені нұсқалау керек?
Тек модельдің салмақтарын ғана емес, үйлесімділікке әсер ететін барлық нәрсені нұсқалау керек: токенизатор, вектордың размері, мәліметтер типі, нормализация және іздеу метрикасы. Бір «нұсқа карточкасы» ұстау ыңғайлы — сол арқылы кез келген вектор мен индекс бірдей конфигурацияға байланады.
Қай үйлесімсіздіктер жиі миграцияны бұзады?
Ең жиі кездесетін және ауыр ақау — вектор өлшемінің сәйкес еместігі: индекс жаңа өлшемді қабылдамайды немесе дұрыс жұмыс істемейді. Екінші орында — метрика мен нормализацияның сәйкессіздігі (мысалы, бұрын cosine+нормализация қолданылған, ал енді басқаша), сол себепті сапа кенет өзгеруі мүмкін.
Практикада blue-green пен canary арасындағы айырмашылық неде?
Blue-green — толық екі бөлек контур, және трафик бір параметр арқылы ауысады, сондықтан кері қайтару жылдам. Canary — жаңа нұсқаны біртіндеп шағын трафик бөлігіне қосу, қателер ерте көрініп, барлық қолданушыларға әсер етпейді.
Shadow режимі не үшін қажет және ол қашан canary-дан жақсы?
Shadow жаңа нұсқаны нақты сұраулар арқылы «көлеңкеде» тексереді, бірақ пайдаланушыларға жауаптарды ескі нұсқа береді. Бұл тірі деректерде пайплайн қателерін анықтап, қолданушылар тәжірибесіне әсер етпей сапаны бағалауға ыңғайлы.
Параллель индекстер арқылы векторлық іздеуді қалай тоқтатпай жаңартуға болады?
Екі индексті қатар ұстаңыз: ескі индекс пайдаланушыларға қызмет етіп тұрсын, ал жаңа индекс жаңа эмбеддингтермен фонда құрылсын. Қамту мен сапа тексерілгеннен кейін ғана ауысыңыз; ескі индексті бірден жоймаңыз, сонда кері қайтару минуттар ішінде орындалады.
Dual write деген не және неге ол болмаса жаңа индекс артта қалады?
Себебі деректер өзгеріп отырады: жаңа немесе жаңартылған объектілер жаңа индекске де жазылмаса, v2 артта қалады. Dual write дегеніміз — жаңа/өзгертілген құжаттар бірден екі индекске де эмбеддингпен жазылады, бірдей id және жою ережелері сақталады, әйтпесе салыстыру әділ болмайды.
Трафикті ауыстырмас бұрын қандай минималды сапа тексерістерін жасау керек?
Алдымен логтардан алынған 50–200 нақты сұрауды жинап, бірнеше «проблемалы» мысал қосыңыз: қысқа фразалар, қателіктер, тілдердің араласып кеткені. Қажетті құжаттардың топ‑1 немесе топ‑5 ішінде болуын, бос жауаптардың пайда болуын және жауап уақытының нашарлауын салыстырыңыз.
Canary үшін қандай метрикалар мен шектерді стоп-сигнал ретінде қолдану керек?
Алдын ала анықталған қарапайым стоп‑ережелер орнатыңыз, олар қолданушыларға байланысты: бос нәтижелердің өсімі, қателер мен таймауттардың өсуі, кідірістің айтарлықтай нашарлауы, кликтердің төмендеуі немесе переформулировкалардың өсуі. Порог іске қосылса, раскат тоқтатылады және трафик бір батырмамен ескі контурға қайтарылады.
Сервисті тоқтатпай эмбеддингтерді жаңартқанда қандай қателер жиі кездеседі?
Эмбеддингтердің әр түрлі нұсқаларын бір коллекцияда араластырудан және метрика/нормализацияны жол үстінде өзгертуден сақтаныңыз. Одан бөлек, формалды кері қайтару жоспары жеткіліксіз — егер кері қайту бірнеше сервиске қолмен түзету талап етсе, стресстік жағдайда ол ұзарып кетеді.