seo·matrix
← Все статьи

Эмбеддинги в SEO: шесть способов, которыми косинус врёт на живом корпусе

· 7 мин чтения · Автор Михаил Кузьмицкий

эмбеддингисемантическое SEOперелинковкаканнибализацияконтент-операции

Markdown-версия ↗

Сразу выжимка, если лонгрид не заходит: косинусная близость врёт на живом корпусе шестью способами — бойлерплейт с косинусом 1.0, магический порог, перекос длины, отсутствие направления, протухший кэш и невидимая трата, — и за каждым стоит мой прогон, который сначала отгрузил что-то неправильное.

Полез я как-то смотреть, почему линкер по корпусу из 52 страниц предлагает ссылку на дисклеймер. Открыл рейтинг кандидатов, а на вершине один и тот же юридический абзац, пересекающийся сам с собой. Подумал: ну ладно, косинус честно посчитал, что одинаковые тексты одинаковы, — и вот с этого «честно посчитал» и начинается список, потому что дальше нашлось ещё пять способов, которыми та же арифметика уводит не туда.

Где кончается поиск по словам

У поиска по словам есть жёсткий потолок, и он ближе, чем кажется: две страницы могут описывать одну тему при почти нулевом пересечении лексики.

Эмбеддинги в SEO: шесть способов, которыми косинус врёт на живом корпусе

Возьми пару: «самая дешёвая eSIM для Японии» и «предоплаченные тарифы для туристов в Токио». Они не совпадают ни в чём, и любой детектор дублей на пересечении слов назовёт их несвязанными.

Эмбеддинги снимают этот потолок: модель превращает текст в вектор, расположенный по смыслу, и близость становится обычной арифметикой.

Эта часть описана везде. Не описана следующая: шесть способов, которыми косинус вводит в заблуждение, как только направишь его на настоящий корпус, а не на демо.

Что эмбеддинги действительно дают

Три корпусных вопроса, на которые нельзя ответить строками, а векторами можно.

Пересказ без общих слов. Рерайт, дрейф перевода, два автора по одному заданию — все три случая невидимы для поиска по словам.

Скрытая каннибализация. Тело страницы A закрывает тему страницы B, хотя сама A заявляет о себе другое. Как тут работает направление, а не похожесть, я разбирал в тексте про каннибализацию, которую не видит Ahrefs.

Кандидаты на перелинковку и сироты. Какой абзац страницы A действительно ближе всего к теме страницы B, и какие страницы стоят вдали от всего, осиротев по смыслу даже при живых входящих ссылках.

Все три держатся на одном примитиве — косинусной близости, и именно поэтому её способы отказа важнее самой идеи.

Ошибка первая: бойлерплейт похож сам на себя

Самый дорогой урок из всех, и начался он с того самого дисклеймера. Сквозной абзац — дисклеймер, заметка о курсе валюты, призыв к действию — стоит на всех страницах байт в байт.

Одинаковый текст даёт одинаковый вектор — ВСЕГДА. Значит, каждая статья максимально похожа на любую другую через блок, в котором темы нет вообще, и линкер добросовестно ставит ссылку на дисклеймер.

Я наблюдал это на корпусе из 52 страниц: кандидаты на ссылки отсортированы по похожести, и вершину рейтинга занимал один и тот же юридический абзац, пересекающийся сам с собой раз за разом. Самое смешное, что формально косинус был прав!

Ошибка вторая: универсального порога не существует

Любой инструмент, называющий магическое число косинуса без указания модели и единицы текста, попросту гадает, потому что число едет от обоих параметров.

На моих корпусах пересказ на уровне абзаца лежит примерно от 0,92, поэтому порог для дублей стоит на 0,90 — сознательно консервативно, — а кандидаты на перелинковку берутся уже от 0,65.

Почему такая разница при одной и той же математике? Потому что у двух вопросов противоположная цена ошибки: ложный вердикт «дубль» склеивает или закрывает редиректом страницу, которая должна была жить, а слабое предложение ссылки стоит человеку трёх секунд на отказ.

Выбирай порог по цене ошибки и калибруй его на своём корпусе, а не по числу из чужой статьи (включая, разумеется, эту).

Ошибка третья: длина перекашивает результат

Тело на 1800 слов и ключевая фраза из пяти слов никогда не дадут высокий косинус, как бы идеально страница ни была про этот ключ.

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

Это, пожалуй, самый частый способ получить бессмыслицу от самодельного семантического аудита: сравнили тело страницы со строкой запроса, увидели 0,58 и объявили страницу нерелевантной. А кто проверил, что 0,58 для такой пары вообще низко?

Ошибка четвёртая: косинус не знает направления

Фраза «A похожа на B» симметрична, а настоящие отношения между страницами — нет.

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

Нужен второй замер — что страница заявляет о себе против того, что её тело реально покрывает, — и работает как раз разница между этими двумя величинами.

Ошибка пятая: вектор из кэша описывает старую страницу

Кэшировать эмбеддинги обязательно, тут спора нет: повторный прогон по неизменившемуся корпусу должен стоить ноль.

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

