NEWVectors or files. Pick a path.Start →
    Models/perplexity-ai/pplx-embed-v2-context-9b
    MIT

    pplx-embed-v2-context-9b

    by perplexity-ai

    Contextual embeddings for text chunks and page images, sharing a 1024-d space with the 0.6B model

    Identifiers
    Model ID
    perplexity-ai/pplx-embed-v2-context-9b
    Feature URI

    Deploy pplx-embed-v2-context-9b

    Single-tenant

    Mixpeek has no managed extractor for this model. On a single-tenant deployment you upload the weights and a custom plugin serves them next to the rest of your pipeline.

    Overview

    pplx-embed-v2-context-9b is the full release of Perplexity's contextual embedding model, published on 28 October 2026 under the MIT license. It embeds each chunk of a document with the rest of the document in view, and it now embeds images too: a page image is split into horizontal bands, one vector per band, so a slide or a scanned page can be searched by its parts.

    Its first 1024 dimensions share a space with pplx-embed-v2-context-0.6b, so you can embed documents with one model and queries with the other. The technical report (arXiv 2610.38854) says the 9B model sets the state of the art on its two new chunk benchmarks, Context-bench and Q2D-Chunk, and on ConTEB, and leads dense retrievers on ViDoRe V3 for visual documents. The scores are Perplexity's own.

    Architecture

    A vision-language backbone of about 8.4B parameters with custom code (trust_remote_code, transformers 5.4 or later), fine-tuned from pplx-embed-v2-late-9b. Training distils graded chunk-level relevance from a query-aware context-compression model, so it needs no gold-chunk labels. Text chunks of one document are encoded in one pass; images are encoded in one pass with their visual tokens divided into whole-row bands. Matryoshka losses at 1024 and 2048 dimensions; output is unnormalized int8.

    Mixpeek SDK Integration

    # No Mixpeek extractor takes a Hugging Face model id, so this model runs on your side
    # and its chunk vectors are upserted into a bring-your-own-vectors collection.
    # Chunks of one document must not overlap.
    from transformers import AutoModel
    import requests
    
    model = AutoModel.from_pretrained("perplexity-ai/pplx-embed-v2-context-9b", trust_remote_code=True).to("cuda")
    chunks = ["Q3 revenue grew 14 percent.", "Most of the growth came from EMEA.", "Churn fell to 2 percent."]
    vectors = model.encode([chunks], normalize_embeddings=True)[0]  # one 2048-d vector per chunk, in context
    
    requests.post(
        "https://api.mixpeek.com/v1/namespaces/ns_your_namespace/documents/upsert",
        headers={"Authorization": "Bearer API_KEY"},
        json={"collection_id": "col_your_collection",
              "documents": [{"document_id": f"report-q3-{i}", "vectors": {"text-embedding": v.tolist()},
                             "payload": {"text": c, "chunk": i}} for i, (c, v) in enumerate(zip(chunks, vectors))]},
    )

    Capabilities

    • Contextual chunk embeddings for text, encoded together per document
    • Image embeddings per horizontal band of a page (encode_images, 8 bands by default)
    • Separate query encoding (encode_queries) from document encoding (encode)
    • 2048 dimensions, or 1024 by truncation, shared with the 0.6B model
    • Multilingual; MIT license

    Use Cases on Mixpeek

    RAG over long reports and contracts where a chunk alone is ambiguous
    Searching slides, scans and PDF pages as images, scored by their best band
    Embedding a corpus with the 9B model and serving queries with the 0.6B model at 1024 dimensions

    Performance

    Input SizeDocuments as lists of non-overlapping text chunks, or page images split into bands; queries encoded separately
    Embedding Dim2048 (1024 by Matryoshka truncation, shared with the 0.6B model)
    GPU LatencyInput dependent
    GPU ThroughputBatch dependent
    GPU MemoryModel dependent

    Benchmark claims are from Perplexity's report and we have not measured them. Output is unnormalized int8; compare with cosine similarity or normalize first. Vectors from the earlier preview should not be mixed with this release's. Needs a GPU for practical throughput.

    Frequently Asked Questions

    What changed from pplx-embed-v2-context-9b-preview?

    This is the final release. It adds image embeddings through encode_images, which splits a page into horizontal bands with one vector each, and its 1024-d prefix shares a space with the 0.6B model. Re-embed anything you indexed with the preview, since the two releases' vectors are not interchangeable.

    How do I search page images with it?

    Call encode_images on the page with chunks=8 (the default) to get one 2048-d vector per band, encode the query with encode_queries, and score the page by its highest band similarity. Store each band as its own vector so a standard ANN index can find it.

    Can I index with the 9B model and query with the 0.6B model?

    Yes, at 1024 dimensions. Take the first 1024 values of each unnormalized vector from either model and normalize afterwards. Those are the only shared dimensions; 2048-d vectors are 9B only.

    How do I encode queries with pplx-embed-v2-context-9b?

    Use encode_queries for queries and encode (or encode_images) for documents. The model was trained with separate query and document prefixes, and the card warns that encoding queries with encode silently lowers retrieval quality.

    Specification

    Organizationperplexity-ai
    Retriever-
    Parameters8.4B
    LicenseMIT
    Downloads/moN/A
    Likes13

    Research Paper

    Contextual Embeddings Beyond the Gold Chunk (arXiv 2610.38854)

    arxiv.org

    Build a pipeline with pplx-embed-v2-context-9b

    Add this model to a processing pipeline alongside other extractors. Combine with retrieval stages for end-to-end search.

    Run it on your own data, free