Как найти похожие тексты по эмбеддингам — что такое косинусное сходство?
- Чем косинусное сходство отличается от евклидова расстояния?
Косинусное сходство — косинус угла между векторами: 1 — направлены одинаково (тексты близки по смыслу), около 0 — не связаны. Считается как скалярное произведение, делённое на произведение длин; для нормализованных векторов (длина 1) это просто скалярное произведение. Чтобы найти похожие тексты, кодируют запрос той же моделью, что и документы, и берут документы с наибольшим сходством.
- Для нормализованных векторов ранжирование по косинусу и по евклидову расстоянию совпадает
- Абсолютные значения сходства зависят от модели — порог «похоже» подбирают на примерах
- Векторы разных моделей несравнимы
А ещё Применения: поиск, дубли обращений, кластеризация, рекомендации похожего
Подробно
Формула: cos(a, b) = (a · b) / (|a| · |b|).
Пример на Python:
import numpy as np
def cos(a, b):
return a @ b / (np.linalg.norm(a) * np.linalg.norm(b))
Поиск дублей обращений. Закодировать обращения, для каждого найти ближайшие, отметить пары со сходством выше порога. Порог подбирают, просмотрев пары на границе.
Ошибки новичков: кодировать запрос и документы разными моделями, сравнивать числа сходства между моделями, не нормализовать векторы, когда база ожидает скалярное произведение.
Что хотят услышать
- Определение и формула.
- Нормализация и скалярное произведение.
- Одна модель для запроса и документов, подбор порога.
Проверьте себя
Один верный вариант. Подумайте, потом откройте ответ.
Показать варианты и ответ
- ✗Это доля совпадающих слов в двух текстах
- ✗Скалярное произведение векторов без нормировки; его значения можно сравнивать между разными моделями эмбеддингов
- ✓Косинус угла между векторами: ближе к 1 — ближе по смыслу
- ✗Сходство можно сравнивать между векторами разных моделей эмбеддингов
Разбор темы
- RAG — ответы по своим документам
Как модель отвечает по документам компании — эмбеддинги, разбиение на фрагменты, векторный и гибридный поиск, реранкинг.
Связанные вопросы
Разбор собеседования с sotto
После собеседования sotto разбирает разговор: оценка, каждый вопрос — хорошо, частично или слабо, чего не хватило в ответе и над чем поработать к следующему разу. Первые 30 минут бесплатно.