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 слов, а не переписывать страницу целиком. Пересказ означает, что выигрывает не литературность, а полнота фрагмента.
Самодостаточность абзаца: чек-лист
- В абзаце есть подлежащее и сказуемое, понятные без соседних предложений.
- Нет местоимений и отсылок, требующих предыдущего абзаца: «он», «этот метод», «как сказано выше».
- Есть конкретика: название инструмента, параметра, число, единица измерения.
- Длина примерно 30-50 слов, мысль закончена точкой.
- Абзац целиком отвечает на один вопрос, а не начинает ответ.
Пример переписывания по этим пунктам. Плохо: «Он ограничивает длину ответа и влияет на расход. Об этом говорилось выше». Здесь «он» неизвестен, а отсылка бесполезна. Хорошо: «Параметр длины ответа в 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 слов не покроет ничего.
Две ошибки в коде были исправлены, но отдельные числа публикации могли сдвинуться при пересчёте. Детали методики, включая разбор ошибок и таблицы, стоит сверять по исходной публикации и сырым данным автора, а не по пересказу. Как это выглядит на практике, разбиралось в материале про открытый снимок данных и пересчёт метрики: показать сырые данные и ограничения полезнее, чем настаивать на одном красивом числе.
Итог: что делать автору уже сегодня
- Разбить текст на самодостаточные абзацы по 30-50 слов, каждый с законченной мыслью.
- Убрать местоимения и отсылки, которые требуют соседних абзацев.
- Размещать такие абзацы по всей длине материала, не только в начале.
- Не подгонять формулировки под дословное совпадение: Perplexity пересказывает.
- Исследователям сохранять HTML источников и сырые ответы API в момент прогона.
Проверка занимает один проход: скопируйте абзац в отдельный файл и посмотрите, понятен ли он без остальной страницы. Если да, фрагмент готов попасть в ответ. Оптимизация под Perplexity упирается в ясность и полноту каждого куска текста, а почти треть ссылок, умирающих за месяц, напоминает, что доказательства нужно сохранять сразу.