Галоўная / Артыкулы / Вектарна квантыфікація у порівнянні: Int8 проти бінарного зберігання та відтворення

Вектарна квантыфікація у порівнянні: Int8 проти бінарного зберігання та відтворення

З’ясавайце, як int8 і бінарная квантызацыя вплываюць на рівень відтворення і запасы памяці для эмбеддінгаў, чаму бінарная квантызацыя може спрычыніць проблемы, і як выбраць безпечны рэвень стиснення.

940 слоў

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

Ось галоўная мысль: квантызація Int8 зазвычай падтрымлеў 95% або больш дакладнасці пошуку, адночаса зменшыўшы прыемліванне на 4 разы. Бінарная квантызацыя дазволяе досягнуць вялікага зменшэння на 32 разы, але якщо модель эмбеддынга не была натрэнавана для ўжывання такой квантызаціі, можна пазначыць зникненне трохце або больш дакладнасці пошуку. Гэтыя два методы не ўзяткі з адной шкалы; яны працуюць настолькі разна, што выбор неправильнага варыянта для вашай моделі можа таямна паспець зіпсаваць якосьць пошуку.

Квантыява працюе па прытрымкі кожнай высоты з меньшай тачнасцю. Можна перейść ад 32-бітных чисоў з плаваючай канмой да 8-бітных цэлых чисоў (скэлярная квантыява) або ж да аднаго біта на кожную высоту (бінарная квантыява). Эконамія ёсць рэальная: выкарыстоўванне RAM сякраз зменшваецца у 24 разы па бінарной квантыявацыі і у 3,75 раза па скэлярной; эфект становіцца ўсё бол значным, калі корпус складаецца з мільйонав вектароў, што ў 2026 году стае все бол звычным для памяці агентаў і корпоратывных систем RAG.

Як выглядаюць цыфры

Тэставы корпус быў сінтэтычны: 2 000 вектароў з 768 высотамі, апранутых у 20 кластэраў, каб імітаваць рэальную семантычную структуру. Точнасць выкарыстоўвання вектараў мералі па параметру recall@10 у порываў з базовым станом без квантыяваціі (float32), пасля застосавання кожнага з двух квантызатораў. Першы — int8, які масштабуецца па найбольшай абсалютной вялічыне і заокругляе значэння ў дыапазон int8:

def quantize_int8(vecs):
    scale = np.max(np.abs(vecs))
    q = np.round(vecs / scale * 127).astype(np.int8)
    return q.astype(np.float32) / 127 * scale

А другі — бінарны, які захоўвае толькі знак кожнага значэння:

def quantize_binary(vecs):
    return (vecs > 0).astype(np.float32) * 2 - 1

Рэзультаты выйшлі такія:

Format       | Recall@10 vs float32   | Storage (MB)   | Reduction
----------------------------------------------------------------------
float32      | 1.000 (baseline)       |          6.144 | 1x
int8         |                  0.961 |          1.536 | 4.0x
binary       |                  0.326 |          0.192 | 32.0x

Формат Int8 зберагае 96% точнасці адзыскання даклэга, калі памяц скарачваецца у 4 разы, што ўзялі за чыстае рашэнне для большасці прыемных систем. Формат Binary, у гэтай універсальной сімуляцыі вкладвання, якая не створалася з урахоўваннем квантаваціі, падняўся да 32,6% тачнасці адзыскання, незважаючы на яго вражаючую 32-кратную ступень стыснення. Гэта не памылка аброунавання — працоўна два з кожных трох супяжызнанных рэзультатаў, якія б вернуў індэкс з типам float, з’явіліся.

Чаму формат Binary выконвае задачу так слаба

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

Адзінакоўна, гэта не закон прыроды. Гэта залежыць ад моделі. Незалежныя тэставанні паказалі, што дзеяныя архітектуры embedding-аў ледве заўважваюць бінарную квантызацію і зберагаюць апошню якосць на рэвэле float-а прыблізна 98%, тады калі іншыя варыянты страждаюць больш і досягаюць рэвэла 87-92%, залежна ад размеру моделі. Тое, што іх розлучае, — гэта тое, чыі модель была натрэнавана так, каб вытрымаць квантызацію.

Каторы выбраць

  • Зробіце int8 сваім стандартным варыянтом. Вы пасвятаваеце незначную частку точнасці, што легка прыпусціць, а заўсёды заощаджаны прастор є достатнім, каб гэта мела значэнне для большога індексу.
  • Іспользуйце бінарны формат толькі з моделлю, створанай для гэтага. Прадавцы зараз поставляюць варыянты embedding-аў, якія ўрахоўваюць квантызацію, адтак універсальныя embedding-ы сильна паслабляюцься пад бінарным стысненням. Пераканайцеся, што ваша конкрэтная модель была перапрацавана для гэтага пры ўпрабоўкі, і не прыпускайце, што гэты метод є безпечным у всіх ситуацыях.
  • Рассмотрзіце скорачэнне выразнасці у стылі Матрыёшкі як промежуточны варыянт. Дзеяныя новэйшыя моделі можна прыбліжыць да меншага колькасці выразнасцяў (напрыклад, з 2 048 да 256) і застаць большую частку ўжоўтварэння якасці, што дазволяе знайсці баланс межаў між незначным захоўкам памяці у формате int8 і агрэсыўным, але рызыкаваным падходам у формате бінарным.
  • Спачатку пераканайцеся ў рэкалі на сваёй сабеўтварэнай корпусе. Насколькі ўжоўтварэнныя даны збіраюцца ў кластеры, і сколькі майже дублікатных рэзультатаў вашы запиты можа прыняць, пакажуць, куды будуць рухацца гэтыя цифры — адным чынам, адпаведна да рэзультатаў будь-якага стандартнага тэсту, уключаючы гэты.
  • Частыя запытанні

    Які ўплыв на точнасць мае викорыстанне int8? Зазвычай дужа маленькі — усерэдзенна менейш за 5% падых у рэкалі па апэнасці да выкарыстоўвання полнага формата float32, за ўзамен дазволяючы застацца пры памяці, якая ў 4 разы меньшая.

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

    Скількі памяці вы заўсёды? Апошней 4 разы з int8. Бінарная квантызацыя може даць 24-32 разы заўсёды, але з набагато большымі та менш прыемлемымі наследкамі для точнасці.

    Чы трэба переінтегруваць усё? Не обавязкова. Вы можете квантызаваць існуючыя інтеграцыі флоат32 пасля таго, як гэта рабіцца ў вышэўказанам кодзе. Моделі, навучаныя з уважнам да стиснення, як правіло, буду кращыя за готовыя моделі інтеграцыі, якія квантызуюцца пасля таго.

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