← На главную

PCA сжимает эмбеддинги не хуже MRL даже на старых моделях

03.08.2026 14:53 · hackernews

Когда люди начали использовать LLM с собственными документами, встал вопрос: как хранить и искать всё это эффективно? Векторные базы данных стали стандартом, но векторы могут иметь тысячи измерений, а миллионы таких векторов делают поиск медленным и дорогим. AI-лаборатории ответили техникой Matryoshka Representation Learning (MRL): она позволяет урезать размер эмбеддингов без большой потери качества. Почти счастливый конец, но автору стало интересно, как MRL сравнится со старой техникой — Principal Component Analysis (PCA). Статья Дуга Тернбулла про PCA подтолкнула его к эксперименту, код и данные которого опубликованы на GitHub.

MRL работает во время обучения: модель тренируют так, чтобы самая важная информация оказывалась в начале вектора, как в матрёшке. При инференсе просто берут первые d измерений и нормализуют. Но старые модели так не обучены. PCA же работает после обучения и подходит для любой модели: на выборке эмбеддингов находят направления максимальной дисперсии и проецируют на них векторы. Зато PCA добавляет операционной сложности: нужно хранить и версионировать проекцию, применять её одинаково при добавлении и поиске.

Автор генерировал эмбеддинги через OpenRouter и оценивал качество на восьми BEIR-датасетах: SciFact, NFCorpus, ArguAna, FiQA, SciDocs, Quora, TREC-COVID, Touché 2020. Векторы уменьшались до 512, 256, 128, 64 и 32 измерений. На двух MRL-моделях — OpenAI text-embedding-3-small (1536 измерений) и Alibaba qwen3-embedding-8b (4096) — сравнивались MRL-обрезание и PCA. Результат: PCA почти на всех размерах был не хуже или лучше MRL. На text-embedding-3-small при 32 измерениях PCA сохранил 65% качества против 46% у обрезания; на qwen3-embedding-8b разница меньше — 71% против 68%. На 512 измерениях MRL давал лёгкое преимущество, но дальше PCA вырывался вперёд.

Второй вопрос — не связано ли преимущество с самим MRL-обучением. Автор добавил контрольную модель text-embedding-ada-002, которая не обучалась с MRL. Оказалось, PCA на ней сохраняет почти столько же качества: 78% на 64 измерениях и 59% на 32. Это выше, чем у обрезания MRL-модели на тех же размерах. Третий вопрос — важна ли выборка для подгонки PCA. Автор выяснил: размер выборки почти не влияет, а проекция, посчитанная на 100 тысячах пассажей MS MARCO и применённая к другим датасетам, работает неплохо до умеренного сжатия. Так что ленивый подход — посчитать PCA один раз и забыть — оказался вполне рабочим.

Ещё автор упомянул квантизацию: можно уменьшать не количество измерений, а битность. Например, int8 — в 4 раза меньше float32, бинарная — в 32 раза. Комбинация бинарной квантизации и PCA на 512 измерений сохраняет 82% качества при размере около 1% от исходного, но автор относится к этому с осторожностью.

Вывод: PCA не просто устоял против MRL, а выиграл на большинстве размеров. Результаты не объясняются только MRL-обучением, и метод оказался менее капризным, чем ожидалось. Неплохо для техники, которая старше стиральной машины.

Читать оригинал →