170 похожих чатов

Всем привет! Подскажите, пожалуйста, для поиска использую e5 с векторами

1024 float32
Качество поиска фича similarity между запросом и документом супер растит, но соответственно векторы довольно большие выходят. Подумал о квантизации e5 в int8, но пока не тестил. Подскажите, пожалуйста, может кто-нибудь сталкивался. Лучше взять квантованную сильную модельку либо маленькую неквантованную. Скажем multilingual e5 против rubert-tiny-2 как будут работать по качеству? Сильно ли оно просядет при квантизации e5 в int8 и сильнее ли, чем выдают более слабые модельки?

21 ответов

71 просмотр

так-то ещё есть вариант старого-доброго PCA

Ростислав-Корст Автор вопроса

А новые векторы, то есть как только запрос пришёл и мы его векторизовали, можно проскорить обученным pca быстро?

Ростислав-Корст Автор вопроса
Ilya Gusev
ну да

Дефолтным pca из sklearn?)

Ростислав Корст
Дефолтным pca из sklearn?)

Если у вас есть обучающие данные (тысячи пар запрос+релевантный документ), то как вариант, можно вместо PCA (который полностью unsupervised) обучить supervised сжималку нужной вам размерности (один линейный слой, прицепленный поверх замороженной E5), которая бы оптимизировала, скажем, MultipleNegativesRankingLoss косинусной близости всех пар запрос-документ в батче. У меня похожая штука хорошо работала в несколько другой задаче (но тоже на сравнение векторов).

А вообще, из текста вопроса не 100% понятно, какую именно проблему вы пытаетесь решить: размер эмбеддингов, из которых вы делаете поисковый индекс (и тогда есть смысл их жать разными способами) или размер модели, эти эмбеддинги извлекающей (ибо rubert-tiny-2 делалась как раз ради того, чтобы сам энкодер был маленький).

Ростислав-Корст Автор вопроса
David Dalé
А вообще, из текста вопроса не 100% понятно, какую...

С временем инференса особо проблемы нет, а вот с размером векторов есть. Векторный поиск пока не делал, кандидаты вбрасываются эластиком а косинусная близость подаётся в бустинг как фича. И вот перенос векторов по сети из базы в сервис ранжирования выполняется очень долго из-за того, что кандидатов много, и векторы весят много. Большие издержки на перенос по сети. Поэтому есть задача, не утратив качество фичи сходства уменьшить размер векторов, между которыми будет считаться сходство.

Ростислав-Корст Автор вопроса
David Dalé
Если у вас есть обучающие данные (тысячи пар запро...

С твоей точки зрения это будет работать лучше, чем PCA?

Ростислав Корст
С твоей точки зрения это будет работать лучше, чем...

С моей точки зрения, это может работать лучше, чем PCA, если повезёт. Ну и в целом, когда есть достаточно много размеченных данных, обычно supervised методы работают лучше, чем unsupervised.

Векторы большие это вы про постоянные симиляри 0.8 и разница в сотых между результатами?

Ростислав Корст
С временем инференса особо проблемы нет, а вот с р...

Если основная проблема - с перегоном векторов по сети, то можно сделать product quantisation, когда каждый фрагмент вектора заменяется на id наиболее похожего фрагмента из словаря. Если, допустим, брать фрагменты длины 16 и кодировать их в uint16, (то есть словарь до размера 2^16), то 1024-мерный вектор можно описать 64 такими айдишками. Если словарь очень большой, то такое сжатие будет весьма точным. А размер словаря в вашем случае может быть большим, ибо его-то по сети гонять не надо.

Ростислав-Корст Автор вопроса

Есть ли готовые реализации такого? Звучит интересно

Ростислав-Корст Автор вопроса
miteigi nemoto
Векторы большие это вы про постоянные симиляри 0.8...

Шапы и фича импортанс этих симилярити в топе относительно других и не такие уж они и константные. У меня в поиске мб несколько релевантных доков. Важно их наверх отранжировать, поэтому мб не так критично

Ростислав Корст
Шапы и фича импортанс этих симилярити в топе относ...

Для е5 надо по формуле симилярити скоре считать, иначе все результаты будут около 0.8. https://t.me/natural_language_processing/71739

miteigi nemoto
Для е5 надо по формуле симилярити скоре считать, и...

Интересно, как вы эту формулу вывели? Чисто интуитивно?

Ростислав Корст
Есть ли готовые реализации такого? Звучит интересн...

Я знаю реализацию в пакете navec. Возможно, есть что-то ещё более оптимизированное.

Ростислав Корст
С временем инференса особо проблемы нет, а вот с р...

Скорее всего еще на сериализацию и десериализацию время тратиться?

Ростислав-Корст Автор вопроса
David Dalé
Я знаю реализацию в пакете navec. Возможно, есть ч...

Походу в faiss это тоже реализовано https://www.pinecone.io/learn/series/faiss/product-quantization/

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта