Свойства пространства: близость, направления, потери

Векторные базы и эмбеддинги · Урок 2 / 20

Что вектор сохраняет и чего в нём нет

Полезно перестать думать о векторе как о сжатом тексте. Это не архив: восстановить исходную строку из 768 чисел нельзя. Вектор — координаты объекта на карте, построенной моделью, и на этой карте сохраняется ровно одно свойство — взаимное расположение. Абсолютные значения координат ничего не значат сами по себе, значат только соотношения между точками.

Что сохраняется

  • Тематическая близость. Два текста про доставку окажутся рядом, даже если написаны разными словами. Это основной эффект, ради которого всё строится.
  • Грубая структура доменов. Тексты о финансах, медицине и коде образуют различимые области пространства; кластеризация по эмбеддингам действительно находит темы.
  • Некоторые направления. В пространстве есть устойчивые оси — например, сдвиг от нейтральной формулировки к эмоциональной, или от общего к частному. Знаменитый пример «король минус мужчина плюс женщина» работает грубо и не на всех парах, но сама идея, что разность векторов кодирует отношение, подтверждается на больших выборках.

Что теряется

  • Отрицание. «Возврат возможен» и «возврат невозможен» отличаются одной морфемой и почти не отличаются вектором. Для FAQ по правилам это катастрофа.
  • Числа и величины. «Срок 14 дней» и «срок 40 дней» модель считает почти одинаковыми: она видит тему, а не значение.
  • Порядок аргументов. «Перевод со счёта A на счёт B» и обратный перевод часто дают близость выше 0.95.
  • Редкие сущности. Имена, коды, артикулы попадают в вектор как шум, если модель их не видела при обучении.
пары, где близость обманывает (типичные значения косинуса)
  «услуга доступна» / «услуга недоступна»          ~0.93
  «оплата картой» / «оплата криптовалютой»         ~0.78
  «инструкция для Windows» / «... для macOS»       ~0.90
  «отчёт за 2023» / «отчёт за 2024»                ~0.97

Практический вывод

Если различие, критичное для вашей задачи, выражается одним словом или одной цифрой, векторный поиск его не поймает — независимо от модели. Такие различия выносят в метаданные и фильтры: год отчёта становится полем, а не частью текста; платформа инструкции — тегом; статус услуги — булевым признаком. Эмбеддинг остаётся ответственным за тему, точность обеспечивает фильтр. Это разделение труда, а не недостаток технологии.

Как это проверяют

Проверка занимает полчаса. Берёте 20 пар из своей области, где вы точно знаете ответ, считаете близость и смотрите на распределение. Полезен не абсолютный уровень, а разрыв: если пары «одно и то же разными словами» дают в среднем 0,82, а пары «разное на одну тему» — 0,79, разделить их порогом невозможно, и вся дальнейшая работа с этой моделью на этих данных будет борьбой с шумом. Разрыв в 0,15 и больше означает, что пространство подходит задаче.

Инсайт. Близость векторов монотонна по теме, но не монотонна по истинности. Два взаимоисключающих утверждения на одну тему — самые близкие соседи, какие вообще бывают в коллекции.
Частая ошибка. Проверять качество пространства на очевидных парах вроде «кошка» и «котёнок». Такие пары проходят у любой модели и не дают информации. Тестируйте на парах, которые различает только ваш домен.
Про-совет. Постройте таблицу из 20 пар «похоже для модели, но разное для задачи» на своих данных. Она станет вашим ранним детектором при смене модели: если пара внезапно поменяла знак, что-то изменилось не в ту сторону.

Шпаргалка

  • Вектор сохраняет взаимное расположение, а не содержание — восстановить текст нельзя.
  • Отрицание, числа и направление отношения в эмбеддинге почти не выражены.
  • Критичные для задачи различия выносите в метаданные, а не надейтесь на модель.
  • Тестовые пары берите из своего домена, а не из учебников.
1. Почему пара «услуга доступна» и «услуга недоступна» получает высокую косинусную близость?
2. Как правильно обеспечить различение отчётов за 2023 и 2024 год?
3. Что означает утверждение, что эмбеддинг не является сжатием текста?
Задание — проверяет ИИ

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

← Назад

🔒 Ответьте на вопрос верно, чтобы перейти к следующему уроку.

Свойства пространства: близость, направления, потери — Векторные базы и эмбеддинги — Skilvy