Свойства пространства: близость, направления, потери
Векторные базы и эмбеддинги · Урок 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 и больше означает, что пространство подходит задаче.
Шпаргалка
- Вектор сохраняет взаимное расположение, а не содержание — восстановить текст нельзя.
- Отрицание, числа и направление отношения в эмбеддинге почти не выражены.
- Критичные для задачи различия выносите в метаданные, а не надейтесь на модель.
- Тестовые пары берите из своего домена, а не из учебников.
Возьмите свою предметную область и составьте таблицу из 12 пар текстов, где пара тематически близка, но для вашей задачи означает разное: доступно и недоступно, две версии продукта, два периода, два тарифа. Для каждой пары запишите, какое решение сломается, если поиск их перепутает, и куда вы вынесете различающий признак — в метаданные, в текст фрагмента или в отдельный фильтр. Приложите итоговую таблицу и три вывода.