Практычныя прытлумленнікі: turbovec для RAG: практычныя вядомасці пра шырэйшыя, меньшыя вектары.
Практычныя прытлумленнікі: turbovec для RAG: практычныя вядомасці пра шырэйшыя, меньшыя вектары: контракты, перакантровкі і месцы для коду для команд, якія викорыстоўваюць гэты патэрн.
Існавайце гэта як перапрацоўку ідэй з кнігі “turbovec for RAG: A Practical Guide to Faster, Smaller Vector Search” для аператараў: чыстыя этапы, арранжаваныя блакі коду і прыметкі па вяснаванню, якія застаюцца пасля перадачы. Этап Апглэйва лепш працюе, калі яго спрыяваць як мерыемую паверхню. Запісаце адна ідеальная транскрыпцыя, адзін прыклад неудачы і прыметкі па адвярнуццю перад тым, як расшырваць масштаб. Спрыяйце гэты этап як кантракт межа вхіднымі дадзеннямі і паверыжанымі выходнымі рэзультатамі. Даўце назвы артыфактам, задаце критэрыя успеху і адмовіцеся ад беззвучнага частковага завершэння.
Што гэта?
У стадії «Што гэта?» неабяжна практычна ваказваць параметры вводу, адпаведнага власніка крока і критэрыяы завершэння працы перад змінайом коду. Аператары должны магчымаць перзапуск крока з вядомай точкі контролю, не падозрываючы прыхованы стан. Неабяжна фіксаваць час выкарыстоўвання і кост токенаў або запытаў разам з функцыйнальнымі рэзультатамі. Відразлівае паказанне костаў з’являецца запобежнікам неспакойных рахункоў, калі процес пераходзіць з дэмовай среды ў спакульнаныя сераўсы. Неабяжна цітаваць тыя часткі тексту, якія фактычна лежаць у падставе адпаведнай адказу. Без цітатаў аператары не можаць разлічыць галюцинацію ад прасоўкі ў індэксаванні.
Як працюе TurboQuant
Для этапу «Як працюе TurboQuant» неабяжна прадзефінавацыя вхідных дадзеных, адпраўніка крока і крэтарыяў завершэння працы, перш чым зменяць код. Аператары должны магчымае перзапускаць крок з вядомай точкі контролю, не падозрываючы прыхованы стан. Конфігурацыю трэба захаваць паза кодам прыемліка. Файлы сераўнавання, хранілішчы секрэтных дадзеных і флагі функцый належыць у аднам месца, якое аператары можаць пераглядаць, не чытаяўшы весь граф. Наводзіце тыя часткі, якія фактычна ляглі в основу адпаведзення. Без ціх цытатаў аператары не можуць разлічыць галюцинацію ад працягу індэксавання.
Крок 1: Сераўнаванне
Для стадіі Нормалізацыя 1 неабходна ўскладненне вхідных дадзеных, адначальніка крока і крэтарыяў завершэння працы перад змінайом коду. Аператары должны магчымае запускіць крок з вядомай точкі контролю, не спрабоўваючы здагадвацца пра схованы стан. Неабходна задокументаваць як шлях успеху, так і шлях вярнення да нормальнасці. Перапрыбуткі, людзкія перакрыцці і обробка некоректных паведамленняў є часткай продукту, а не дадатковымі правакамі пазнейшае. Прыцягніце цитаты з тых частак, якія фактычна служылі падставай для адпаведнай адказу. Без цітатаў аператары не зможаць разлічыць галюцинацію ад працяжкай індэксацыі. Для стадіі Нормалізацыя 1 неабходна ўскладненне вхідных дадзеных, адначальніка крока і крэтарыяў завершэння працы перад змінайом коду. Аператары должны магчымае запускіць крок з вядомай точкі контролю, не спрабоўваючы здагадвацца пра схованы стан. Спрыяйце цій стадіі як даговору межа вхідных дадзеных і перакананых выходных рэзультатаў. Назвіце артыфакты, ускладненне крэтарыяў успеху і адмовіцеся ад мовчанкавага частковага завершэння.
Крок 2: Ротацыя
Калі працюеце над стадзіяй «Роцыяць» з 2-го крока, спачатку запісайце умовы контракту: неабяжлівыя даны, сігнал успеху і тое, што выходзіць у разе частковага нявыпання. Такі список пераконвае ў тым, што пазнейшыя змены коду будуць чыстымі. Запісвайце час выканання і кост токена або запыту праза функцыйнальныя рэзултаты. Відразувая відобразжэння костаў запобiegае неспакойным рахункам, калі працэс пераходзіць з дэмаверсіі ў спяльныя среды. Перад налаштаваннем запрошэнняяў пераканайцеся ў якосці адзысквання інформацыі на фіксаванай сэтке запытаў. Частае змены запрошэнняяў рэдка калі-небудзь выправляюць слабую якосць адзысквання дакументаў.
Крок 3: Квантыфікуйце кожную координату
Калі вы виконваеце 3-й крок – квантызацыю кожнага этапу, спачатку запісайце умовы працы: неабяжлівыя даннэ, сигнал успеху і тое, што выканаецца у разы ў частковай нявыполненасці. Такі список контролю дапамагае залічыць змяны ў кодзе пазнейша. Зберагайце настройкі за межамі коду прыемліка. Файлы сераўнавання, храненні секрэтных данных і флагі функцыйяў должны знаходзіцца ў аднам месцы, куды аператары можаюць пераглядаць іх без неабяжлівага чытання всей структуры. Перад налаштаваннем запитоў пераканайцеся, што рэтка адпаведнаў у фіксованай групе запытанняў. Частае зміненне запитоў рэдка калі вярна выправляе слабыя аспекты адзысквання інформаціі.
4-й крок: Компактаванне бітаў
Калі працуеце над стадзіяй «Bit-pack» у Кроку 4, спачатку запісайце контракт: неабяжлівыя вхідныя даны, сигнал успеху і тое, што выходзіць у разе частковага невыпання. Такі список пераконвае ў тым, што пазнейшыя змены коду будуць чыстымі. Документавайце як шлях успеху, так і шлях вярнення. Перапрыбуткі, людзкіе контралі і обработка некоректных паведамленняў ёсць частью продукту, а не пазнейшым дапрацоўкам. Змяроўвайце рэткасць адпаведзенняў на фіксованы набор запитаў прычым регулюванні падказак. Частае змена падказак рэдка калі вярнуе слабую якасць адзысквання інформаціі. Калі працуеце над стадзіяй «Bit-pack» у Кроку 4, спачатку запісайце контракт: неабяжлівыя вхідныя даны, сигнал успеху і тое, што выходзіць у разе частковага невыпання. Такі список пераконвае ў тым, што пазнейшыя змены коду будуць чыстымі. Спрэчвайце гэтую стадзію як контракт межа вхіднымі данымі і перакананымі выходнымі рэзультатамі. Даўце назвы артыфактам, задаць тэсты на успех і не прабывайце прыймаць часткова завершаныя рэзультаты без паведамлення.
Чаму гэта важна для швальнасці пошуку
Ёнклузыўнасць гэтага пункту для стадыйных прац выглядае найкраща, калі яго расследжваюць як вимерную величыну. Запісаўце адна ідеальная версія, адзін прыклад неудачы і прыметку па адкату перш чым расширваць масштабы. Запісвайце час выканання і кост токенаў або запытаў па боку функцыйнаых рэзультатаў. Відразлівасць костаў з самага пачатку запобегае неспакойным рахункам, калі працэс пераходзіць з дэмаверсіі ў спяльныя среды. Раздзеляйце політыку часткавання дадзеных і політыку ўзяць іх. Змена адной з іх не должна вымагаць перапісвы другой, калі зменяюцца паказнікі якасці.
2,7× граніца Шаннона
Стадія 2/7 Shannon работае наўзяцей, калі яе спрыяваць як вимерную паверхню. Зафіксавайце адны «золаты» транскрыпт, адны прыклад неудачы і запіс пра вярнэнне да пачатковага стану перш чым расширваць масштабы. Зберагаюце настройкі паза кодам прыемліка. Файлы сераўнавальнага сэрвісу, хранілішчы секретных дадзеных і флагі функцый должны знаходзіцца ў аднам месцы, куды аператары можаюць адбавіць аудыт без неабяжнага чытання всіх дадзеных. Раздзеляйце політыку часткавання дадзеных і політыку ўзяць дадзеныя. Змена адной з іх не должна вымагаць перапісву другой, калі зменяюцыся паказнікі якосці.
Чаму гэта корыстна для RAG?
Этап «Чаму гэта корыстна» працюе найкраща, калі яго розглядаць як вимерную плошчу. Зафіксавце адны ідеальны прыклад, адну справу з бягам і прыметку па вярнэнню да пачатковага стану пры розшырэнні масштаба. Дакументавайце як шлях успеху, так і шлях вярнэння да нормальнага стану. Перапрыбуткі, людзкія контраліны і обработка некоректных паведамленняў ёсць частью продукту, а не пасляднім дапрацоўкам. Разлучайце правілы частковай обработкі дадзеных і правілы ўтрымання інформацыі. Змена адных не должна вымагаць перапісвання іншых, калі змянююцыся паказатэлі якосці. Этап «Чаму гэта корыстна» працюе найкраща, калі яго розглядаць як вимерную плошчу. Зафіксавце адны ідеальны прыклад, адну справу з бягам і прыметку па вярнэнню да пачатковага стану пры розшырэнні масштаба. Разглядвайце гэты этап як кантракт межа вхіднымі дадзенымі і перакананымі выходнымі рэзультатамі. Даўце назвы артыфактам, задаце критэрыя успеху і не прабывайце прыймаць часткова завершаныя рэзультаты без паведамлення.
Справа з памяцю
Для стадіі аналізу праблемы прыватнасці неабяжна перад зменым коду задаць вхідныя даны, адпаведнага власніка крока і крэтыяры завершэння. Аперацыяныя працавнікі должны магчымаюць перазапускаць крок з вядомага пункта контролю, не прыпускаючы стану, які залишаецца незрозумелым. Запісваць час выканання і кост токенаў або запытаў разам з функцыйнальнымі рэзультатамі. Відразлівая видавальнасць костоў з самага пачатку запобегае неспакойным рахункам, калі процес пераходзіць з дэмавайнага сераўера у спяльныя среды. Указваць тые часткі тексту, якія фактычна лежалі в основе адпаведнай адпаведзі. Без цых цытатаў аперацыяныя працавнікі не можуць адразліваць галюцинацыі ад прасоў у індэксаванні.
Случак прыватнасці
У стадії розгляду пытання прыватнасці неабяжна пазначыць вхідныя даны, адміністратара крока і критэрыя завершэння пры перадзеіснавленні коду. Аператары должны магчымаць перзапуск крока з вядомай точкі контролю, не падозрываючы прыхованы стан. Конфігурацыю трэба залічыць пазначальна ад коду прыкладнення. Файлы сераўіса, хранільнікі секрэтных дадзеных і флагі функцыйяў должны знаходзіцца ў аднам месцы, якое аператары можаць пераглядаць, не чытаяўшы весь ланцуг задач. Паказваць трэба тыя часткі тексту, якія фактычна лежалі в основе адпаведнай адказу. Без цых цітатаў аператары не можаць разлічыць галюцинацію ад прасоўкі ў індэксаванні.
Случай без трэніравання
Для стадіі «без трэнінгу» неабяжна ўзначыць вхідныя даны, адпаведальнага за крок і крэтыры завершэння пры перадзеі коду. Аперацыйныя працавнікі должны магчымае запускаць крок з вядомай точкі контролю, не падозрываючы прыхованы стан. Неабяжна задокументаваць як шлях успеху, так і шлях вярнення да нормы. Перапрыбуткі, людзкія перакрыцця і обробка некоректных паведамленняў є часткай продукту, а не чымсь, што дадаецца пазней. Указваць трэба тыя часткі тексту, якія фактычна лежаць у падставе адпаведнай адказы. Без ціх цитатаў аперацыйныя працавнікі не зможуць адразліць галюцинацыю ад прасоў у індэксаванні. Для стадіі «без трэнінгу» неабяжна ўзначыць вхідныя даны, адпаведальнага за крок і крэтыры завершэння пры перадзеі коду. Аперацыйныя працавнікі должны магчымае запускаць крок з вядомай точкі контролю, не падозрываючы прыхованы стан. Спрыяць трэба, каб гэтае стадіі выступала як контракт межа вхіднымі данымі і перакананымі выходнымі рэзультатамі. Назваць всі неабяжныя элементы, узначыць крэтыры успеху і не прабаваць прымусова завершваць крок часткова, без паведамлення пра гэта.
Калі turbovec не ўсуне проблему
Калі вы працюяте над сцэнарыем, калі turbovec не падходзіць, спачатку запісайте умовы кантракту: неабяжлівыя данні, сигнал успеху і тое, што будзе адбывацца у разе частковай нявыходкі. Такі список дапамагае залишацца чыстым пад час пазнейшых змян у кодзе. Запісвайце час выконання і вартасць токена або запиту разам з функцыональнымі рэзультатамі. Відразувая вартасці запобегае неспакоўным рахункам, калі праця пераходзіць з дэмовай среды ў спакульную. Перад налаштаваннем запитоў пераканайцеся, як система адпавядае на фіксованы набор запитанняў. Частае змінэнне запитоў рэдка калі-небудзь выправляе слабкую эфективнасць пошуку.
Як правільна яго вжываць
Калі працюеце над этапам «Як яго выкарыстоўваць», спачатку запісайце умовы дагавору: неабходныя даны, сігнал успеху і тое, што выходзіць пад частым неудачам. Такі список контролю дапамагае залічыць змяны ў кодзе пазнейша. Зберагайце настройкі за межамі коду прыемліка. Файлы сераўнавання, хранільнікі секрэтных данных і флагі функцыяў должны знаходзіцца ў аднам месцы, куды аператары можаць адбавіць аудыт без неабходнасці чытання всей структуры. Перад налаштаваннем запитоў пераканайцеся ў рівні воспамінання на фіксаваным наборе запитанняў. Частае змена запитоў рэдка калі вярнуе слабкую эфектыўнасць пошуку.
Інсталяцыя
Калі працюеце над стадзіяй установкі, спачатку запісайце угоду: неабяжлівыя даны, сігнал успеху і тое, што выходзіць у разе частковага неяксамоства. Такі список пераконтролю дапамагае заставіць пазнейшыя змены коду быць чыстымі. Дакументавайце як шлях успеху, так і шлях вярнення. Перапрыбуткі, людзкіе контралі і обработка некоректных паведамленняў ёсць часткай продукту, а не пазнейшым дапрацоўкам. Змяржывайце рэт кантрактування на фіксаванай сэтцы запытаў прычым падлашоўвання запытак. Частае змены запытак рэдка калі вярнююць слабую якасць адзысквання інформаціі.
pip install turbovec
Калі працюеце над стадзіяй установкі, спачатку запісайце угоду: неабяжлівыя даны, сігнал успеху і тое, што выходзіць у разе частковага неяксамоства. Такі список пераконтролю дапамагае заставіць пазнейшыя змены коду быць чыстымі. Спрыятлівайце гэтай стадзіі як угоды межа данымі і перакананымі выходамі. Дайце назвы артыфактам, задаць тэсты на успех і адмовіцеся ад мовчанкавага частковага завершэння.
cargo add turbovec
Мінімальны корыстны пайплайн
Мінімальны ўпрыемны этап пайплайна працюе наякраўжэй, калі яго розглядаць як вимерную плошчу. Зафіксавайце адны ідеальны прыклад, адзін кейс неудачы і запіс пра вярнэнне да пачатковага стану перш чым расширваць масштабы. Запісвайце часы выконання і косты токеноў або запытак па боку ад функцыйнальных рэзультатаў. Візуабельнасць костаў з самага пачатку запобегае неспакойным рахункам, калі процес пераходзіць з дэмовай среды ў спяльнаныя сераўеры. Раздзеліце політыку часткавага оброблэння дадзеных ад політыкі ўтрымання іх. Змена адной з яных не должна вымагаць перапісвання другой, калі зменяюцыся паказнікі якосці.
from turbovec import TurboQuantIndex
# Build the index
index = TurboQuantIndex(dim=1536, bit_width=4)
index.add(document_embeddings)
# Search
scores, indices = index.search(query_embedding, k=10)
# Persist
index.write("kb.tq")
loaded = TurboQuantIndex.load("kb.tq")
Рашэнне: 2-бітны проты 4-бітнага
Працэўка з 2-бітным і 4-бітным режымам даходзіць до наяўнасці лепшых рэзультатаў, калі яе спрыявае можласць вимеры парадакту. Зберагачыце адну ідеальную версію даных, адзін прыклад неудачы і запіс пра вярнэнне да поперадней версіі, прычаму расшырюваць масштабы не трэба. Канфігурацыю трэба залічваць параду з кодам прыкладнага програма. Файлы сяродавішняе суперактуальнасці, хранілішча секрэтных дадзеных і пазнакі функцый должны знаходзіцца ў адном месцы, куды аператары можаць адбавляць контроль, не чытаючы весь структураны дадзеныя. Палітіку частковага обробкі дадзеных трэба аддзеліць ад палітікі ўзяцца дадзеных. Змена адной з іх не должна вымагаць перапісву другой, калі зменяюцыся паказнікі якосці.
TurboQuantIndex проты IdMapIndex
Этап TurboQuantIndex протыб IdMapIndex работае найкраща, калі яго спрыяваць як меравальную плошчу. Зберагучы адна ідеальная версія рэзультата, адны прыклад неудачы і запіс пра вярнэнне да пачатковага стану, перш чым расширваць сферу дзеяння. Дакументавайце як успішны, так і вярнучыся шляхы. Перапрыбуткі, людзкі контроль і обработка некоректных паведамленняў ёсць часткай продукту, а не чымось, што дадаецца пазней. Раздзеляйце правілы часткавання дадзеных і правілы ўтрымання іх. Змена адных не павінна вымагаць перапісвання іншых, калі змянююцыся паказатэлі якосці. Этап TurboQuantIndex протыб IdMapIndex работае найкраща, калі яго спрыяваць як меравальную плошчу. Зберагучы адна ідеальная версія рэзультата, адны прыклад неудачы і запіс пра вярнэнне да пачатковага стану, перш чым расширваць сферу дзеяння. Спрыявайце этапу як кантракту межа вхіднымі дадзенымі і перакананымі выходнымі рэзультатамі. Даўайце назвы элементам, задаюце критэрыя успеху і не падтрымайце тыхню частковую завершэннасць.
from turbovec import IdMapIndex
import numpy as np
index = IdMapIndex(dim=1536, bit_width=4)
index.add_with_ids(vectors, np.array([1001, 1002, 1003], dtype=np.uint64))
scores, ids = index.search(query, k=10) # returns your IDs
index.remove(1002) # O(1) by ID
Супрацоўка з моделямі інкапсулявання
У стадії спаювання з моделям імбеддінгу неабяцо пазначыць вхідныя даны, адміністратара крока і критэрыя завершэння пры перадзеіснаванні коду. Аператары должны магчымаць перзапуск крока з вядомай точкі контролю, не прабуючы вычысляць схованы стан. Запісваць час выконання і вартасць токеноў або запытаў разам з функцыйнальнымі рэзультатамі. Відразлівае паказанне вартасцей запобегае неспадзяваным рахункам, калі працэс пераходзіць з дэмовай среды ў спакульнаныя сераўы. Калі наступны крок — це код або вызов інструмента, лепш выкарыстоўваць структураваныя выходныя даны з перакананнем схэмы, чым вольныя тэкстовыя форматы.
Інтеграціі з фрэймворкамі
У стадії інтеграцыяў з Framework неабходна пазначыць вхідныя даны, адпаведальнага за кожны крок і крэтыяры завершэння працы перад змінайом коду. Аператары должны магчымае перзапускать крок з вядомай точкі контролю, не прабуючы вычысляць захаваны стан. Конфігурацыю трэба залічыць паза кодам прыкладнення. Файлы сераўнавання, хранільнікі секрэтных данных і флагі функцыйяў должны знаходзіцца ў аднам месцы, якое аператары можаць пераглядаць, не чытаяўшы весь ланцуг задач. Паказваць трэба тыя часткі тексту, якія фактычна лежаць у падставе адпаведнай адказу. Без ціх цитатаў аператары не можаць розразліць галюцинацію ад прычыны, зв’язанай з недастаткам індэксацыі.
pip install turbovec[langchain]
pip install turbovec[llama-index]
pip install turbovec[haystack]
Адкрытыя прыемлівыя нюансы кампанавання
Для стадіі «Аператыўныя парадкі Honest» неабходна перад зменым коду адзначыць вхідныя даны, адпаведальнага за крок і крэтырыя завершэння. Аператары должны магчымае запускіць крок з вядомай точкі контролю, не падозрываючы прыхованы стан. Неабходна аддзекаваць як шлях успеху, так і шлях вярнення. Перапрыбуткі, людзкія перакрыцця і обробка некоректных паведамленняў є часткай продукту, а не чымсь, што дадаецца пазней. Паказваць часткі тексту, якія фактычна лежаць у падставе адпаведнай адказы. Без ціх цитатаў аператары не можуць разлічыць галюцинацію ад прасоўкі ў індэксаванні. Для стадіі «Аператыўныя парадкі Honest» неабходна перад зменым коду адзначыць вхідныя даны, адпаведальнага за крок і крэтырыя завершэння. Аператары должны магчымае запускіць крок з вядомай точкі контролю, не падозрываючы прыхованы стан. Спрыяць гэтай стадіі як кантракту межаў вхідных дадзеных і перакананых выходных рэзультатаў. Даць назвы артыфактам, адзначыць крэтырыі успеху і не прымаць беззвучнае частковае завершэння.
Перацоўка падходу
Калі працюеце над стадзіяй перацоўкі падходу, спачатку запішыце умовы викорыстання: неабходныя даны, сігнал успеху і тое, што выходзіць на частым невялікім браке. Такі список контролю дапамагае заставаць пазнейшыя змены коду чыстымі.
Чэк-ліст для эксплуатацыі
Калі працюеце над стадзіяй чэк-ліста для эксплуатацыі, спачатку запішыце умовы викорыстання: неабходныя даны, сігнал успеху і тое, што выходзіць на частым невялікім браке. Такі список контролю дапамагае заставаць пазнейшыя змены коду чыстымі.
Лепшыя маленькія, тэставаныя елементы чым велікія скрыпты. Калі якісь крок не выйшае, адказка за гэта паталогія должна быць спрямована на адзін конкрэтны элемент, а не на заплутаны ланцюг задач.
Перад налаштаваннем заповедзей трэба пераканаліцца ў рэгрэсіі на фіксаванай сэтке запытанняў. Частае змены заповедзей рэдка калі лячыць слабую систему пошуку інфармацыі.
Зафіксавайте версіі залежнасцяў і запісаўце характэрыстыкі зображэння, якое было выкарыстана для дэманстрацыі. Возможнасць павторэнтзіі важлівей, чым традыцыйныя знання.
Спрыятлівае ставленне да гэтага этапу — як да кантракту межа вхіднымі дадзеннямі і пераканаленымі выхіднымі рэзультатамі. Дайце назвы всім элементам, задацьце критэрыя успеху і адмовіцеся ад тых варыянтаў, калі рэзультаты выдаюцца частковыя без адпаведнага павтверджэння.
Перад налаштаваннем заповедзей трэба пераканаліцца ў рэгрэсіі на фіксаванай сэтке запытанняў. Частае змены заповедзей рэдка калі лячыць слабую систему пошуку інфармацыі.
Перш чым запускать даныя стэка, заморозьце версіі, зафіксавце «золаты» транскрыпты для критычных шляхоў і паказваце спосабы атрыбуціі. У спадзяльных средах неабходны ліміты частоты запытанняў, пераказы наявнасці праваў на выкарыстоўванне ресурсаў і чысткі власнік для змены секрэтных даных. Валіце надзейнасць працы над красавімі, але разовымі дэманстрацыйнымі прыкладамі.
Прыметка для 749a19532252: не кладзіце ключы прадаўцаў у репазітарый, задаце максимальную кантитатыву токенаў на сесію і зберагачыце транскрыпты празаўседліва з фіксатрамі для ацэнкі, каб пазнейшыя замены моделяў заставаліся пораўнанымі.