Когда мы ищем что-то в Google, мы получаем список ссылок. Когда спрашиваем у ChatGPT – получаем готовый ответ, но без источников. Perplexity с самого начала пытался совместить оба подхода: давать развёрнутый ответ и при этом показывать, откуда взялась каждая деталь.
Но чтобы это работало быстро и точно, им пришлось построить собственную поисковую инфраструктуру. Недавно команда опубликовала подробный разбор того, как устроен их Search API – система, которая обрабатывает около 200 миллионов запросов ежедневно и работает не для человека напрямую, а для языковой модели.
Что значит «поиск для ИИ»
Классический поиск заточен под то, чтобы показать человеку релевантные страницы. ИИ-моделям нужно другое: не просто найти документы, а подготовить для них контекст – набор фрагментов текста, из которых модель сможет сформировать ответ.
Звучит просто, но на практике возникает несколько проблем:
- Модель не может прочитать весь интернет – нужно выбрать самое важное.
- Информация должна быть свежей, особенно если речь о новостях или быстро меняющихся данных.
- Контекст должен быть достаточно разнообразным, чтобы модель могла сопоставить разные точки зрения или источники.
- Всё это должно работать быстро – пользователь не готов ждать.
Perplexity решает эту задачу через гибридный подход: сначала ищут документы по ключевым словам и семантическому сходству, затем отбирают из них самые полезные фрагменты и передают модели.
Как это работает изнутри
Процесс состоит из нескольких этапов. Сначала запрос пользователя разбирается на части: система пытается понять, что именно ищут – свежую новость, факт, сравнение продуктов или что-то ещё. Это помогает выбрать правильную стратегию поиска.
Дальше запускается поиск по двум направлениям одновременно. Первое – классическое: поиск по ключевым словам с учётом релевантности и свежести. Второе – семантическое: система ищет тексты, которые похожи по смыслу, даже если в них нет точных совпадений слов из запроса.
Результаты этих двух подходов объединяются. Но найденных документов обычно слишком много, чтобы передать всё модели. Поэтому следующий шаг – ранжирование: система оценивает каждый фрагмент по тому, насколько он полезен для ответа на конкретный вопрос.
Финальный контекст, который получает модель, – это не просто набор текстов. Это кураторская подборка: релевантные, свежие, разнообразные фрагменты, которые помогут дать точный и полный ответ.
200 миллионов запросов в день – это примерно 2300 запросов в секунду. Каждый из них требует поиска по индексу, ранжирования, извлечения текста и передачи данных модели. Всё это должно уложиться в доли секунды.
Чтобы справляться с такой нагрузкой, Perplexity использует распределённую архитектуру: запросы обрабатываются параллельно на множестве серверов, индексы разбиты на части, а часто запрашиваемые данные кешируются.
Особенно важна работа с актуальностью. Если пользователь спрашивает о событии, которое произошло час назад, система должна найти свежие источники – даже если они ещё не успели попасть в основной индекс. Для этого параллельно с основным поиском запускается обход новостных лент и быстро обновляемых источников.
Как оценивают качество
Проверить качество поиска для ИИ сложнее, чем для обычного поиска. Если в классическом поиске можно спросить: «Нашлась ли нужная ссылка»?, то здесь важнее другое: «Смогла ли модель на основе найденного дать правильный ответ»?
Perplexity оценивает систему по нескольким критериям:
- Точность ответа – насколько он соответствует фактам из источников.
- Полнота – не упущены ли важные аспекты вопроса.
- Актуальность – насколько свежие данные использовались.
- Разнообразие источников – представлены ли разные точки зрения, если это уместно.
Для этого они постоянно прогоняют систему через тестовые наборы вопросов, сравнивают ответы с эталонными и анализируют случаи, где модель ошиблась или дала неполный ответ.
Зачем это нужно остальным
Perplexity построили эту систему для себя, но теперь предлагают её и другим через API. Это может быть полезно разработчикам, которые хотят добавить в свои продукты возможность отвечать на вопросы пользователей с опорой на актуальные источники.
Например, это может пригодиться для корпоративных чат-ботов, которым нужно искать информацию во внутренних документах компании, или для образовательных платформ, где важно давать ссылки на проверенные источники.
Главное отличие такого API от обычного поиска – он возвращает не список ссылок, а уже отобранный и структурированный контекст, готовый для использования языковой моделью.
Что остаётся открытым
Несмотря на то что система работает в продакшене и справляется с высокой нагрузкой, вопросы остаются. Один из главных – как оценивать качество в условиях, когда запросы становятся всё более сложными и многосторонними.
Ещё одна проблема – баланс между скоростью и глубиной поиска. Чем больше источников проверяешь, тем точнее можешь быть, но тем дольше это занимает. Для каждого типа запроса приходится искать свой компромисс.
И наконец, остаётся вопрос доверия: как убедиться, что модель не исказила информацию из источников и не добавила что-то от себя? Это требует постоянного мониторинга и улучшения механизмов проверки.
В любом случае, опыт Perplexity показывает: поиск для ИИ – это не просто адаптация существующих технологий, а отдельная инженерная задача со своими особенностями и компромиссами.