Симптом тут мерзкий именно тем, что его нет: ни ошибки, ни предупреждения, просто аудит, который бесконечно соглашается сам с собой. Сколько раз я на это смотрел и не видел? Точно не знаю, и это, наверное, худшая часть ответа.

Ошибка шестая: трата невидима

Эмбеддинг обычного сайта стоит центы, и проблема, как ты понимаешь, совсем не в сумме.

Проблема в том, что вызов прячется внутри аудита, который ощущается бесплатным, и не появляется в расходах, пока специально не пойдёшь искать. Я отгрузил три аудита, которые эмбеддили платные векторы без единой строчки учёта, и отчёт о расходах спокойно печатал итог, в который они не входили!

Учитывать надо в общей точке, где вызов реально происходит, и никогда в каждом вызывающем месте, потому что следующий аудит, который кто-то добавит, обязательно забудет, — а значит, проверка должна делать «забыть» невозможным.

Нужно ли это твоему сайту

Тут стоит остановиться и спросить прямо: а надо ли оно вообще?

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

Если страниц двести, то ответ меняется на «да», потому что глазами такой объём уже не охватить, а дубли и сироты растут сами, и тут вектор даёт то, чего не даст ни один список слов.

А если страниц целых две тысячи? Тогда без этого уже никак, но и цена ошибки заметно выше: плохой порог склеит сотню живых страниц за один заход, и вернуть их будет долго.

Отсюда простое правило: чем больше корпус, тем мягче должен быть порог для того, что нельзя откатить, — ровно обратно тому, что подсказывает первое чувство.

Рабочая схема

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

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

Держи два порога вместо одного, консервативный для необратимых вердиктов и мягкий для подсказок, которые смотрит человек, и сравнивай однородное с однородным, а при разной длине смотри на разрывы.

Учитывай трату в точке вызова, в одном месте, чтобы её нельзя было забыть. И последнее, самое важное: проверяй ноль подсадной уткой!

Почему без этого нельзя? Потому что «дублей не найдено» и «проверка молча не измерила ничего» выглядят в отчёте абсолютно одинаково, так что подложи известный дубль и убедись, что аудит его ловит, — иначе чистый результат не доказывает ничего.

Последний пункт — привычка, которая обобщается далеко за пределы эмбеддингов: тишина не равна чистоте, и аудит, который не может сказать, сколько он сейчас проверил, не закончен.

Мои семантические аудиты — поиск дублей, теневые сущности, разброс ссылочного веса — работают ровно на этом конвейере, и каждое из шести правил выше существует потому, что его нарушение сначала отгрузило что-то неправильное.

А если нужна форма всей системы, а не отдельного примитива, посмотри разбор про тематический авторитет и силосы — там видно, куда эти баллы ложатся в архитектуре сайта.

Если сжать всё это в одну мысль (выскажу субъективное, но выстраданное): вектор — это не ответ, а только вход в него. Он даёт число, но смысл этому числу придаёшь ты сам, и там же, на этом шаге, чаще всего и ломается вся затея.

Косинус, кстати, до сих пор считает мой дисклеймер самым интересным текстом на сайте. Не спорю — у него свои вкусы.

Частые вопросы

Что такое эмбеддинг на языке SEO?

Модель читает текст и возвращает список чисел — вектор, расположенный так, что тексты об одном и том же оказываются рядом. Когда каждая страница стала вектором, вопрос «эти две страницы про одно и то же?» превращается из вопроса о совпадении слов в арифметический (косинусная близость). В этом весь фокус: находятся страницы, у которых общая тема при почти нулевом пересечении лексики.

Какой порог косинуса означает «дубль»?

Универсального числа нет, и любой инструмент, называющий его без указания модели и единицы текста, гадает. На моих корпусах пересказ на уровне абзаца лежит примерно от 0,92, поэтому порог near-duplicate стоит на 0,90 — сознательно консервативно: ложный вердикт «склеить» стоит страницы. Кандидаты на перелинковку берутся от 0,65, потому что там пропуск дороже, чем слабое предложение, которое человек отклонит за три секунды.

Почему мой линкер начал ставить ссылки на дисклеймеры?

Потому что сквозной абзац — YMYL-дисклеймер, заметка о курсе, CTA — это один и тот же текст на всех страницах, значит один и тот же вектор, и он пересекается сам с собой на косинусе около 1,0. Каждая статья становится максимально похожа на каждую другую — через блок, в котором нет темы вообще. Лечится удалением абзацев, дословно повторяющихся на двух и более статьях, ДО вызова эмбеддера; заодно перестаёшь платить за эмбеддинг одного и того же абзаца N раз.

Заменяют ли эмбеддинги сбор семантики?

Нет, они отвечают на другой вопрос. Ключевые слова говорят, что люди набирают и сколько за этим спроса; эмбеддинги — как твои собственные страницы соотносятся между собой по смыслу. Эмбеддинги для корпусных вопросов (дубли, каннибализация, граф ссылок, разброс тем), данные спроса — для решения, что писать дальше.

Сколько стоит проэмбеддить корпус?

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

Помогла статья?
Запустить SEO/GEO с seo·matrix → или заявка без Telegram →

Комментарии

  • …

Комментарии модерируются.