>Perplexity Search 是一个网络搜索 API,返回排名靠前、有来源标注的结果,专为 LLM 和代理设计。其 Search API 端点 返回支持 Perplexity 答案引擎的底层网络结果。
我们可以将其用作 检索器。它将展示此集成特有的功能。阅读完本文档后,查看 相关的用例页面 来了解如何将此检索器作为更大链的一部分使用可能很有帮助。
设置
安装
该集成位于 langchain-perplexity package:
pip install -qU langchain-perplexity
凭证
您需要一个 Perplexity API 密钥才能使用此集成。在 Perplexity API 密钥仪表板中创建一个,然后将其设置为 PPLX_API_KEY 环境变量(该集成也接受 PERPLEXITY_API_KEY).
if not os.environ.get("PPLX_API_KEY"):
os.environ["PPLX_API_KEY"] = getpass.getpass("Perplexity API key:\n")
要获取单个查询的自动跟踪,还可以设置您的 LangSmith API 密钥(取消下方注释):
# os.environ["LANGSMITH_API_KEY"] = getpass.getpass("Enter your LangSmith API key: ")
# os.environ["LANGSMITH_TRACING"] = "true"
实例化
PerplexitySearchRetriever 接受以下构造函数参数:
- -
k— 最大结果数 (1–20)。默认为10. - -
max_tokens— 所有结果的最大总 token 数。 - -
max_tokens_per_page— 每个结果页面的最大 token 数。 - -
country— ISO 国家代码以偏置结果(例如"US"). - -
search_domain_filter— 要包含或排除的域名列表(最多 20 个)。在域名前面加-以排除它。参见 域名过滤文档. - -
search_recency_filter— 之一"day","week","month","year"。参见 日期和时间过滤文档. - -
search_after_date/search_before_date— 日期字符串格式为MM/DD/YYYYformat.
from langchain_perplexity import PerplexitySearchRetriever
retriever = PerplexitySearchRetriever(k=3)
用法
query = "what year was breath of the wild released?"
retriever.invoke(query)
每个返回的 Document 都有结果 snippet 作为其 page_content,以及 title, url, date,和 last_updated in metadata.
过滤后的用法
您可以使用 Perplexity Search API 支持的相同过滤器来约束搜索:
from langchain_perplexity import PerplexitySearchRetriever
retriever = PerplexitySearchRetriever(
k=5,
country="US",
search_recency_filter="week",
search_domain_filter=["nytimes.com", "reuters.com", "-pinterest.com"],
)
retriever.invoke("US Federal Reserve interest rate decisions")
from langchain_perplexity import PerplexitySearchRetriever
# Restrict results to a specific date range
retriever = PerplexitySearchRetriever(
k=5,
search_after_date="01/01/2025",
search_before_date="06/30/2025",
)
retriever.invoke("US Federal Reserve interest rate decisions")
在链中使用
我们可以轻松地将此检索器组合到链中以构建简单的 RAG 管道。
from langchain_core.output_parsers import StrOutputParser
from langchain_core.prompts import ChatPromptTemplate
from langchain_core.runnables import RunnablePassthrough
from langchain_openai import ChatOpenAI
prompt = ChatPromptTemplate.from_template(
"""Answer the question based only on the context provided.
Context: {context}
Question: {question}"""
)
llm = ChatOpenAI(model="gpt-5.5")
def format_docs(docs):
return "\n\n".join(doc.page_content for doc in docs)
chain = (
{"context": retriever | format_docs, "question": RunnablePassthrough()}
| prompt
| llm
| StrOutputParser()
)
chain.invoke("What were the major outcomes of the most recent Federal Reserve meeting?")
API 参考
有关 Perplexity Search API 及其所有选项的详细文档,请参见 Search API 参考 和 Perplexity API 文档.