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

Змена модэляў RAG Embedding без перыіндэксавання: як функцыонуе rebasis

Зменіце модэлі імбеддынгу RAG без перэіндэксавання: rebasis перакладае новыя вектары запыткаў у стары індэкс за дапамогою невялікага адаптэра і паведамляе, калі вікорыстоўванне мостаў не будзе эфектыва.

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

Крыніцы: Changing the Embedding Model in a RAG System Without Deleting the Index: Why and How I Built rebasis

Апгрэйд модэля умяшчэння, які выкорыстоўваецца ў сістэме генеравання з падтрымкай пошуку, здаецца звычайным задачам, пакуль існуючы вектарны індэкс не стане пераканаючым працоўнікам. Адкрытыя інструменты на Python пад назвай rebasis спрамованы на рашэнне самэй гэтай проблемы. Яны трэнуюць невялікі адаптар, які перакладае вектары запітаў з новага модэля умяшчэння у прастор, які ужо розумее стары індэкс. Такім чынам можна адкласці цэлы працэс перындэксавання або ж адбыць яго паступова і пад наглядам.

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

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

Чаму модэль імбеддзінга застаецца незменным

Стварэнне сістэмы RAG вымагае не толькі вікорыстання мадэлі мовы і базы дадзейнаў вектараў, але і прыменення сістэмы коордынатаў таго мадэлі эмбедынгу, якая была актуальная на дзень індэксавання. Дакументы, незалежна ад таго, чы то тыясячы, чы мільйоны, дзельнуюцца на часткі, кодуюцца і заносяцца ў індэкс. Раней чы пазней з’являецца шырэй, лепшы чы болей прыдатны мадэль эмбедынгу, і тады пачынаюцься проблемы: вектар запіта з новай мадэлі не мае значэння для індэкса, створанага за дапамою старай мадэлі.

„Проста перындэксаваць усё“ — такая стандартная рада. Тэхнічна яна правільная, але часта даскладная з пункту гляду віткоў. Большая персональная база знанняў, внутршняя сэтка дакументаў, база коду чы давга трываючая памяць агента павінны зноў быць дзельнуюцыя на часткі і занова імбеддаваныя, што вымагае часу, вычысленняў, бюджэту API і неявляецца без рызыкаў у эксплуатацыі. Таму багатыя сістэмы застаюцца на застарэлай модэлі ўжо даволі дзяўна пасля таго, як існуе крашчая модэль.

rebasis быў створаны, каб разбіць гэты «замак» прычаепленасці. Яго заявленая мета — дазволіць местнай сістэме RAG зменіць свой мадэль эмбедынга без выдалення векторнага індэкса, які ў яе ужо ўсё ў тым.

Трансфармаваць запіт, а не індэкс

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

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

Практычныя наследкі вельмі значныя: новая модэлі можа негайна адпавядаць на запіты, а вектары дакументаў у індэксе застаюцца некінуцымі. Інтэграцыя ў прыкладнік робіцца якомога простэйшай. Спачатку — імпорт:

from rebasis import Bridge

Потым зачынаецца адаптар і ставіцца ў шлях запіту:

bridge = Bridge.load("adapters/minilm-to-bge.rbs")query_vector = new_model.encode(["how do I deploy to production?"])
query_vector = bridge.to_index_space(query_vector)
results = collection.query(query_embeddings=query_vector, n_results=10)

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

Матэматыка, якая стоіць за стандартным адаптаром

Называмы старую мадэль уявлення f_old, а новую — f_new, і берамы n дакументаў, закодаваных якімі лявае. Гэта дае два матрыцы дадзейнаў, по аднай у кожнай прасторы. Мэтая — выучыць функцыю, якая перакладае новы прастор у стары, і ў сваёй загальнай форме цяль трэнавання — мінімізаваць расстоянне за нормай Фробеніуса межаў перакладзеных новых вектараў і старых.

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

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

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

