AI Agents · Урок

Выбор метрик расстояния (cosine, L2, dot)

Узнайте, когда выбирать расстояние cosine, L2 (евклидово) или dot-product и почему большинство моделей эмбеддингов предпочитает cosine.

Урок 4 из 415 шагов

«Выбор метрик расстояния (cosine, L2, dot)» — бесплатный урок AI Agents на CoddyKit. Это урок 4 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения AI Agents, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс AI Agents содержит 4 уроков всего.

Части этого урока еще не переведены и отображаются на английском.

Три распространённые метрики

Векторные БД позволяют выбрать метрику расстояния. Чаще всего встречаются три:

  • Сходство cosine — угол между векторами
  • Скалярное произведение dot — проекция одного вектора на другой
  • Евклидово расстояние (L2) — расстояние по прямой

cosine

Диапазон: от -1 до 1. Чем выше значение, тем больше сходство.

import numpy as np
def cosine(a, b):
    return np.dot(a, b) / (np.linalg.norm(a) * np.linalg.norm(b))

Скалярное произведение dot

Диапазон: от -бесконечности до +бесконечности. Чем выше значение, тем больше сходство.

def dot(a, b):
    return np.dot(a, b)

# Equivalent to cosine when both vectors are unit-normalized.

Евклидово расстояние (L2)

Диапазон: от 0 до +бесконечности. Чем ниже значение, тем больше сходство.

def l2(a, b):
    return np.linalg.norm(np.array(a) - np.array(b))

Что выбрать?

Для текстовых эмбеддингов принято следующее:

  • OpenAI text-embedding-3 — cosine (векторы предварительно нормализованы)
  • Cohere — cosine
  • Sentence Transformers / BGE — обычно cosine, проверьте карточку модели

Если сомневаетесь, выбирайте cosine.

При нормализации dot равен cosine

Если |a| = |b| = 1, то cos(a,b) = a . b. Операция dot выполняется быстрее (без деления) — в промышленных системах часто используют dot для заранее нормализованных векторов.

Когда используется L2

Некоторые исследовательские модели (старые варианты Sentence-BERT, эмбеддинги изображений) обучены с расстоянием L2 и работают с ним лучше. Всегда проверяйте карточку модели.

Почему это важно для индекса

Структура индекса (HNSW, IVF, FAISS) создаётся для SPECIFIC метрики. Изменение метрики после индексирования обычно означает полную перестройку индекса с нуля.

Setting Metric in Pinecone

from pinecone import ServerlessSpec
pc.create_index(
    name='docs',
    dimension=1536,
    metric='cosine',   # or 'dotproduct' or 'euclidean'
    spec=ServerlessSpec(cloud='aws', region='us-east-1')
)

Setting Metric in Qdrant

from qdrant_client.models import VectorParams, Distance
client.create_collection(
    collection_name='docs',
    vectors_config=VectorParams(size=1536, distance=Distance.COSINE)
)

Несогласованные метрики в разных системах

Если позже вы выполняете повторное ранжирование с помощью кросс-энкодера, у него собственная шкала оценок. Не объединяйте метрики в одну составную оценку без предварительной нормализации.

Визуализация различий

Для двух единичных векторов:

  • cos = 1, L2 = 0 -> идентичны
  • cos = 0.5, L2 ~ 1 -> связаны
  • cos = 0, L2 ~ sqrt(2) -> ортогональны
  • cos = -1, L2 = 2 -> противоположны

Выполните нормализацию один раз заранее

Нормализация при загрузке стоит дёшево (одно деление). Она обеспечивает совместимость с cosine / dot и избавляет от последующей нормализации для каждого запроса.

vec = vec / np.linalg.norm(vec)

Метрика по умолчанию

Для текстовых эмбеддингов OpenAI какая метрика расстояния используется по умолчанию?

Итоги

cosine для текста. Выполните нормализацию один раз заранее, а для скорости используйте скалярное произведение dot. Задайте метрику при создании индекса — её последующее изменение означает перестройку.

Можно начать бесплатно

Изучай AI Agents с ИИ-репетитором — бесплатно

Пиши и запускай код прямо в браузере, получай мгновенную помощь от ИИ-репетитора 24/7 и продолжи учиться на сайте или в приложении.

Курсы
60
Уроки
239

Часто задаваемые вопросы

Урок «Выбор метрик расстояния (cosine, L2, dot)» бесплатный?

Да — полный текст урока «Выбор метрик расстояния (cosine, L2, dot)» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс AI Agents, подпишись на CoddyKit PRO. Курс AI Agents содержит 4 уроков всего.

Чему я научусь в уроке «Выбор метрик расстояния (cosine, L2, dot)»?

Узнайте, когда выбирать расстояние cosine, L2 (евклидово) или dot-product и почему большинство моделей эмбеддингов предпочитает cosine. Ты практикуешь AI Agents с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать AI Agents?

Предыдущий опыт не требуется. AI Agents на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 4 из 4.

Сколько времени занимает урок «Выбор метрик расстояния (cosine, L2, dot)»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке AI Agents?

Да. Каждый урок AI Agents включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Pinecone, Weaviate, Qdrant: сравнение
  2. Фильтрация метаданных для гибридного поиска
  3. Обновление и удаление векторов
  4. Выбор метрик расстояния (cosine, L2, dot)
← Назад к AI Agents