Перейти к содержанию
Публикация AiManual

Как Perplexity выбирает текст с цитируемых страниц: разбор 1355 отсылок и практические выводы для авторов

Разбор 1355 отсылок Perplexity показал: модель пересказывает страницы, а не копирует их. Объясняем, зачем делать абзацы по 30-50 слов самодостаточными и почему

Коротко

Что будет в материале

  1. 01

    Что именно Perplexity берёт со страницы: главный ответ

  2. 02

    Как устроено исследование: 20 промптов, 60 ответов и 1355 отсылок

  3. 03

    Какой фрагмент страницы срабатывает: портрет рабочего пассажа

  4. 04

    Практические выводы для авторов: как писать, чтобы Perplexity цитировал

Perplexity не копирует текст с цитируемых страниц, а пересказывает его. Из 1355 отсылок в 60 собранных ответах 948 вели на страницы, которые ещё открывались, и только на 448 из них нашёлся пассаж, покрывающий минимум треть слов утверждения. Почти дословное совпадение, когда в пассаже совпадало 80% слов и больше, дали 12 отсылок из 948, а медианное покрытие составило 0,286.

Если сжать это до одной мысли: модель берёт со страницы не текст, а факт. Выигрывают абзацы, которые понятны сами по себе и не требуют соседних предложений. Переписывать страницу целиком под Perplexity смысла мало, а вот отдельные фрагменты на 30-50 слов работают.

Что именно Perplexity берёт со страницы: главный ответ

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

Пересказ, а не копирование: что показывают цифры

Метрика, на которую опирается разбор автора под ником ig_novvv, называется покрытием. Это доля слов утверждения из ответа, которые нашлись в конкретном пассаже на странице-источнике. Порог для зачёта: минимум треть слов, то есть 0,33 и выше.

Расклад получился такой. Проверить удалось 948 отсылок из 1355, остальные ссылки к моменту проверки уже не открывались. На 448 страницах нашёлся подходящий пассаж. Планку в 80% совпавших слов, то есть почти дословный перенос, преодолели всего 12 отсылок. Медианное покрытие по проверенной выборке: 0,286.

ПоказательЗначение
Отсылок в 60 ответах1355
Ссылок на ещё открывающиеся страницы948
Страниц с пассажем, покрывающим минимум треть слов утверждения448
Отсылок с совпадением от 80% слов12
Медианное покрытие0,286
Задействовано пассажей на сработавшей странице (медиана)2 из 85
Медианная длина сработавшего пассажаоколо 49 слов
Доля текста страницы (медиана / среднее)6,4% / 11,6%

Что это значит на практике. Гнаться за дословным совпадением бессмысленно: Perplexity всё равно переформулирует. Работает другое: чтобы страница закрывала утверждение, её абзац должен содержать все смысловые элементы этого утверждения. Если в абзаце есть половина мысли, а остальное размазано по соседним разделам, шанс попасть в ответ падает.

Почему в API нет полного текста страницы

Через Perplexity API видно, какие URL модель поставила в источники, но не видно, что именно со страницы ушло в ответ. У каждого источника в ответе Search API возвращается пять полей: title, url, date, last_updated и snippet. Последнее описано как короткая выдержка из статьи, относящаяся к запросу. Поля с полным текстом страницы, который получила модель, в ответе нет.

Отдельная путаница в именах. sources_cited, которое встречается в логе автора замера, это его собственное нормализованное поле, а не поле сервиса. В самом API источники приходят как search_results и citations. Если пишете свой сборщик данных, не ищите sources_cited в ответе API, его там не будет.

Практический эффект: восстановить, какой кусок страницы ушёл в модель, можно только косвенно, сопоставляя текст ответа с HTML сохранённой страницы. Без сохранённого HTML проверка невозможна.

Как устроено исследование: 20 промптов, 60 ответов и 1355 отсылок

Схема замера: 20 промптов через Perplexity API на модели sonar-pro, по три повтора на каждый, итого 60 ответов. Дальше каждая номерная отсылка [N] в тексте ответа связывалась с предложением, к которому относится, и с HTML страницы по этому URL. Пассажем в методике назывался один структурный элемент: абзац, пункт списка или ячейка таблицы. Такой гранулярности достаточно, чтобы понять, какой кусок текста соответствует утверждению.

Оговорка по статусу материала: ниже разбор чужого исследования, а не тест редакции. Все числа взяты из публикации автора и его снимка лога, собственных прогонов мы не делали.

Метрика покрытия: как считали совпадение

Для каждой пары «утверждение, пассаж» считалась доля слов утверждения, найденных в пассаже. Стемминг и нормализация формулировок подробно не описаны, поэтому метрика ловит пересечение по словам, а не по смыслу. Покрытие 0,286 не означает, что в пассаже ровно 28,6% смысла, оно означает пересечение словарного состава.

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

Ограничения замера и две ошибки в коде

