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
Documentobjects 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
- Drag the
PerplexityWebSearchcomponent onto the canvas from the Component Library. - Click on the component to open the configuration panel.
- On the General tab:
- Create a secret with your Perplexity API key and set it as
api_key. UsePERPLEXITY_API_KEYas the environment variable name. For instructions, see Create Secrets. Get your API key from perplexity.ai. - Set
top_kto control the maximum number of search results to return.
- Create a secret with your Perplexity API key and set it as
- Go to the Advanced tab to configure
search_paramsandtimeout.
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
| Parameter | Type | Description |
|---|---|---|
query | str | The search query to send to Perplexity. |
search_params | Optional[Dict[str, Any]] | Additional Perplexity search parameters to override init-time values. |
Outputs
| Parameter | Type | Description |
|---|---|---|
documents | List[Document] | The search results as Haystack Documents. |
links | List[str] | The URLs of the search results. |
Init Parameters
These are the parameters you can configure in Pipeline Builder:
| Parameter | Type | Default | Description |
|---|---|---|---|
api_key | Secret | Secret.from_env_var("PERPLEXITY_API_KEY") | The Perplexity API key. |
top_k | Optional[int] | 10 | The maximum number of search results to return. |
search_params | Optional[Dict[str, Any]] | None | Additional Perplexity API parameters. |
timeout | float | 30.0 | Request 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.
| Parameter | Type | Default | Description |
|---|---|---|---|
query | str | The search query to send to Perplexity. | |
search_params | Optional[Dict[str, Any]] | None | Additional search parameters to override init-time values. |
Related Information
Was this page helpful?