Кризис старого движка и рождение Photon
Perplexity полностью заменила форкнутый open-source движок на собственную разработку Photon, написанную на Rust. Решение принято из-за критических ограничений старой системы при росте индекса: хвостовая задержка (p99) достигала 800 мс, а слияние индексов на диске вызывало пиковые нагрузки до 1.2 секунды. Кроме того, развертывание новых кластеров занимало более недели.
Photon обрабатывает 100% продакшен-трафика. Ключевые архитектурные решения:
- Адаптивные постинг-листы: короткие списки хранятся inline, длинные — блоками с galloping search или битовыми картами (bitmaps) для мгновенной проверки вхождения.
- Docblob records: компактные записи с кодировкой Elias-Fano. Ранжирование требует всего 1 lookup на документ.
- Batched async reads: чтение с диска через
io_uringбез блокировок, кэширование через CLOCK-алгоритм. - Разделение сборки и обслуживания: индексаторы строят версии на YTsaurus, контроллер плавно переключает группы, предварительно прогревая кэш запросами из логов.
Производственные метрики
Внедрение Photon дало радикальное улучшение показателей. Движок использует на 20% меньше серверов и хранит в 2.5 раза больше данных на документ, что улучшило качество ранжирования. Примечательно, что фиксация данных в памяти через mlock потребовала бы в 4.6 раза больше resident memory, чем текущее решение Photon.
| Метрика | Старый движок | Photon (новый) |
|---|---|---|
| Задержка p99 (retrieval + ranking) | ~800 мс | ~65 мс |
| Задержка p50 | Не указано | 160 мс |
| Задержка p95 | Не указано | 230 мс |
| Потребление серверов | База | -20% |
| Данные на документ | База | +150% (в 2.5 раза больше) |
Fast Search: оптимизация для AI-агентов
На базе Photon запущен режим Fast Search в Perplexity Search API. Он использует облегченное ранжирование, специально заточенное под агентов. Тестирование на 6 бенчмарках (WideSearch, BrowseComp, DSQA, FRAMES, SEAL-0, SEAL-Hard) по 3 554 задачам показало:
- Стоимость: $59.73 за выполнение задач против $187.60 у стандартного режима. Экономия составляет 68%.
- Цена запроса: $1 за 1 000 запросов.
Однако есть компромисс. На внутренних бенчмарках для сложных запросов релевантность (DCG) упала с 2.45 до 2.21, а доступность ответов — с 0.596 до 0.567. Perplexity рекомендует Fast Search для повседневных циклов агентов, а стандартный режим — для сложных и неоднозначных запросов.
Сравнение с конкурентами
Fast Search позиционируется как один из самых быстрых и дешевых вариантов на рынке. Ниже приведено сравнение с ключевыми игроками в сегменте быстрого поиска.
| Параметр | Perplexity Fast Search | Exa Instant | Tavily ultra-fast |
|---|---|---|---|
| Параметр API | search_type: "fast" | type: "instant" | search_depth: "ultra-fast" |
| Задержка (vendor-reported) | 160 мс p50, 230 мс p95 | ~250 мс | Не указано (ниже других глубин) |
| Цена за 1K запросов | $1 | $4 | $8 (pay-as-you-go) |
| Результатов на запрос | 1–20 | 10 (базовая цена) | Не указано |
| Ограничения | Ниже релевантность, чем у default | Доп. плата за лишние результаты | Ниже релевантность |
Доступ к Fast Search осуществляется через API. Пример запроса:
POST 'https://api.perplexity.ai/search'
Authorization: Bearer $PERPLEXITY_API_KEY
Content-Type: application/json
{
"query": "latest stable Rust release",
"search_type": "fast",
"max_results": 5
}
Источник: MarkTechPost ↗
