alterna ai
ALTERNA AI / ГЛАВА 13 · 03

13.3 Ищем ближайшие направления

На предыдущей странице: как меняются векторные представления.

Используем уже знакомое сравнение векторов из главы 01. Расчёт выполняется в полном пространстве, а не по расстоянию на картинке.

Таблица E хранит строку координат для каждого ID. Эти координаты обучаются. Знакомый cosine теперь используется для конкретной задачи поиска близких представлений.

Сравниваем векторы, не названия

Для ненулевых q,d cosine=qᵀd/(||q||₂||d||₂). Поиск вычисляет score для каждого кандидата и сортирует по убыванию; при одинаковых scores используем ID как детерминированный tie-break. Сам запрос исключается из списка соседей.

В ручном fixture «кот»=[1,0,0], «пёс»=[.9,.1,0], «рыба»=[0,0,1]. Cosine кот/пёс=.9/√.82≈.993884, кот/рыба=0. Это заданная геометрия, не доказательство того, что модель самостоятельно выучила близость животных.

Эксперимент. Измените третью координату одного кандидата, наблюдая полный3Dscore. Затем переключите 2D-проекцию графика. Ranking не должен тайно пересчитываться по двум видимым координатам. Для нулевого вектора cosine не определён; такой кандидат помечается отдельно, не получает выдуманный0.

Длина q может содержать информацию, которую cosine удаляет. В некоторых задачах используется dot, Euclidean distance или обученная metric. Нельзя считать cosine универсальным определением смысла. Полный перебор здесь точен и дешёв; ANN-индекс для большого корпуса — отдельное инженерное решение будущего RAG-блока.

from math import sqrt
similarity=.9/sqrt(.9**2+.1**2)
assert abs(similarity-.9938837346736189)<1e-12

Код повторяет только что разобранные операции. Полный проверяемыйPython-пример главы доступен отдельным файлом; показанный короткий фрагмент не заменяет его реализацию.

Визуализация не подменяет исходную метрику.

Рисунок показывает только часть пространства. Как этот вопрос продолжает полученный результат?

Python-примеры главы 13 Академическая база →