1. Поднял PostgreSQL 17 с расширением pgvector в контейнере.
2. Написал простой код, который рассчитывает эмбендинги для 2-х предложений и записывает результаты в БД.
При этом использовал библиотеку fastembed.
3. Рассчитал косинусное расстояние между запросом пользователя и эмбендингами в БД.
Таким образом нашел наиболее релевантный кусок текста, который следует отдать LLM в качестве контекста.
4. Повторил упражнение заменив используемую модель в fastembed на мультиязычную.
5. Сравнил результаты. Разница в расстояниях оказалось больше между двумя предложениями.
Могу предположить, что это хорошо. То есть нерелевантное предложение получило большее косинусное расстояние.
Вот рассчитанные значения для нерелевантного предложения:
1) модель по-дефолту:
distance=0.26260019913912882) мультиязычная модель:
distance=0.578577122859318Для информации
Чем больше косинусное расстояние, тем меньше подходит данный кусок текста.
P.s.
Не успел попробовать кастомную модель, используя
TextEmbedding.add_custom_model(). Хз, работает или нет. Хочу попробовать взять модель из рейтинга https://huggingface.co/spaces/mteb/leaderboardКакая сейчас лучшая модель для русского языка? Желательно небольшая.