- BrainTools - https://www.braintools.ru -
Когда говорят про оптимизацию под ИИ, обычно представляют работу с текстом на сайте. Но у меня раз за разом всплывает более базовая проблема: модель вообще не понимает, что за компания стоит за названием. Путает её с иностранной компанией с похожим названием, приписывает чужие продукты, называет не тот город. Это провал не контента, а цифрового следа компании (entity footprint), и его можно измерить.
Поисковые системы и языковые модели работают со стоящей за названием компанией: «компания X из города Y, делает Z, связана с людьми A и B». Этот образ собирается из множества сигналов — разметки на сайте, упоминаний во внешних источниках, справочников, графа знаний. Если сигналы противоречивы или их мало, модель либо путается, либо вообще не узнаёт компанию.
Цифровой след — это то, насколько плотно и однозначно компания прописана в источниках, которые модель видела. Проверять его надо не наугад, а замером: задать моделям одни и те же вопросы про компанию и посмотреть, насколько ответы совпадают между собой и с правдой.
Собственные сигналы. Что компания сообщает о себе сама: разметка Organization/Person в JSON-LD, поле sameAs со ссылками на профили, единообразие имени и категории по страницам.
Внешние подтверждения. Совпадает ли рассказ сайта с тем, что о компании пишут снаружи: справочники, отраслевые каталоги, деловые СМИ, «Википедия».
Что реально знает модель. Финальная проверка: опросить несколько LLM про компанию и измерить разброс ответов.
Первые два слоя — статический аудит разметки и источников. Третий — динамический замер, ради него всё и затевается.
Начинаю с JSON-LD. Минимум, который должен быть у компании, — блок Organization с однозначной привязкой и sameAs:
{
"@context": "https://schema.org",
"@type": "Organization",
"name": "…",
"url": "https://…",
"description": "…",
"foundingLocation": "…",
"sameAs": [
"https://ru.wikipedia.org/wiki/…",
"https://www.linkedin.com/company/…",
"профили в отраслевых справочниках"
]
}
Поле sameAs здесь ключевое: оно связывает вашу страницу с уже известными модели узлами (профили, «Википедия», справочники) и помогает не спутать вашу компанию с похожей по названию. Спецификация поля — в документации [1]schema.org [2].
Быстрая проверка, что разметка вообще парсится, — вытащить все JSON-LD блоки со страницы:
import json, requests
from bs4 import BeautifulSoup
def extract_jsonld(url):
html = requests.get(url, timeout=20).text
soup = BeautifulSoup(html, "html.parser")
blocks = []
for tag in soup.find_all("script", type="application/ld+json"):
try:
blocks.append(json.loads(tag.string))
except (json.JSONDecodeError, TypeError):
pass # битый JSON-LD — тоже находка, помечаем отдельно
return blocks
data = extract_jsonld("https://пример-сайта")
types = [b.get("@type") for b in data if isinstance(b, dict)]
print("Найдены типы:", types)
Если Organization/Person нет, битый JSON или sameAs пустой — это первая дыра. Модели неоткуда взять однозначную привязку.
Дальше проверяю, подтверждается ли рассказ сайта снаружи. Логика [3] простая: модель редко верит одному сайту, ей нужны сходящиеся показания из нескольких источников. Я собираю по компании набор внешних упоминаний и сверяю ключевые факты — категория, город, ключевые продукты, связанные лица — между сайтом и внешними площадками.
Здесь важен не объём, а согласованность. Если сайт говорит одно, а справочник — другое (устаревшее название, другой профиль деятельности), модель получает конфликт [4] сигналов и либо выбирает внешний источник, либо путается. Расхождения в этом слое — вторая типичная дыра.
Я опрашиваю несколько моделей одинаковым набором вопросов про компанию и смотрю на разброс. Вопросы — фактические, с проверяемым ответом: чем занимается, где находится, какие продукты, кто основатели.
Схема замера:
QUESTIONS = [
"Чем занимается компания {name}?",
"В каком городе находится {name}?",
"Какие продукты или услуги у {name}?",
"С какими людьми связана компания {name}?",
]
def audit_entity(name, models, ask_fn):
"""ask_fn(model, prompt) -> str. Возвращает матрицу ответов."""
matrix = {}
for q in QUESTIONS:
prompt = q.format(name=name)
matrix[q] = {m: ask_fn(m, prompt) for m in models}
return matrix
Дальше по матрице считаю две вещи:
Согласованность — насколько ответы моделей совпадают между собой по ключевому факту. Пять разных версий того, чем занимается компания, — это провал цифрового следа.
Точность — совпадает ли ответ с правдой. Модель может уверенно и согласованно ошибаться, если во внешних источниках закрепилась неверная версия.
Отдельно ловлю два симптома. Первый — модель выдумывает: несуществующие продукты или связь не с теми людьми. Второй — подмена: на вопрос про компанию модель отвечает про иностранную фирму с похожим названием. И то, и другое лечится не текстом на сайте, а расчисткой внешних сигналов и однозначной привязкой через sameAs.
Компания распознана и описана верно — ответы моделей согласованы и верны. Дальше работаем над полнотой (продукты, свежесть).
Компания распознана, но описана неверно — ответы согласованы между собой, но неверны. Значит, во внешних источниках закрепилась неправильная версия; чиним источники.
Компания не распознана — модели путают её с другой фирмой или отвечают общими словами. Самый тяжёлый случай: сначала нужен базовый след — справочники, «Википедия», однозначная привязка, — а уже потом тонкая настройка.
Полезный внешний фреймворк по этой теме — разбор аудита цифрового следа (entity footprint) от Search Engine Land [5]. Он про ту же логику «сайт → schema → внешние подтверждения» — я лишь добавил к нему динамический замер моделями.
Чаще всего проблема не в том, что на сайте мало текста, а в том, что след размыт: разметки нет или она битая, sameAs пустой, внешние источники разноголосят. Модель в такой ситуации ведёт себя предсказуемо плохо — путает, придумывает несуществующее, подменяет другой фирмой.
Хорошая новость: цифровой след измерим и управляем. Начните с трёх вопросов пяти моделям про свою компанию и посмотрите на разброс ответов. Если версий столько же, сколько моделей, — работать надо не над текстом, а над тем, чтобы у компании вообще появился однозначный след.
Автор: ig_novvv
Источник [6]
Сайт-источник BrainTools: https://www.braintools.ru
Путь до страницы источника: https://www.braintools.ru/article/33892
URLs in this post:
[1] документации : https://schema.org/sameAs
[2] schema.org: http://schema.org
[3] Логика: http://www.braintools.ru/article/7640
[4] конфликт: http://www.braintools.ru/article/7708
[5] разбор аудита цифрового следа (entity footprint) от Search Engine Land: https://searchengineland.com/how-to-audit-your-ai-entity-footprint-483524
[6] Источник: https://habr.com/ru/articles/1066020/?utm_source=habrahabr&utm_medium=rss&utm_campaign=1066020
Нажмите здесь для печати.