Выліваецца адна важная з точкі зору працэйных аспекта характэрыстыка: вартась трэніравання залежыць ад колькісці падходзяшчых пар, а не ад розмеру корпусу даных. Адаптар можа быць створаны на аднойчына з калькі тысяч рэпрэзентатыўных пар, нават калі індэкс мае сотні тысяў запісаў. Трансфармацыя цэлай матрыцы коштае прыблізна столькі ж, сколькі добутак двух высакаў за кожны запіт, і для ўтрымання параметраў таксама трэба столькі ж памяці. Факторызацыя па рангу-r зменшае вартась запіта да прыблізна r разоў больш за суму высакаў. Як конкрэтны прыклад, матрыца размерам 768 на 768 з тыпам дадзеных float32 займае або-і 2,36 МБ, што ўсё ж мінімальна па абсягу паўстаўшы ў пораўнанні з індэксам, які ёй дапамагае не перабудаваць.

Чаму адна метода трансфармацыі недастатня

Связь між двума просторамі вбудоввання частае падае на роўнень ротацыі, але не для кожнай пары модэляў. Таму rebasis не прыпускае, што адны алгорытм можа працаваць у всіх случаях. Ён выйшае з Orthogonal Procrustes — цэглавы спосаб знаходжэння найкрашчага выравнявання двух парадоў пунктав. Аднак рэальныя прасторы можу выказваць сярэднія зсувы, разлікі у масштабе па кожнай вымяроўцы і нелінейныя складовы.

За дапамогою параметра --method auto інструмент прыладжвае калькуляцыі калякіхось кандыдатаў да тых сабе дадзеных і з тым самым прадзеяннем, а пасля іх пораўнюе:

  • Procrustes у цэнтрыраваных і класычных варыянтах.
  • Лінейны карэтк, рэгулярызаваны рыгамі.
  • Афінны карэтк нізкага рангу.
  • Procrustes з масштабамі па кожнай вымяроўцы.
  • Калі ёсць PyTorch, маленькі MLP з рэзыдуальнымі лейярамі.

CSLS не прытлумляецца на картаўванні; ён таксама выступае як кандыдат. Прычына ў практычнасці. У высака-вымірных прасторах ён можа спакойна разв’язаць проблему „центральнасці“ для слабых адаптароў, але можа нашкодзіць альянсу, які вялікай меры ужо быў моцным. Мета — не дужа длігі спіс назв алгорытмаў, а пераможца, выбраны на адзінку на дадзеныях, якія не былі выкарыстоўваны пад час трэніравання. Калі калькі кандыдатацоў знаходзяцца ў аднай і той жа рэгіёне неяснасці, інструмент вяршыць той, у якога меньш параметраў і ніжэйшы кост.

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

Модэлі асіметрычнага умяшчэння таксама адначасова розглядаюцца дэтальна. Напрыклад, у сяброўцы E5 прыметкі query: і passage: означаюць, што той самы тэкст кодуецца разнае залежна ад яго ролі, а іншыя модэлі для таго ж цялі выкарыстоўваюць інструкцыі для запітаў або дакументаў. Якшто прыстосаваць адаптар да пар, кодаваных дакументамі, і застосаваць яго да вектараў, кодаваных запітамі, то будзе створана класычная суперасоблівасць між процэсамі навчання і выкарыстоўвання. З гэтай прычыны профіль кодавання ў rebasis фіксуе гораздзе больш параметраў, чым толькі назву модэлі: выразнасць, нормалізацыю, працэсы агрэгатавання, прыметкі запітаў і дакументаў, а таксама будзь-якія параметры тыпу Matryoshka. Адаптар, створаны пад неправым профілем, адхіляецца пад час завантажэння, а не проста дае паслабыя рэзультаты.

Як гэта адносіцца да пакульшых даследжэнняў

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

rebasis рашыраецца на іншую сітуацыю. Індэкс ужэ існуе, старыя і новыя мадэлі былі натрэнаваны окалічна, і ніхто не можа пацірацца ні ў працэсе натрэнавання. Чырвоныя гэта робіць пост-хок шарам сумеснасці. Ён выкарыстоўвае метод Orthogonal Procrustes, трансфармацыі нізкага рангу і новейшыя методы Drift-Adapter, а яго сопрацоўнікам ёст тэхнічная рэалізацыя: адыграўкі гэтых ідэй у адні локальны інструмент, які таксама дадае можлівасці для зьвязку дадзеных, выбору адаптара, тэорыі рашэння, абстракцый над сховішчамі, безпечнай міграціі і рабочага працэсу для стварэння воспамінаемых аўдытав.

