Skip to main content
For the complete documentation index for agents and LLMs, see llms.txt.

PerplexityWebSearch

Search the web using the Perplexity Search API and return results as Haystack Documents.

Key Features

  • Web search powered by Perplexity's AI-enhanced search engine.
  • Returns search results as Haystack Document objects with content and metadata.
  • Also returns raw links alongside documents for downstream use.
  • Configurable number of results with top_k.
  • Supports additional Perplexity search parameters for customization.

Configuration

  1. Drag the PerplexityWebSearch component onto the canvas from the Component Library.
  2. Click on the component to open the configuration panel.
  3. On the General tab:
    1. Create a secret with your Perplexity API key and set it as api_key. Use PERPLEXITY_API_KEY as the environment variable name. For instructions, see Create Secrets. Get your API key from perplexity.ai.
    2. Set top_k to control the maximum number of search results to return.
  4. Go to the Advanced tab to configure search_params and timeout.

Connections

PerplexityWebSearch receives a query string and outputs a list of Document objects containing search result content and a list of raw URLs. Connect its documents output to a PromptBuilder or ranker to use the results in a pipeline.

Source Code

To check this component's source code, open perplexity_websearch.py in the Haystack Core Integrations repository.

Usage Examples

Basic Configuration

  PerplexityWebSearch:
type: haystack_integrations.components.websearch.perplexity.perplexity_websearch.PerplexityWebSearch
init_parameters:
api_key:
type: env_var
env_vars:
- PERPLEXITY_API_KEY
strict: false
top_k: 10
timeout: 30.0

Using the Component in a Pipeline

# haystack-pipeline
components:
PerplexityWebSearch:
type: haystack_integrations.components.websearch.perplexity.perplexity_websearch.PerplexityWebSearch
init_parameters:
api_key:
type: env_var
env_vars:
- PERPLEXITY_API_KEY
strict: false
top_k: 5

prompt_builder:
type: haystack.components.builders.chat_prompt_builder.ChatPromptBuilder
init_parameters:
required_variables: "*"
template:
- role: user
content: |
Answer based on these web search results:
{% for doc in documents %}
{{ doc.content }}
{% endfor %}
Question: {{ question }}

llm:
type: haystack.components.generators.chat.openai.OpenAIChatGenerator
init_parameters:
api_key:
type: env_var
env_vars:
- OPENAI_API_KEY
strict: false
model: gpt-4o-mini

connections:
- sender: PerplexityWebSearch.documents
receiver: prompt_builder.documents
- sender: prompt_builder.prompt
receiver: llm.messages

max_runs_per_component: 100

metadata: {}

inputs:
query:
- PerplexityWebSearch.query
- prompt_builder.question

Parameters

Inputs

ParameterTypeDescription
querystrThe search query to send to Perplexity.
search_paramsOptional[Dict[str, Any]]Additional Perplexity search parameters to override init-time values.

Outputs

ParameterTypeDescription
documentsList[Document]The search results as Haystack Documents.
linksList[str]The URLs of the search results.

Init Parameters

These are the parameters you can configure in Pipeline Builder:

ParameterTypeDefaultDescription
api_keySecretSecret.from_env_var("PERPLEXITY_API_KEY")The Perplexity API key.
top_kOptional[int]10The maximum number of search results to return.
search_paramsOptional[Dict[str, Any]]NoneAdditional Perplexity API parameters.
timeoutfloat30.0Request timeout in seconds.

Run Method Parameters

These are the parameters you can configure for the component's run() method. This means you can pass these parameters at query time through the API, in Playground, or when running a job. For details, see Modify Pipeline Parameters at Query Time.

ParameterTypeDefaultDescription
querystrThe search query to send to Perplexity.
search_paramsOptional[Dict[str, Any]]NoneAdditional search parameters to override init-time values.