В собственном коде автор нашёл две ошибки, и обе заметно меняли результаты. Первая: неверный знаменатель в метрике сходства, из-за чего доля считалась не от того количества слов. Вторая: в границы пассажа попадал закрывающий тег </div>, то есть разметка влияла на разбиение текста на куски.

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

Какой фрагмент страницы срабатывает: портрет рабочего пассажа

На сработавшей странице задействовано медианно два пассажа из 85 возможных, типичная длина фрагмента около 49 слов. По количеству кусков на это приходится 2% страницы, по словам больше: медиана 6,4% текста при среднем 11,6%. Сработавший пассаж длиннее среднего пассажа на той же странице.

Почему длина 30-50 слов - рабочая

Медиана в 49 слов и ориентир 30-50 слов почти совпадают, и логика тут простая. Такой абзац успевает договорить мысль: в нём есть объект, действие и условие. При этом он не разрастается на три экрана, где половина слов уже не нужна для ответа на конкретный вопрос.

Проверка занимает секунду: если вырвать абзац из страницы и показать отдельно, он отвечает на какой-то вопрос? Пример на формулировках из публикации. Слабая версия: «Она относится к запросу». Сильная: «Поле snippet содержит короткую выдержку из статьи, относящуюся к запросу». Второй вариант понятен без предыдущих абзацев, первый рассыпается.

Распределение по документу: не только начало

Рабочие фрагменты встречались по всей длине документа, а не собирались в первом экране. Миф про «первые 200 слов» здесь не подтверждается: страница может отдать цитату из середины и из конца, если там есть самодостаточный абзац. Практический вывод: каждому крупному разделу стоит давать хотя бы один абзац, который выдержит отрыв от контекста. Ставка только на лид оставляет большую часть текста неиспользованной.

Практические выводы для авторов: как писать, чтобы Perplexity цитировал

Главная рекомендация из разбора: делать самодостаточными отдельные абзацы на 30-50 слов, а не переписывать страницу целиком. Пересказ означает, что выигрывает не литературность, а полнота фрагмента.

Самодостаточность абзаца: чек-лист

  1. В абзаце есть подлежащее и сказуемое, понятные без соседних предложений.
  2. Нет местоимений и отсылок, требующих предыдущего абзаца: «он», «этот метод», «как сказано выше».
  3. Есть конкретика: название инструмента, параметра, число, единица измерения.
  4. Длина примерно 30-50 слов, мысль закончена точкой.
  5. Абзац целиком отвечает на один вопрос, а не начинает ответ.

Пример переписывания по этим пунктам. Плохо: «Он ограничивает длину ответа и влияет на расход. Об этом говорилось выше». Здесь «он» неизвестен, а отсылка бесполезна. Хорошо: «Параметр длины ответа в Perplexity API ограничивает, сколько токенов вернёт модель, и от этого зависит расход». Второй вариант живёт отдельно от страницы.

Полезно дублировать контекст там, где текст смотрит назад. Вместо отсылки «как разобрано выше» повторите суть одним предложением, а потом добавляйте детали. Такой абзац можно вырвать из текста без потери смысла, и именно такие фрагменты попадают в выборку сработавших пассажей.

Что не работает: попытки копирования и переспам

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

Что делать исследователям: сохранение HTML и воспроизводимость

Через месяц после прогона почти треть ссылок из ответов вела на мёртвые страницы. Причины разные: переезды, удаление материалов, закрытие доступа. Для исследования это критично: проверить утверждение по ссылке уже нельзя.

Почему ссылки умирают и как это влияет на выводы

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

Как логировать источники через Perplexity API

Минимальный набор для воспроизводимости: сырой ответ API целиком и HTML каждой страницы-источника на момент прогона. В ответе сохраняются title, url, date, last_updated и snippet. Помните, что snippet это короткая выдержка, а не текст, ушедший в модель, и архив HTML закрывает этот пробел. Источники в ответе приходят как search_results и citations, имена стоит зафиксировать в схеме лога заранее, чтобы потом не выяснять, откуда взялось поле.

Границы применимости: что эти цифры не доказывают

Замер охватывает 20 промптов, 60 ответов и одну модель, sonar-pro. Переносить выводы на другие модели Perplexity, на сторонние поисковые ассистенты и на другие языки без отдельной проверки нельзя. Русскоязычные страницы в этом замере отдельно не измерялись.

Медианы не описывают каждый конкретный случай: 2% кусков и 6,4% текста это середина распределения, а не правило для отдельной страницы. Ориентир в 30-50 слов тоже не стандарт: короткий абзац на 20 слов может содержать законченную мысль, а рыхлый на 60 слов не покроет ничего.

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

Итог: что делать автору уже сегодня

  1. Разбить текст на самодостаточные абзацы по 30-50 слов, каждый с законченной мыслью.
  2. Убрать местоимения и отсылки, которые требуют соседних абзацев.
  3. Размещать такие абзацы по всей длине материала, не только в начале.
  4. Не подгонять формулировки под дословное совпадение: Perplexity пересказывает.
  5. Исследователям сохранять HTML источников и сырые ответы API в момент прогона.

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

Подписаться на канал