CSLS выйшаў з літаратуры пра супрацоўку межазначных эмбеддынгаў. Ён урахоўвае густоту локальнага суседства запіту і цэльвыя даны, а таксуючы негатыўна вектары-„цэнтры“, якія стаюць найбліжэйшымі суседамі занадта большай колькасці запітоў. У простыях словах, ён оцінюе пару як два разы косінусава схожасць за вырахунаком з падыходам да густоты для кожнай з сторон. Эксперыменты з рэальным корпусам дадзеных, адбылыяся ў рамках праекту, паказалі, што ён дапамагае слабым супарадненням, а іноды шкодзіць сільным, таму яго мераюць, а не застаўляюць слепа.

Інструмент, які іноды радзіць не вжываць яго

На ранніх этапах праекту пытанне „Чы можна пабудаваць мост між гэтымі двума прасторамі?“ апынулася неправільным, калі ставіць яго сама по сабе. Больш значэння маюць тры пытанні:

  1. Чы новая мадэль эмбеддынга дэйсна крашчая для гэтых конкрэтных дадзеных?
  2. Якую частку якосцю цэлага перындэксавання захоўвае адаптар?
  3. Чы не лепша метода супрацоўкі з рознымі мадэлямі, чым проста застаўка на ныяму модэлі?

Самэ таму як ключоўы каманды прыступаецца да probe, а не да fit. Ўн аб’еднвае выбір выборак, стварэнне эмбедынгаў, падбір кандыдатаў, вычысленне метрык і заканчоўны выбор у адну процэсуру зьмерэння, і ніколі не запісвае данніяў у існуючы індэкс.

Однам з цэнтральных показнікаў ёсьць ARR, Adapted Recall Retention — якосць адаптаванага пошуку як частка таго, што дала б цэлыя перындэксаванне з новым модэлі. Высокі показнік ARR сам по сабе недастатні. Калі новы модэль ледзь павышае эфектыўнасць застаўнага, адаптар мае малая практычная цэннасць. Калі новы модэль ўосаблівае вялікі прыступ уперад, але адаптар не можа перанесці гэты прырост, тады цэлыя перындэксаванне можа быць правым рашэннем.

Таму рашынак залежыць ад паказніка равнавагі:

bridge_advantage = ARR × upgrade_gain

Калі напісаць гэта, логіка стане ясней. Нехай Ra — гэта Recall@k для адаптаванага сістэмы, Rn — для сістэмы, якая цэлыя перындэксавана за дапамою новага модэлю, а Ro — для ныяшней старой сістэмы. Тады ARR — гэта падышкі адаптаванай сістэмы па адносу да старой, дэленыя на падышкі цэлага перындэксавання па адносу да старой, а падышкі апгрэйда — гэта співвялор Rn да Ro. Калі іх павялічыць, чыннікі Rn анулююцца, і застаецца Ra дэленыя на Ro: адаптаваная сістэма парабялічваецца безпосерэдна з рэальным альтэрнатыўным варыянтом карыстальніка — ніч не робіць.

Кожны фактар адпавяда на простае запытанне. ARR запытаецца, сколькі часткі ідэальнага перындэксавання было захавана. Параметр Upgrade gain запытаецца, насколькі лепшы новы модэль. Іх сума паказвае, чы робіць перэхід на новы модэль дапамагае працэваць эфектывней. Значэнне вышэй за 1 означае, што перэхід на новы модэль лепшы, чым застацца на нынешнім; меней за 1 — ні. Калі рэзультат знаходзіцца занадта блізу гранічнага значэння, інструмент не можа даць абсалютной вяроўныні. У такім случае рэзультат атрыбутуецца як межовы, і рэкамендуецца выкарыстоўваць большыя вялічыны дадзеных.

За наявнасці справжньага журналу запытанняў плюс ID дакументаў, атрыбутаваных людзкім суджэннем, probe можа вымерыць рэальную перадачу новага модэля на гэтым корпусе дадзеных. Без такога журналу можна выкарыстоўваць дакументы, якія не былі включаны ў аналіз, як запытанні, а сінтэтычныя запытанні, заснованыя на ключовых словах, даюць апрыксіматыўную оцэнку. Кожны рэзультат паказвае ранг сваіх доказаў, таму выходны дадзенныя маюць як бал, так і падставы, на якіх ён быў атрыбутаваны.

