Вопрос с собеседования · AI и LLM

Как найти похожие тексты по эмбеддингам — что такое косинусное сходство?

JuniorЭмбеддинги и векторный поиск
Ещё спрашивают так:
  • Чем косинусное сходство отличается от евклидова расстояния?
Коротко

Косинусное сходство — косинус угла между векторами: 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 — ближе по смыслу
  • ✗Сходство можно сравнивать между векторами разных моделей эмбеддингов

Разбор темы

Связанные вопросы

Партнёр платформы

Разбор собеседования с sotto

После собеседования sotto разбирает разговор: оценка, каждый вопрос — хорошо, частично или слабо, чего не хватило в ответе и над чем поработать к следующему разу. Первые 30 минут бесплатно.

Разбор собеседования