Если вы рассчитываете бюджет системы поиска по PDF на базе pplx-embed-v2-late, здесь легко упустить главное: Perplexity открыла веса моделей, но пока не объявила цену API для v2-late и не добавила эти модели в публичный каталог Embeddings API. На практике сейчас остается самостоятельный запуск мультимодального поиска, а действующие цены API для v1 можно использовать только как ориентир.
Главное о цене: v2-late пока нет в публичном тарифе Embeddings API
По состоянию на 7 октября 2026 года в официальном руководстве по запуску Embeddings API указаны четыре модели v1. pplx-embed-v2-late-0.6b и pplx-embed-v2-late-9b там отсутствуют, поэтому обоснованно рассчитать стоимость v2-late за токен пока невозможно.
| Модель Perplexity, указанная в документации API | Цена за 1 млн токенов | Предполагаемый тип входных данных |
|---|---|---|
pplx-embed-v1-0.6b | $0.004 | Отдельные тексты, запросы, предложения |
pplx-embed-v1-4b | $0.030 | Отдельные тексты, запросы, предложения |
pplx-embed-context-v1-0.6b | $0.008 | Связанные фрагменты документов |
pplx-embed-context-v1-4b | $0.050 | Связанные фрагменты документов |
Это тарифы API с оплатой по факту, а не цены для семейства моделей с late interaction. В анонсе Perplexity сказано, что модели с late interaction, плотные и контекстные эмбеддинги будут постепенно появляться на API Platform. Это лишь заявление о планах вывода, а не подтверждение работающего эндпоинта v2-late или фиксированной цены.
Для расчета бюджета разделите расходы на две части:
- Расходы на управляемый API: доступны для перечисленных выше моделей v1; тариф для v2-late не опубликован.
- Расходы на самостоятельный запуск: время работы GPU, рендеринг страниц, хранение моделей, хранение токен-векторного индекса и обслуживание запросов для v2-late.
Не умножайте цену v1 на число страниц в PDF, выдавая результат за расчет стоимости v2-late. У моделей разные способы представления данных, а API v1 предназначен для текстовых эмбеддингов, а не для описанного сценария с отрендерированными страницами.
Что именно предлагает pplx-embed-v2-late
Perplexity публикует две модели с late interaction: pplx-embed-v2-late-0.6b и pplx-embed-v2-late-9b. Согласно карточке модели 9B, у младшей модели 340M активных параметров, а у старшей — 7.4B. Обе создают 128-мерные векторы для каждого токена и используют MaxSim, не сводя всю страницу к одному вектору.
| Модель | Активные параметры | ViDoRe v3 image nDCG@10 | ViDoRe v3 Markdown nDCG@10 | Практическая роль |
|---|---|---|---|---|
pplx-embed-v2-late-0.6b | 340M | 62.3% | 61.2% | Более легкая модель для запросов или компактного развертывания |
pplx-embed-v2-late-9b | 7.4B | 65.2% | 64.7% | Модель для более качественной индексации и поиска |
Показатели взяты из карточки модели, а не из независимого теста на PDF: модель 9B опережает младшую на 2.9 процентного пункта в поиске по изображениям и на 3.5 пункта в поиске по Markdown, используя примерно в 21.8 раза больше активных параметров. Обе модели распространяются на Hugging Face по лицензии MIT.
Ключевая деталь для развертывания — общее пространство эмбеддингов: Perplexity утверждает, что индекс, построенный моделью 9B, можно запрашивать с помощью модели 0.6B. Используйте 9B для офлайн-кодирования документов, а 0.6B — только для запросов, предварительно проверив полноту поиска между моделями. Это не отменяет необходимости хранить индекс, построенный с помощью 9B.
Рабочая схема поиска по PDF
В сценарии v2-late каждая отрендеренная страница PDF рассматривается как графический документ. Затем текстовый запрос может сопоставляться со словами на странице, структурой таблицы, графиком или компоновкой без использования OCR в качестве основного поискового представления. Такой подход к визуальным документам описан в документации Sentence Transformers по визуальному поиску.
«Без OCR» означает, что распознанный текст не используется как поисковой сигнал. При этом извлеченный текст по-прежнему пригодится для фильтрации, цитирования, доступности и резервного поиска.
1. Отрендерьте страницы и сохраните метаданные
Преобразуйте каждую страницу в RGB-изображение с фиксированным разрешением и сохраните рядом отдельную запись:
| Поле | Пример |
|---|---|
document_id | contract-2026-04 |
page_number | 17 |
image_path | pages/contract-2026-04/017.png |
source_uri | Внутренний URL объекта PDF |
text_fallback | Необязательный извлеченный текст |
Храните document_id и page_number в записи поискового результата, а не только в имени файла изображения. Когда нужная страница найдена, запрашивайте соседние страницы того же документа: таблица, сноска или определение нередко переходят через границу страниц.
2. Установите совместимый энкодер
Для модели 9B в карточке указаны свежие версии библиотек:
pip install "sentence-transformers>=6.0.0" "transformers>=5.4.0" pillow
В примере авторы используют MultiVectorEncoder, а для загрузки чекпойнта 9B в карточке модели выбирается CUDA:
from PIL import Image
from sentence_transformers import MultiVectorEncoder
model = MultiVectorEncoder(
"perplexity-ai/pplx-embed-v2-late-9b",
device="cuda",
)
Если доступного оборудования недостаточно для старшей модели, используйте идентификатор 0.6B. В карточке модели не указаны официальные минимальные требования к VRAM, таблица производительности или гарантии по задержке, поэтому перед планированием инфраструктуры измерьте работу на своем разрешении страниц, размере батча и GPU.
3. Кодируйте текстовые запросы и изображения страниц раздельно
Модель требует асимметричных вызовов. Текст запроса передается через encode_query, а отрендерированные страницы — через encode_document:
query_embeddings = model.encode_query([
"Which clause governs termination after a material breach?"
])
page = Image.open("pages/contract-2026-04/017.png").convert("RGB")
page_embeddings = model.encode_document([page])
scores = model.similarity(query_embeddings, page_embeddings)
print(scores)
Не объединяйте текстовые и графические документы в один смешанный батч. В карточке модели отдельно указаны однородные входные данные и конфигурация с маркерами [Q] / [D] , ожидаемая этим чекпойнтом. Метод model.similarity() применяет MaxSim к токеновым представлениям.
Для реальной коллекции кодируйте страницы офлайн, сохраняйте многовекторное представление в индексе с поддержкой late interaction, а метаданные страниц держите в отдельном хранилище. Для небольшой коллекции подойдет полный перебор. При большом масштабе используйте систему с поддержкой MaxSim либо сначала отбирайте кандидатов плотным поиском, а затем переранжируйте ограниченный набор с помощью v2-late.
4. Находите страницы и расширяйте контекст найденного фрагмента
Результат поиска по странице обычно должен включать:
- Найденную страницу и ее оценку.
- ID документа и ссылку на источник.
- Одну или две соседние страницы того же документа.
- Изображение страницы и, при наличии, извлеченный текст для цитирования.
Так визуально точное совпадение не превращается в неполный ответ, когда определение начинается на странице 16, а таблица продолжается на странице 17. Кроме того, результат можно проверить глазами: пользователь видит график или таблицу, которые привели к совпадению, а не полагается на скрытое преобразование OCR.
Модель расходов помимо оплаты API за токены
Публичной цены API для v2-late нет, поэтому напрямую сравнить ее с четырьмя тарифами v1 невозможно. На практике стоимость определяется параметрами развертывания, для которых в карточке модели цены не указаны.
| Статья расходов | Что подтверждено | Что учитывать при планировании |
|---|---|---|
| Веса модели | Репозиторий 9B на Hugging Face занимает около 33.6 GB и содержит тензоры F32 | Еще до начала индексации потребуются заметные ресурсы для хранения и загрузки весов |
| Представление данных | По одному 128-мерному вектору на токен, оценка выполняется через MaxSim | Страница порождает множество векторов, а не один плотный вектор |
| Индексация | 9B может построить индекс, который затем запрашивается моделью 0.6B | При большом числе запросов более тяжелую обработку стоит вынести в офлайн-задачу |
| Поиск | Late interaction сопоставляет токены запроса с токенами документа | Нужен индекс с поддержкой MaxSim или предварительное ограничение числа кандидатов |
| Оплата API | Тариф для v2-late не опубликован | Пока не стоит прогнозировать расходы на управляемый API |
В руководстве Hugging Face по late interaction есть полезный ориентир по масштабу на примере другой модели: коллекция из 4,874 фрагментов породила 608,414 токен-векторов и заняла 311.5 MB в виде необработанных данных float32, а сжатый индекс PLAID — 92 MB. Это не расчет для v2-late, но пример хорошо показывает, почему «128 измерений» не означает «маленький индекс». Главный множитель — количество токенов.
Производительность индексации тоже нужно измерять на собственном оборудовании. В отчете пользователя на LocalLLaMA указано, что pplx-embed-v1-4b обрабатывала 10,000 векторов примерно за 45 минут, тогда как Qwen3-Embedding-4B — за 6 минут на A100 80GB. Этот отчет относится к v1, а не к v2-late, поэтому его следует воспринимать как предупреждение о необходимости измерять производительность эмбеддингов Perplexity, а не как показатель скорости v2-late.
«Думаю, причина может быть в том, что pplx embed использует двунаправленное внимание, а не стандартное маскированное внимание». — u/Velocita84, r/LocalLLaMA
Какой вариант развертывания выбрать?
| Требование | Оптимальный вариант на сегодня | Почему |
|---|---|---|
| Недорогой текстовый RAG с управляемым эндпоинтом | API Perplexity v1 | Опубликованные цены составляют от $0.004 до $0.05 за 1 млн токенов |
| Важны графики, таблицы, сканы и компоновка страниц | Самостоятельный запуск pplx-embed-v2-late | Документированный сценарий напрямую ищет по отрендерированным страницам |
| Большой корпус и частые запросы | Офлайн-индекс на 9B плюс энкодер запросов 0.6B либо плотный поиск с последующим переранжированием v2-late | Качество индексации отделяется от вычислительной нагрузки на этапе запроса |
| Небольшой прототип или ограниченное оборудование | Чекпойнт 0.6B на репрезентативной выборке страниц | Меньше активных параметров, но скорость кодирования страниц и объем хранилища все равно нужно измерить |
| Обязателен управляемый эндпоинт v2-late | Дождаться официального ID модели API и тарифа | В текущей публичной документации по эмбеддингам нет ни того, ни другого |
Я бы начал с прототипа на 0.6B и 9B, проверив работу между моделями на 100–500 репрезентативных страницах, прежде чем строить полный индекс. В выборку стоит включить сканы, таблицы, многоколоночные макеты и страницы, на которых ответ пересекает границу. Зафиксируйте полноту поиска при целевом значении k, скорость кодирования страниц, размер исходного и сжатого индекса и задержку запроса. Эти данные полезнее, чем переносить цену токена v1 на модель, которая пока не продается через этот API.
Частые вопросы о поиске по PDF с pplx-embed-v2-late
Есть ли у pplx-embed-v2-late цена API?
В публичной документации Perplexity Embeddings API, проверенной для этого руководства, такой цены нет. Опубликованные тарифы от $0.004 до $0.05 за миллион токенов относятся к стандартным и контекстным моделям v1.
Выпущена ли pplx-embed-v2-late официально?
Да. Perplexity публикует на Hugging Face открытые чекпойнты 0.6B и 9B. Публикация весов и доступность управляемого API — разные этапы.
Нужен ли OCR для поиска по PDF?
Нет, если речь идет о визуальном поисковом сигнале. Отрендерите каждую страницу как изображение и закодируйте ее как документ. OCR или извлеченный текст по-прежнему полезны для фильтрации, цитирования, доступности и резервного поиска.
Может ли модель 0.6B запрашивать индекс, построенный на 9B?
В карточке модели Perplexity сказано, что модели используют общее пространство эмбеддингов и поддерживают такую схему. Однако качество нужно проверить на собственном корпусе: в карточке нет показателя изменения качества при работе между моделями.
Можно ли отправлять текстовые и графические страницы в одном батче?
Нет. В карточке модели указано, что смешанные текстовые и графические входные данные не поддерживаются в одном батче кодирования. Вызовы для текста и изображений должны оставаться однородными.
Нужен ли дополнительный reranker?
Не обязательно. MaxSim уже используется как метод оценки в late interaction, но на большом корпусе может оказаться практичнее сначала выполнять плотный поиск, а затем переранжировать результаты с помощью v2-late, чем просматривать векторы каждого токена каждой страницы.
Сколько точно места занимает одна страница PDF?
Perplexity не публикует калькулятор хранения страниц для v2-late. Оцените объем по числу сохраняемых токенов страницы, точности векторов, метаданным и степени сжатия индекса, а затем проверьте расчет на репрезентативной выборке.
Что выбрать: 0.6B или 9B?
Выбирайте 9B, если приоритетом является качество офлайн-индексации и у вас есть ресурсы на модель и задачу индексации. 0.6B подойдет для более компактного развертывания или в качестве энкодера запросов, в том числе в описанной схеме с общим пространством и индексом 9B. Разрыв в бенчмарках заметен, но карточка модели не дает универсального правила по качеству или задержке.
Решение можно принять по простой проверке: если вам нужен управляемый эндпоинт Perplexity с известной ценой уже сегодня, v2-late пока не подходит под это требование. Если вы готовы запускать модель самостоятельно, а в PDF есть информация, которую теряют OCR или разбиение текста на фрагменты, отрендерьте репрезентативную выборку страниц и протестируйте конвейер с late interaction до масштабирования.