Набор показначыкаў, а не адна цыфра

Recall@k ёсць галоўныяй праметкай для прыняцця рашэння, але якасць выкарыстоўвання дадзеных не выражаецца за дапамою аднай-едзінай цыфры. Адна експерыментнае probe запуск дае калькольнае колькасць взаімадопамагаючых сігналаў:

  • MRR@k паказвае, на якой высоце з’яўляецца першы рэлевантны рэзультат.
  • nDCG@k адзначае як ступень рэлевантнасці, так і пазіцыю ў рангаванні.
  • Top-k overlap адкрывае, якую частку артыкула, знайдзенага сістэмай, застаецца ў адаптаванай групе рэзультатаў.
  • Spearman correlation аналізуе, насколькі паслабляецца внутршняе рангаванне спільных рэзультатаў.
  • Kolmogorov-Smirnov distance мерыць, насколькі калібраванне вплывае на распадленне балаваць рэлевантнасці.
  • Tail ARR выклікае практычную якасць адзелённых кластэраў у супараванні з глобальным сярэднім, таму дэфекты, якія сільней паўтараюцца ў дзеяных рэгіонах, стаюць віднымі.
  • Этыя разлікі маюць значэнне. Два сістэмы можа вярнуць тыя ж дакументы, але ў разным парадку, чаго не можа пазначыць показнік recall, а можа — nDCG. Аднойчы, рангаванне можа здавацца нормальным, хоча форма распаду балав не змініцца настаткі, каб не паспрацаваў фільтр з жорсткім лімітом. Калі рэзультаты, апрантаваныя на аднойчы recall і nDCG, не збігаюцца, рэжым rebasis адзвяртае ўвагу на гэты незбіг і не заменяе адну метрыку іншай без паведамлення.

    Нэпэўненасць павінна быць часткай рэзультата

    ARR, які вылічваецца на праўілку, являе сабою оценку на адзін момент, таму прылад выкарыстоўвае інтэрвал паверыльнасці 95% на аднойчыну з 2 000 перэпрацаваннях дадзеных па методу Эфрона. На рэвэлюцыі T1 ARR — гэта спаведамальнасць двух сярэг. Аднак якшо б часткавік і знаменавік перэпрацавляліся незалежна, ўсунулася бы ўсё статыстычнае залежнасць межы, таму пад час методу парнай спаведамальнасці для якога-небудзь з іх вжываюцца тыя ж індэксы запыткаў. Грані інтэрвалу — гэта 2,5-й і 97,5-й перцэнтылі атрыбутнай распады.

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

    У праекце зазначаецца, што метракты безпасовсюды вплылі на выбір направлення. За публікуемым аналізам, там былі параболены стары мадэль, простая замена модэля, адаптаванне процэсу выкарыстоўвання даных і повна перындэксацыя на ідэнтычных наборах запыткаў у 11 корпусах, 398 010 дакументах і 10 346 рэальных запытках корыстувачаў. Для ацэнкі значэння былі выкарыстоўваны суджэнні людзей, а главныя рэзультаты оцэнюваліся незалежна за дапамогою ranx, а не толькі на адной з метрык самага інструмента. За гэтымі цыфрамі, простая замена модэля зберагала апошнюю частку якосці, эквівалентную прыблізна 12,5% якосці пасля повной перындэксацыі, тады як адаптаванне дазволіла зберагчы апошнюю частку якосці у розмерзе прыблізна 71%, тое ў 6,4 раза больш, чым простая замена.

    Найболей значным рэзультатам ёсць тое, што метод супрацоўкі не быў правым у кожны раз. Ён даслівна быў корыстны толькі у 12 з 62 пар модэляў і корпусаў, якія былі перакананы. Правілле прыняцця рашэння паказвало правы направленне у 61 з 62 случаў, уключаючы 32 з 33 у корпусах, якія ён не бачыў да таго часу, калі правілле стала незменным. Інструмент здобывае доверлівасць, калі кажа «перындэксаваць тут» або «вам не трэба гэтага апдэйта», калі гэта ёсць чыстая правда, а таксама калі кажа «выкорыстоўваце мяне».

    Працэс працы праз командную лінію ад початку да канца

    rebasis — гэта не толькі функцыя бібліятэкі. Яго командная лінія ператварае змяну модэля ў керованы працэс. Ён пачынаецца з перагляду срэдавішча і выявлення таго, якія храніліцы і элементы інтэграцыі ёсць доступныя:

    # Inspect the environment and available store/embedder support
    rebasis doctor
    

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

    # Measure first and choose the right path
    rebasis probe --store chroma:///path/to/db#notes \
      --old sentence-transformers/all-MiniLM-L6-v2 \
      --new BAAI/bge-base-en-v1.5 \
      --queries queries.jsonl --sample 10000 --report report.html# Fit the appropriate adapter
    rebasis fit --store chroma:///path/to/db#notes \
      --old sentence-transformers/all-MiniLM-L6-v2 \
      --new BAAI/bge-base-en-v1.5 \
      --method auto --pairs 4000 \
      --out adapters/minilm-to-bge.rbs# When ready, migrate the index in background batches
    rebasis migrate --adapter adapters/minilm-to-bge.rbs \
      --store chroma:///path/to/db#notes --priority access --limit 5000
    

    Рэзультатны адаптар .rbs мае ў сабе не толькі вагі. Яго маніфест фіксуе ідэнтыфікатары старых і новых модэляў, размеры вектараў, направленне і паслявіскі профіля кодавання. Тэнзоры зберагаюцца у фармаце safetensors, а таксама прыносзяцца рэзультаты калібравання і ацэнкі. Такім чынам адаптар являе сабою перэносны, практычны дакумент, які паказвае, якія модэлі і якія умовы яго створылі, а хэшы тэнзораў можна перасчысляць для пераканання ў ўцэласці.

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

    Працэс вычысленняў і працэздатнасць памяці

    Інструмент, які тэорэтычна не патрабуе цэлаг корпусу ў памяці, можа ўсё ж такі віпадкова яго завантажыць. У Rebasis ітэратары корпусу стрымуюць запісы, таму максымальная памяць пад час міграцыі становіць прыблізна розмер пакета у паўзе з розмерам вектара. Час выканання зрастае з колькасцю запісаў, але корпус карыстальніка ніколі не матэрыялізуецца ў RAM. Калі памяць набліжаецца да максімуму, заданага параметрам --max-memory, розмер пакета можа зменшыцца, а задача, якая знаходзіцца ў стане перапыткі, можа націснуцца, замест таго каб была зупінена.

    Матрыца сяродзецтва, якая выкарыстоўваецца для пошуку правільных рэшэнняў за дапамойкай розмеру праекстаў, таксама не ствараецца ў цэлым выглядзе. Запыты обрабоцваюцца па блаках. Кожны блак абвядзе множэнне матрыц, выберэ топ-k рэзультатаў і пазбудзіцца проміжнай матрыцы балавання. Полная сортавання кожнай строкі коштаў бы S log S. Выкарыстоўванне argpartition дазволяе заставіць прыбліжную вартасць выбору кожнай строкі лінейной у залежнасці ад S. Для нормалізаваных вектараў float32 пошук косінуса зводзіцца да аднаго множэння матрыц, што дапамагае контролаваць як паветраную памяць, так і разніцу ў тыпах дадзенняў між платформамі.

    У гэтым праекце CPU выступае як основны элемент для вычыслаў, а не як альтэратыў другага класу. GPU можа значна прышвыдзіць працэс стварэння эмбеддынга, але перадача дадзейнаў межы прыстрою можа знішчыць гэтыя перавагі для простай операцыі адаптэра, якая выконваліцца за адну запытку. Тэсты на эквівалентнасць прыстроў паўтараюць перакананні ў розніцы паміж рэзультатамі, а таксама пераглядаюць знайдзеныя наборы суседніх дадзейнаў, і, галоўнае, пераканваюцца, чы роўныя дадзеныя прыводзяць да роўнага заканчыцьнага рашэння. Незначная чысловая розніца, якая перакідае значэнне ARR за прагу, напрыклад 0.95, не ўважаецца допустным варыяцыям апаратуры; гэта лічыцца дыфектам у працэсе функцыонавання продукту.

    Міграцыя, якая вытрымае перарывы

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

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

    Механізм міграцыі апіраецца на чатыры незменныя прынцыпы:

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

    Очаквальнай лісты міграцыі служыць таксама як пункт перапыткі, таму --resume працюе адразу пасля пасляпэўнай завершанай пачакі. Адпаведны інструмент можа сочыць за напругай памяці і станам акумулятара, а журнал доступа можа размістыць найчашча запрашваныя запісы ў пачатак. Калі рэзультат не задовольняе, rollback вярнуе первісныя даны з тэневай копіі. Контракты, якія выкарыстоўваюцца ў усіх бэкендах (Chroma, LanceDB, sqlite-vec, Qdrant, FAISS і той, што працуе ў памяці), забезпечваюць тое, каб усі этыя операцыі мелі аднаковы значэнне ў всіх месцах.

    Плагіны для разных тэкстовых стэкаў

    Local RAG не базуецца на адной-едзінай базе вектарных дадзеных чы адным прадаўцы амбеддынга, таму зберагчыкі дадзеных і алгорытмы стварэння амбеддынга знаходзяцца ў рэестрах, створаных на базе плагінаў. Падтрымваныя зберагчыкі: Chroma, LanceDB, sqlite-vec, Qdrant і FAISS, а таксама бэкенд, які працуе ў памяці. Для стварэння амбеддынга выкарыстоўваюцца sentence-transformers, fastembed, Ollama, API, сумесныя з OpenAI, llama.cpp і заранее вычысленыя вектары.

    Основная версія прызначана для працы без PyTorch. Основныя функцыі probe, метод Procrustes fitting і логіка прыняцтва рашэння працуюць на NumPy, SciPy і scikit-learn, а важкія чы спецыфічныя для платформы залежнасці інсталююцца толькі тамі, хто іх патрэбуе. Пакеты трэціх сторон можу выклікваць точку входу rebasis.stores чы rebasis.embedders, каб дадаць можлівасць інтэграцыі без змены самага праекта.

    Прыватнасць, логаванне і відтворнасць

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

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

    Што прагне падтвердзіць адкрытыя пакаванне

    rebasis выдана пад ліцэнзію Apache 2.0, і яе галоўная мета — ўрабіць яе тэзы перагляднымі, а код — чытальным. У рэпазітарыі вы знайдзеце запісі пра архітэктурныя рашэнні па ключовым выборам, а таксама ідэальныя сцэнарыі, прамеры для рэальных корпусаў дадзеных, бюджэты на выдатковасць, тэсты для кожнага бэкенду, тэсты CLI, якія запускаюцца ад пачатку да канца, і дакументацыю для учаснікаў. Стратэгія тэстав выходзіць за межы стандартнага сцэнарыю, ўключаючы перагляд чысловай адпаведнасці на разных прыстроях, максімальныя розмеры памяці, характэрыстыкі адаптараў, контракты хранення дадзеных, а таксама стойкасць міграцыі і анулювання змян.

    Гэтая CI-паіплайн працюе з Python 3.12 і 3.13 на Linux і macOS — двух сістэмах, у яых розлічна семантыка зберагчыка. Мінімальныя версіі падтрымваных залежнасцей маюць свой окрэмы цыкл запуску, а адзін з окрэмых заданняў пераканальваецца, што такі неабавязковы элементы, як PyTorch або OpenTelemetry, не прасачуцца ў основны пакет. Перакананне тыпаў ведаецца за дапамогою mypy --strict, якасць коду контролюецца Ruff, межы слоёў — import-linter, а лінкі да дакументацыі — MkDocs у строгам рэжыме. Сэрцэвын задум усьго гэтага — тое, што доверлівасць да адкрытага кода залежыць меней ад адважных заяв у README, чым ад паказу, якія тэсты і меры стояць за імі.

    Змены модэляў без выбору «усё або нічога»

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

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

    Гэта прастор для прыямоў, якія прыстрой запоўнюе: спачатку зьвярзанне памерамі, пасля — супрацоўка, а калі трэба — безпечная міграцыя. Гэта відкрыты прыстрой, які мае на мету зробіць местную інфраструктуру RAG моцнейшай, зменшыць прыгнічэння ад выбору модэля і зробіць абнаўленні модэляў болей адпаведальнымі, і ён відкрыты для распрацоўшчыкаў, кабіях маглі яго пераглядаць, прыкладзіць да рэальных корпусаў даных і дапамагаць у розработцы.