Выбор метрик расстояния (cosine, L2, dot)
Узнайте, когда выбирать расстояние cosine, L2 (евклидово) или dot-product и почему большинство моделей эмбеддингов предпочитает cosine.
«Выбор метрик расстояния (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 — локальная установка не требуется.
Все уроки этого курса
- Pinecone, Weaviate, Qdrant: сравнение
- Фильтрация метаданных для гибридного поиска
- Обновление и удаление векторов
- Выбор метрик расстояния (cosine, L2, dot)