Si estás preparando el presupuesto de un sistema de búsqueda en PDF basado en pplx-embed-v2-late, hay un matiz importante: Perplexity ha publicado los pesos, pero todavía no ha anunciado un precio para la API de v2-late ni ha incluido estos modelos en su catálogo público de Embeddings API. A día de hoy, la opción viable es montar la recuperación multimodal por tu cuenta y usar los precios actuales de la API v1 únicamente como referencia.
La respuesta sobre el precio: v2-late aún no aparece en las tarifas públicas de Embeddings API
A fecha del 7 de octubre de 2026, la guía oficial de inicio de Embeddings API incluye cuatro modelos v1. No aparecen pplx-embed-v2-late-0.6b ni pplx-embed-v2-late-9b, así que todavía no existe una estimación por token de v2-late que pueda considerarse fiable.
| Modelo de Perplexity que aparece actualmente en la documentación de la API | Precio por 1M de tokens | Entrada prevista |
|---|---|---|
pplx-embed-v1-0.6b | $0.004 | Textos, consultas y frases independientes |
pplx-embed-v1-4b | $0.030 | Textos, consultas y frases independientes |
pplx-embed-context-v1-0.6b | $0.008 | Fragmentos relacionados de documentos |
pplx-embed-context-v1-4b | $0.050 | Fragmentos relacionados de documentos |
Son tarifas de la API con pago por uso, no precios de la familia de interacción tardía. El anuncio de lanzamiento de Perplexity explica que los embeddings de interacción tardía, densos y contextuales se incorporarán progresivamente a la API Platform. Eso describe una hoja de ruta, no un endpoint v2-late activo ni un compromiso de precio.
Para tomar una decisión de compra, separa el presupuesto en dos partidas:
- Coste de la API gestionada: disponible para los modelos v1 anteriores; todavía no hay una tarifa para v2-late.
- Coste del alojamiento propio: tiempo de GPU, renderizado de páginas, almacenamiento del modelo, almacenamiento del índice de tokens y vectores, y servicio de consultas para v2-late.
No multipliques el precio de v1 por el número de páginas de un PDF y presentes el resultado como un presupuesto de v2-late. Los modelos utilizan representaciones diferentes y la API v1 trabaja con embeddings de texto, no con el flujo documentado de páginas renderizadas.
Qué incluye realmente pplx-embed-v2-late
Perplexity publica dos checkpoints de interacción tardía: pplx-embed-v2-late-0.6b y pplx-embed-v2-late-9b. La ficha del modelo 9B indica 340M de parámetros activos para el modelo pequeño y 7.4B para el grande. Ambos generan vectores de 128 dimensiones por token y utilizan MaxSim, en lugar de reducir cada página a un único vector.
| Modelo | Parámetros activos | ViDoRe v3 image nDCG@10 | ViDoRe v3 Markdown nDCG@10 | Uso práctico |
|---|---|---|---|---|
pplx-embed-v2-late-0.6b | 340M | 62.3% | 61.2% | Consultas con menor peso o despliegues pequeños |
pplx-embed-v2-late-9b | 7.4B | 65.2% | 64.7% | Modelo de mayor calidad para indexación y recuperación |
Las cifras de benchmark proceden de la ficha del modelo, no de una prueba independiente con PDF: el 9B obtiene una ventaja de 2.9 puntos porcentuales en recuperación de imágenes y de 3.5 puntos en recuperación de Markdown, con aproximadamente 21.8 veces más parámetros activos. Ambos checkpoints tienen licencia MIT en Hugging Face.
El detalle clave para el despliegue es el espacio de embeddings compartido: Perplexity afirma que un índice creado con 9B puede consultarse con el modelo 0.6B. Puedes usar 9B para codificar documentos sin conexión y 0.6B solo para las consultas, pero valida antes la recuperación entre modelos: esto no elimina el almacenamiento necesario para el índice 9B.
Una configuración viable para recuperar información de PDF
El flujo de v2-late trata cada página renderizada del PDF como un documento de imagen. Así, una consulta de texto puede encontrar las palabras de una página, la estructura de una tabla, un gráfico o una determinada composición visual sin depender del OCR como representación principal de recuperación. Es el mismo enfoque de documentos visuales que describe la documentación de recuperación visual de Sentence Transformers.
«Sin OCR» significa que el OCR no es la señal utilizada para recuperar resultados; el texto extraído sigue siendo útil para filtrar, citar, mejorar la accesibilidad y ofrecer una búsqueda alternativa.
1. Renderiza las páginas y conserva sus metadatos
Renderiza cada página como una imagen RGB con una resolución estable y guarda junto a ella un registro:
| Campo | Ejemplo |
|---|---|
document_id | contract-2026-04 |
page_number | 17 |
image_path | pages/contract-2026-04/017.png |
source_uri | URL interna del objeto PDF |
text_fallback | Texto extraído opcionalmente |
Guarda document_id y page_number en el registro de recuperación, no únicamente en el nombre del archivo de imagen. Cuando encuentres una página relevante, recupera también las páginas contiguas del mismo documento: una tabla, una nota al pie o una definición pueden continuar al pasar de página.
2. Instala el encoder compatible
La ficha del modelo 9B exige versiones recientes de varias bibliotecas:
pip install "sentence-transformers>=6.0.0" "transformers>=5.4.0" pillow
El ejemplo proporcionado utiliza MultiVectorEncoder y la ficha del modelo selecciona CUDA para cargar el checkpoint 9B:
from PIL import Image
from sentence_transformers import MultiVectorEncoder
model = MultiVectorEncoder(
"perplexity-ai/pplx-embed-v2-late-9b",
device="cuda",
)
Usa el identificador 0.6B si el checkpoint grande no cabe en el hardware disponible. La ficha del modelo no ofrece un mínimo oficial de VRAM, una tabla de rendimiento ni una garantía de latencia, así que mide el efecto de la resolución de las páginas, el tamaño de lote y la GPU antes de dimensionar la capacidad.
3. Codifica por separado las consultas de texto y las imágenes de las páginas
El modelo requiere llamadas asimétricas. El texto de la consulta pasa por encode_query y las páginas renderizadas por 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)
No mezcles texto y documentos de imagen en un mismo lote de codificación. La ficha del modelo especifica que las entradas deben ser homogéneas y menciona la configuración de los marcadores [Q] / [D] que espera este checkpoint. model.similarity() aplica MaxSim sobre las representaciones a nivel de token.
En una colección real, codifica las páginas sin conexión, guarda la representación multivectorial en un índice de interacción tardía y conserva los metadatos de cada página en un almacén independiente. Para una colección pequeña puedes puntuar de forma exhaustiva. A mayor escala, utiliza un sistema compatible con MaxSim o incorpora un recuperador denso en una primera fase y deja que v2-late vuelva a ordenar un conjunto de candidatos controlado.
4. Recupera las páginas y amplía la ventana de contexto
Un resultado a nivel de página debería devolver normalmente:
- La página coincidente y su puntuación.
- El ID del documento y el enlace de origen.
- Una o dos páginas contiguas del mismo documento.
- La imagen de la página y cualquier texto extraído opcional para las citas.
Así evitas que una coincidencia visualmente precisa termine en una respuesta incompleta cuando la definición empieza en la página 16 y la tabla continúa en la 17. También haces que el resultado sea verificable: el usuario puede ver el gráfico o la tabla que produjo la coincidencia, en lugar de tener que confiar en una transformación OCR oculta.
El coste real más allá de los tokens de la API
No hay un precio publicado para la API v2-late que pueda compararse con las cuatro tarifas de v1. Por tanto, el coste operativo depende sobre todo de decisiones de despliegue que la ficha del modelo no cuantifica.
| Factor de coste | Qué está confirmado | Implicación para la planificación |
|---|---|---|
| Pesos del modelo | El repositorio 9B muestra aproximadamente 33.6 GB y tensores F32 en Hugging Face | El almacenamiento y la carga de los pesos ya son relevantes antes de empezar a indexar |
| Representación | Un vector de 128 dimensiones por token, puntuado con MaxSim | Cada página genera muchos vectores, no un único vector denso |
| Indexación | El modelo 9B puede crear un índice consultable con 0.6B | Si el volumen de consultas es alto, concentra más computación en un proceso offline |
| Recuperación | La interacción tardía compara los tokens de la consulta con los del documento | Usa un índice MaxSim compatible o limita los candidatos antes de volver a puntuarlos |
| Facturación de la API | No se ha publicado una tarifa para v2-late | Todavía no hagas previsiones de gasto en una API gestionada |
La guía de interacción tardía de Hugging Face ofrece una referencia de escala útil basada en otro modelo: un ejemplo con 4,874 pasajes produjo 608,414 vectores de tokens y 311.5 MB de almacenamiento bruto en float32, mientras que un índice PLAID comprimido ocupó 92 MB. Esas cifras no son una estimación de v2-late, pero muestran por qué «128 dimensiones» no equivale a «índice pequeño». El multiplicador importante es el número de tokens.
También conviene medir el rendimiento de indexación en tu propio hardware. En un informe de un usuario real en LocalLLaMA, pplx-embed-v1-4b tardó aproximadamente 45 minutos por cada 10,000 vectores, frente a 6 minutos para Qwen3-Embedding-4B en una A100 de 80 GB. Ese informe se refiere a v1, no a v2-late; sirve como advertencia para medir el rendimiento de los embeddings de Perplexity, no como afirmación sobre el rendimiento de v2-late.
«Creo que podría deberse a que pplx embed utiliza atención bidireccional en lugar de la atención enmascarada estándar». — u/Velocita84, r/LocalLLaMA
Qué opción de despliegue te conviene
| Necesidad | Mejor opción disponible actualmente | Motivo |
|---|---|---|
| RAG de texto barato con un endpoint gestionado | API v1 de Perplexity | Los precios publicados van de $0.004 a $0.05 por 1M de tokens |
| Importan los gráficos, las tablas, las páginas escaneadas y la composición | Alojar pplx-embed-v2-late por tu cuenta | El flujo documentado busca directamente en páginas renderizadas |
| Corpus grande con consultas frecuentes | Índice offline 9B más encoder de consultas 0.6B, o recuperación densa inicial seguida de reordenación con v2-late | Separa la calidad de la indexación de la computación durante las consultas |
| Prototipo pequeño o prueba limitada por el hardware | Checkpoint 0.6B con una muestra representativa de páginas | Menor número de parámetros activos, aunque tendrás que medir el coste de codificar las páginas y el almacenamiento |
| Un endpoint v2-late gestionado es un requisito imprescindible | Esperar a que exista un ID oficial de modelo para la API y una tabla de precios | Ninguno de los dos aparece en la documentación pública actual de embeddings |
Mi recomendación es probar primero el flujo entre modelos 0.6B y 9B con entre 100 y 500 páginas representativas antes de construir un índice completo. Incluye páginas escaneadas, tablas, composiciones a varias columnas y páginas cuya respuesta abarque un salto de página. Registra el recall con tu valor objetivo de k, el rendimiento de codificación por página, el tamaño bruto y comprimido del índice y la latencia de las consultas. Esos datos son mucho más útiles que trasladar el precio por token de v1 a un modelo que todavía no se comercializa a través de esa API.
Preguntas frecuentes sobre la recuperación de PDF con pplx-embed-v2-late
¿pplx-embed-v2-late tiene precio para la API?
No en la documentación pública de Perplexity Embeddings API consultada para esta guía. Los precios publicados, de $0.004 a $0.05 por millón de tokens, corresponden a los modelos v1 estándar y contextualizados.
¿Está oficialmente disponible pplx-embed-v2-late?
Sí. Perplexity publica en Hugging Face checkpoints de pesos abiertos de 0.6B y 9B. La publicación de los pesos y la disponibilidad en una API gestionada son hitos distintos.
¿La recuperación de PDF necesita OCR?
No para la señal de recuperación visual. Renderiza cada página como una imagen y codifícala como documento. El OCR o el texto extraído siguen siendo útiles para filtrar, citar, mejorar la accesibilidad y ofrecer una búsqueda alternativa.
¿El modelo 0.6B puede consultar un índice creado con 9B?
La ficha del modelo de Perplexity afirma que ambos comparten un espacio de embeddings y permiten esa configuración. Mide la calidad con tu propio corpus, porque la ficha no publica la diferencia de recuperación entre modelos.
¿Pueden compartir lote las páginas de texto y de imagen?
No. La ficha del modelo indica que no se admiten entradas mixtas de texto e imagen en el mismo lote de codificación. Mantén separadas las llamadas de codificación de texto y de imágenes.
¿Sigo necesitando un reranker?
No necesariamente. MaxSim ya es el método de puntuación de interacción tardía, pero combinar un recuperador denso en la primera fase con una reordenación mediante v2-late puede ser más práctico que analizar los vectores de tokens de todas las páginas en un corpus grande.
¿Cuál es el coste exacto de almacenamiento por página de PDF?
Perplexity no publica una calculadora de almacenamiento por página para v2-late. Estímalo a partir del número de tokens de página conservados, la precisión de los vectores, los metadatos y la compresión del índice, y después valida el cálculo con una muestra representativa.
¿Debo elegir 0.6B o 9B?
Usa 9B cuando la prioridad sea la calidad de la indexación offline y puedas asumir el coste del modelo y del proceso de indexación. Elige 0.6B para un despliegue más pequeño o como encoder de consultas, incluida la configuración documentada de espacio compartido frente a un índice 9B. La diferencia en el benchmark es medible, pero la ficha del modelo no ofrece una regla universal de calidad o latencia.
La decisión final puede resumirse así: si necesitas hoy un endpoint gestionado de Perplexity con un precio conocido, v2-late todavía no está listo para ese requisito. Si puedes alojarlo por tu cuenta y tus PDF contienen información que el OCR o la división en fragmentos de texto tienden a perder, renderiza una muestra representativa de páginas y mide el flujo de interacción tardía antes de escalarlo.