Skip to main content
Perplexity

Search documentation

Type to search this documentation.

On this pageOverview

Perplexity with Haystack

The perplexity-haystack package provides Haystack components for Perplexity's Agent API, Embeddings API, and grounded Search API, so you can build retrieval-augmented and agentic pipelines that combine chat, embeddings, and live web search.

The integration includes:

  • PerplexityChatGenerator — Chat generation through the Agent API.
  • PerplexityTextEmbedder and PerplexityDocumentEmbedder — Embeddings through the Embeddings API.
  • PerplexityWebSearch — Ranked, grounded web results through the Search API.
Bash
pip install perplexity-haystack
Bash
uv add perplexity-haystack

Set your Perplexity API key as an environment variable:

Python
import os

os.environ["PERPLEXITY_API_KEY"] = "your_api_key_here"

Get API Key

Generate your API key from the Perplexity dashboard.

PerplexityChatGenerator is powered by the Perplexity Agent API. Set the model explicitly so your integration does not depend on the package default.

Python
import os

from haystack.dataclasses import ChatMessage
from haystack_integrations.components.generators.perplexity import PerplexityChatGenerator

os.environ["PERPLEXITY_API_KEY"] = "your_api_key_here"

client = PerplexityChatGenerator(model="openai/gpt-5.6-terra")
response = client.run(
    messages=[ChatMessage.from_user("What are Agentic Pipelines? Be brief.")]
)

print(response["replies"])

You can pick any of the supported Agent API models via the model parameter:

Python
client = PerplexityChatGenerator(model="anthropic/claude-sonnet-4-6")

Supported models include openai/gpt-5.6-terra, openai/gpt-5.5, anthropic/claude-sonnet-4-6, xai/grok-4.5, and google/gemini-3-flash-preview. See the Agent API models page for the full list.

Embed a single query with PerplexityTextEmbedder:

Python
import os

from haystack_integrations.components.embedders.perplexity import PerplexityTextEmbedder

os.environ["PERPLEXITY_API_KEY"] = "your_api_key_here"

embedder = PerplexityTextEmbedder()
response = embedder.run(text="What is Haystack by deepset?")

print(response["embedding"])

Embed a list of documents with PerplexityDocumentEmbedder:

Python
from haystack import Document
from haystack_integrations.components.embedders.perplexity import PerplexityDocumentEmbedder

docs = [Document(content="What is Haystack by deepset?")]
result = PerplexityDocumentEmbedder().run(documents=docs)

print(result["documents"][0].embedding)

Both embedders default to pplx-embed-v1-0.6b. The larger pplx-embed-v1-4b model is also available — set it via the model parameter.

Use PerplexityWebSearch to get ranked, grounded web results inside a Haystack pipeline:

Python
import os

from haystack.utils import Secret
from haystack_integrations.components.websearch.perplexity import PerplexityWebSearch

os.environ["PERPLEXITY_API_KEY"] = "your_api_key_here"

websearch = PerplexityWebSearch(
    api_key=Secret.from_env_var("PERPLEXITY_API_KEY"),
    top_k=5,
)
result = websearch.run(query="What is Haystack by deepset?")

documents = result["documents"]
links = result["links"]

print(documents)
print(links)

Need help with the integration?

Suggest an edit

Propose a replacement for this page. The site team reviews it before applying any changes.

Export
Documentation menu