Haystack × Perplexity 集成实战:Embedding 向量化、Agent 对话生成与联网搜索
2026/9/12 17:27:24 网站建设 项目流程

Haystack × Perplexity 集成实战:Embedding 向量化、Agent 对话生成与联网搜索

【免费下载链接】haystackOpen-source AI orchestration framework for building context-engineered, production-ready LLM applications. Design modular pipelines and agent workflows with explicit control over retrieval, routing, memory, and generation. Built for scalable agents, RAG, multimodal applications, semantic search, and conversational systems.项目地址: https://gitcode.com/GitHub_Trending/ha/haystack

导读

Perplexity 为 Haystack 提供了完整的集成组件(集成包名perplexity-haystack),覆盖"向量化—生成—联网检索"三条链路:PerplexityDocumentEmbedderPerplexityTextEmbedder负责将文档和查询文本转换为向量,支撑 Embedding 检索;PerplexityChatGenerator通过 OpenAI Responses 兼容的 Perplexity Agent API 完成对话生成与工具调用;PerplexityWebSearch则基于 Perplexity Search API 将搜索结果包装成 HaystackDocument。读完本文,你将掌握这四个组件的全部构造参数、串行/异步调用方式、Pipeline 接入方法与底层实现原理,并能直接组装出一条"联网搜索 → 提示构建 → 对话生成"的完整 RAG 流水线。

本文基于仓库中的 Perplexity 集成 API 参考 展开,并结合对应的组件使用文档(PerplexityDocumentEmbedder、PerplexityTextEmbedder、PerplexityChatGenerator、PerplexityWebSearch)以及 Haystack 核心库中四个基类的源码加以印证。


一、集成总览:四个组件、一个 API Key

Perplexity 集成由四个组件构成,它们分别位于haystack_integrations.components.embedders.perplexityhaystack_integrations.components.websearch.perplexity命名空间下:

组件所属模块基类核心用途
PerplexityDocumentEmbedderembedders.perplexity.document_embedderOpenAIDocumentEmbedder批量计算 Document 的向量,写入每个 Document 的embedding字段
PerplexityTextEmbedderembedders.perplexity.text_embedderOpenAITextEmbedder将单个字符串(如查询)转换为向量
PerplexityChatGeneratorgenerators.perplexity.chat.chat_generatorOpenAIResponsesChatGenerator基于 Perplexity Agent API(POST /v1/agent)完成对话补全
PerplexityWebSearchwebsearch.perplexity.perplexity_websearch独立实现封装 Perplexity Search API,返回 HaystackDocument与 URL 列表

四个组件全部通过PERPLEXITY_API_KEY环境变量读取 API Key(构造时默认值为Secret.from_env_var("PERPLEXITY_API_KEY")),也可以显式传入api_key=Secret.from_token("<your-api-key>")覆盖。官方使用文档明确建议优先使用环境变量方式,避免把密钥硬编码进代码或配置文件。

从源码结构看,两个 Embedder 与PerplexityChatGenerator都不是从零实现,而是复用 Haystack 核心库中经过充分测试的 OpenAI 兼容客户端逻辑(见 openai_document_embedder.py、openai_text_embedder.py、openai_responses.py),仅将模型列表、默认模型、编码格式等替换为 Perplexity 专属配置——这意味着它们天然继承了 OpenAI 组件成熟的批处理、重试、超时与 HTTP 客户端定制能力。


二、PerplexityDocumentEmbedder:文档批量向量化

PerplexityDocumentEmbedder用于对一批Document计算向量,结果写入每个文档的embedding字段。这些向量是 Embedding 检索的基础:检索时查询向量会与文档向量逐一比较相似度,找出最相关的文档。因此在索引 Pipeline 中,它的典型位置是DocumentWriter之前。

2.1 支持的模型与默认值

组件通过类属性SUPPORTED_MODELS声明当前支持的模型:

SUPPORTED_MODELS: list[str] = ['pplx-embed-v1-0.6b', 'pplx-embed-v1-4b']
  • pplx-embed-v1-0.6b:默认模型;
  • pplx-embed-v1-4b:更大规模的模型。

Perplexity 官方 Embeddings API 会持续更新模型 ID 列表,集成文档也注明应以官方 API 参考中的最新模型为准。

2.2 构造参数详解

PerplexityDocumentEmbedder( *, api_key: Secret = Secret.from_env_var("PERPLEXITY_API_KEY"), model: str = "pplx-embed-v1-0.6b", api_base_url: str | None = "https://api.perplexity.ai/v1", prefix: str = "", suffix: str = "", batch_size: int = 32, progress_bar: bool = True, meta_fields_to_embed: list[str] | None = None, embedding_separator: str = "\n", encoding_format: str = "base64_int8", timeout: float | None = None, max_retries: int | None = None, http_client_kwargs: dict[str, Any] | None = None ) -> None

各参数含义与取值约束:

参数类型默认值说明
api_keySecretPERPLEXITY_API_KEY环境变量Perplexity API 密钥
modelstrpplx-embed-v1-0.6b使用的嵌入模型名
api_base_urlstr \| Nonehttps://api.perplexity.ai/v1Perplexity API 基础地址,需要代理或自建网关时可覆盖
prefixstr""拼接到每段文本开头的字符串,可用于给文本附加指令/标识
suffixstr""拼接到每段文本末尾的字符串
batch_sizeint32每批次编码的 Document 数量,控制吞吐与内存/配额消耗的平衡
progress_barboolTrue是否显示进度条;生产环境建议关闭以保持日志干净
meta_fields_to_embedlist[str] \| NoneNone需要连同正文一起嵌入的元数据字段名列表
embedding_separatorstr"\n"拼接元数据与正文时使用的分隔符
encoding_formatstrbase64_int8嵌入返回的编码格式,支持base64_int8base64_binary
timeoutfloat \| NoneNone客户端调用超时;未设置时回退到OPENAI_TIMEOUT环境变量,再默认 30 秒
max_retriesint \| NoneNone遇到内部错误后的最大重试次数;未设置时回退到OPENAI_MAX_RETRIES环境变量,再默认 5 次
http_client_kwargsdict[str, Any] \| NoneNone用于定制httpx.Client/httpx.AsyncClient的关键字参数字典

两点值得注意的细节:

  • timeoutmax_retries的环境变量回退链:Perplexity 集成刻意复用了 OpenAI 客户端的环境变量约定(OPENAI_TIMEOUTOPENAI_MAX_RETRIES),这与基类OpenAIDocumentEmbedder的实现保持一致。如果你在同一环境中同时使用 OpenAI 与 Perplexity 组件,修改这两个环境变量会同时影响两类组件。
  • encoding_format的取舍:默认的base64_int8以 int8 量化形式返回向量,相比全精度浮点可显著降低响应体积与传输成本,这也是 Perplexity Embeddings API 的推荐做法;base64_binary则返回二进制格式,适合需要自行解包原始字节流的场景。

2.3 独立使用

from haystack import Document from haystack_integrations.components.embedders.perplexity import PerplexityDocumentEmbedder doc = Document(content="I love pizza!") document_embedder = PerplexityDocumentEmbedder() result = document_embedder.run([doc]) print(result["documents"][0].embedding)

run()的输入是一份 Document 列表,输出字典包含两个键:

  • documents:嵌入完成后的 Document 列表(每个文档的embedding字段已被填充);
  • meta:本次调用的元数据字典。

在组件文档的示例中,打印出的向量形如[0.017020374536514282, -0.023255806416273117, ...],即一组浮点列表。

2.4 嵌入元数据以提升检索质量

如果文档的元数据字段本身具有语义价值(如标题、分类),可以将其一并嵌入正文,从而提升检索相关性:

from haystack import Document from haystack_integrations.components.embedders.perplexity import PerplexityDocumentEmbedder doc = Document(content="some text", meta={"title": "relevant title", "page_number": 18}) embedder = PerplexityDocumentEmbedder(meta_fields_to_embed=["title"]) docs_with_embeddings = embedder.run(documents=[doc])["documents"]

注意示例中的page_number虽然是元数据字段,但并未被列入meta_fields_to_embed——只有数值型、文本型等语义可嵌入的字段才适合参与嵌入;纯标识类字段(页码、ID 等)通常应排除。多个元数据字段与正文之间会以embedding_separator(默认换行符\n)拼接。

2.5 在索引 Pipeline 中使用

将 DocumentEmbedder 与DocumentWriter串联,即可完成"文档 → 向量 → 入库"的索引流水线:

from haystack import Document, Pipeline from haystack.document_stores.in_memory import InMemoryDocumentStore from haystack.components.writers import DocumentWriter from haystack_integrations.components.embedders.perplexity import PerplexityDocumentEmbedder document_store = InMemoryDocumentStore(embedding_similarity_function="cosine") documents = [ Document(content="My name is Wolfgang and I live in Berlin"), Document(content="I saw a black horse running"), Document(content="Germany has many big cities"), ] indexing_pipeline = Pipeline() indexing_pipeline.add_component("embedder", PerplexityDocumentEmbedder()) indexing_pipeline.add_component("writer", DocumentWriter(document_store=document_store)) indexing_pipeline.connect("embedder", "writer") indexing_pipeline.run({"embedder": {"documents": documents}})

这里InMemoryDocumentStore配置了余弦相似度作为检索度量。从基类 openai_document_embedder.py 的实现看,run()会先按batch_size切分文本,再经由_embed_batch()逐批调用 Embeddings 接口(第 243 行起),最终把返回向量按 Document ID 回填;run_async()则对应_embed_batch_async()异步路径。这意味着批量大小直接决定单次请求的文本条数,需要结合 Perplexity 的配额与单请求限制来调整。


三、PerplexityTextEmbedder:查询文本向量化

PerplexityTextEmbedder把单个字符串转换为向量,是查询侧的标准组件:在 Embedding 检索场景中,它先把用户查询变成向量,再由 Embedding Retriever 在文档库中找相似文档。典型 Pipeline 位置是 Embedding Retriever 之前。

3.1 构造参数详解

PerplexityTextEmbedder( *, api_key: Secret = Secret.from_env_var("PERPLEXITY_API_KEY"), model: str = "pplx-embed-v1-0.6b", api_base_url: str | None = "https://api.perplexity.ai/v1", prefix: str = "", suffix: str = "", encoding_format: str = "base64_int8", timeout: float | None = None, max_retries: int | None = None, http_client_kwargs: dict[str, Any] | None = None ) -> None

与 Document 版本相比,PerplexityTextEmbedder精简了与批量处理相关的参数(无batch_sizeprogress_barmeta_fields_to_embedembedding_separator),因为单次run()只处理一个字符串。其余参数语义完全一致:model默认pplx-embed-v1-0.6bprefix/suffix用于在文本前后追加内容;timeoutmax_retries同样遵循OPENAI_TIMEOUT/OPENAI_MAX_RETRIES环境变量回退链(默认 30 秒 / 5 次)。

SUPPORTED_MODELS与 Document 版本相同:

SUPPORTED_MODELS: list[str] = ['pplx-embed-v1-0.6b', 'pplx-embed-v1-4b']

3.2 独立使用

from haystack_integrations.components.embedders.perplexity import PerplexityTextEmbedder text_embedder = PerplexityTextEmbedder() result = text_embedder.run("I love pizza!") print(result["embedding"]) # [0.017020374536514282, -0.023255806416273117, ...]

run()接收一个text字符串,输出字典包含embedding(浮点向量)与meta两个键。

3.3 查询 Pipeline 示例

与 DocumentEmbedder 搭配,形成完整的"索引 + 检索"闭环:

from haystack import Document, Pipeline from haystack.document_stores.in_memory import InMemoryDocumentStore from haystack.components.retrievers.in_memory import InMemoryEmbeddingRetriever from haystack_integrations.components.embedders.perplexity import ( PerplexityTextEmbedder, PerplexityDocumentEmbedder, ) document_store = InMemoryDocumentStore(embedding_similarity_function="cosine") documents = [ Document(content="My name is Wolfgang and I live in Berlin"), Document(content="I saw a black horse running"), Document(content="Germany has many big cities"), ] # 索引侧:文档向量化并入库 document_embedder = PerplexityDocumentEmbedder() documents_with_embeddings = document_embedder.run(documents)["documents"] document_store.write_documents(documents_with_embeddings) # 查询侧:查询向量化 + 相似度检索 query_pipeline = Pipeline() query_pipeline.add_component("text_embedder", PerplexityTextEmbedder()) query_pipeline.add_component( "retriever", InMemoryEmbeddingRetriever(document_store=document_store), ) query_pipeline.connect("text_embedder.embedding", "retriever.query_embedding") result = query_pipeline.run({"text_embedder": {"text": "Who lives in Berlin?"}}) print(result["retriever"]["documents"][0])

注意PerplexityTextEmbedder的输出槽位是embedding,通过connect("text_embedder.embedding", "retriever.query_embedding")InMemoryEmbeddingRetrieverquery_embedding输入槽位对接。从基类 openai_text_embedder.py 可以看出,文本向量化同样经由 OpenAI 兼容的 Embeddings 客户端完成,因此其超时、重试与 HTTP 客户端配置行为与 Document 版本完全一致。


四、PerplexityChatGenerator:基于 Agent API 的对话生成

PerplexityChatGenerator完成对话补全,其底层是 Perplexity Agent API(POST /v1/agent),采用 OpenAI Responses 兼容协议,因此基类直接复用 Haystack 核心库的OpenAIResponsesChatGenerator(见 openai_responses.py)。它输入输出均为 Haystack 的ChatMessage数据类(定义于 chat_message.py),支持通过generation_kwargs透传任意 Perplexity Agent API 参数。

4.1 支持的模型

SUPPORTED_MODELS: list[str] = [ "openai/gpt-5.5", "openai/gpt-5.4", "openai/gpt-4o", "anthropic/claude-sonnet-4-6", "xai/grok-4-1", "google/gemini-3-flash-preview", ]

这是一个"非穷尽"列表:Perplexity Agent API 支持跨多家模型提供方(OpenAI、Anthropic、xAI、Google)的模型,组件文档中的示例还出现了xai/grok-4.3等型号,不同版本的文档快照略有出入。实际可用的完整模型列表以 Perplexity 官方 Agent API 模型页面为准。默认模型为openai/gpt-5.4

4.2 构造参数详解

PerplexityChatGenerator( *, api_key: Secret = Secret.from_env_var("PERPLEXITY_API_KEY"), model: str = "openai/gpt-5.4", api_base_url: str | None = "https://api.perplexity.ai/v1", streaming_callback: StreamingCallbackT | None = None, organization: str | None = None, generation_kwargs: dict[str, Any] | None = None, tools: ToolsType | list[dict[str, Any]] | None = None, tools_strict: bool = False, timeout: float | None = None, extra_headers: dict[str, Any] | None = None, max_retries: int | None = None, http_client_kwargs: dict[str, Any] | None = None ) -> None
参数说明
api_keyPerplexity API 密钥,默认取PERPLEXITY_API_KEY环境变量
model使用的 Agent API 模型,默认openai/gpt-5.4
api_base_urlAPI 基础地址,默认https://api.perplexity.ai/v1
streaming_callback流式回调函数,收到新 token 时被调用
organization转发给 OpenAI 兼容客户端的组织 ID
generation_kwargs直接发送给 Perplexity Agent API 的附加参数(如 temperature、max_tokens 等),可在初始化或run()时传入
toolsHaystack 工具列表、Toolset,或 OpenAI 兼容的工具定义字典列表
tools_strict是否对 Haystack 工具调用启用严格 schema 约束
timeoutAPI 调用超时
extra_headers附加到请求上的 HTTP 头
max_retries内部错误后的最大重试次数
http_client_kwargs定制httpx.Client/httpx.AsyncClient的关键字参数

generation_kwargs是本组件的关键扩展点。基类 openai_responses.py 在构造时执行self.generation_kwargs = generation_kwargs or {},并在每次调用时将这批参数与run()时传入的generation_kwargs合并后直接发往服务端。因此任何 Perplexity Agent API 支持的采样参数(如temperaturemax_output_tokens、搜索相关参数等)都可以通过这一入口透传,无需升级集成版本。

4.3 独立使用

from haystack.dataclasses import ChatMessage from haystack_integrations.components.generators.perplexity import PerplexityChatGenerator messages = [ChatMessage.from_user("What's Natural Language Processing?")] client = PerplexityChatGenerator() response = client.run(messages) print(response)

run()接收ChatMessage列表,输出字典中的replies是模型对输入对话的备选回复列表,可通过response["replies"][0].text取出文本。

4.4 流式输出

传入任意可调用对象作为streaming_callback即可开启流式输出,也可以直接使用 Haystack 内置的print_streaming_chunk

from haystack.dataclasses import ChatMessage from haystack.components.generators.utils import print_streaming_chunk from haystack_integrations.components.generators.perplexity import PerplexityChatGenerator chat_generator = PerplexityChatGenerator(streaming_callback=print_streaming_chunk) response = chat_generator.run( [ChatMessage.from_user("What's Natural Language Processing? Be brief.")], )

流式回调会在每个新 token 到达时被触发,适合构建打字机式的交互体验;关闭流式后则一次性返回完整回复。

4.5 在对话 Pipeline 中使用

典型位置是ChatPromptBuilder之后,接收其构建的 prompt:

from haystack import Pipeline from haystack.components.builders import ChatPromptBuilder from haystack.dataclasses import ChatMessage from haystack.utils import Secret from haystack_integrations.components.generators.perplexity import PerplexityChatGenerator prompt_builder = ChatPromptBuilder( template=[ ChatMessage.from_system("You are a helpful assistant."), ChatMessage.from_user("Tell me about {{topic}}"), ], required_variables="*", ) llm = PerplexityChatGenerator( api_key=Secret.from_env_var("PERPLEXITY_API_KEY"), model="openai/gpt-5.4", ) pipe = Pipeline() pipe.add_component("prompt_builder", prompt_builder) pipe.add_component("llm", llm) pipe.connect("prompt_builder.prompt", "llm.messages") result = pipe.run(data={"prompt_builder": {"topic": "large language models"}}) print(result["llm"]["replies"][0].text)

tools参数使该组件可以直接接收 Haystack 的Tool/Toolset或 OpenAI 兼容工具定义,从而在 Agent 场景中让模型自主决定调用外部工具;tools_strict=True时会对 Haystack 工具调用强制 schema 严格匹配。


五、PerplexityWebSearch:把联网搜索包装成 Documents

PerplexityWebSearch封装了 Perplexity Search API:给定查询字符串,返回结构化搜索结果——既有正文内容,也有来源链接。它是四个组件中唯一独立实现(不继承 OpenAI 客户端基类)的组件。

5.1 构造参数详解

PerplexityWebSearch( *, api_key: Secret = Secret.from_env_var("PERPLEXITY_API_KEY"), top_k: int | None = 10, search_params: dict[str, Any] | None = None, timeout: float = 30.0 ) -> None
参数默认值说明
api_keyPERPLEXITY_API_KEY环境变量Perplexity API 密钥
top_k10最大返回结果数,映射到 Search API 的max_results参数,取值范围 1–20
search_paramsNone传给 Search API 的附加参数(见下文)
timeout30.0请求超时(秒)

search_params支持的键包括:max_tokens_per_pagecountrysearch_recency_filtersearch_domain_filtersearch_language_filterlast_updated_after_filterlast_updated_before_filtersearch_after_date_filtersearch_before_date_filter。它们覆盖了国家/地区、时效性、域名、语言、更新日期等常见搜索过滤维度。

5.2 返回结构与生命周期方法

run(query, search_params=None)返回字典:

  • documentslist[Document]——每个 Document 的content为搜索结果文本片段,meta字典中带有titleurldatelast_updated等字段;
  • linkslist[str]——结果来源 URL 列表。

run()中传入的search_params如果提供,会完全替换初始化时的search_params(而非合并),这一点在需要按请求动态切换过滤条件时需要注意。

组件还提供四个生命周期方法:

  • warm_up():初始化同步 HTTP 客户端。首次调用run()时会自动触发,也可显式调用以消除首次请求的冷启动延迟;
  • warm_up_async():初始化异步 HTTP 客户端,供run_async()使用;
  • close():释放同步 HTTP 客户端;
  • close_async():释放异步 HTTP 客户端。

5.3 独立使用

from haystack.utils import Secret from haystack_integrations.components.websearch.perplexity import PerplexityWebSearch 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"] for doc in documents: print(doc.content) print(doc.meta["url"])

带过滤条件的版本:

from haystack.utils import Secret from haystack_integrations.components.websearch.perplexity import PerplexityWebSearch web_search = PerplexityWebSearch( api_key=Secret.from_env_var("PERPLEXITY_API_KEY"), top_k=5, search_params={"country": "us", "search_recency_filter": "week"}, ) result = web_search.run(query="Latest AI research papers") for doc in result["documents"]: print(doc.meta["title"], doc.meta["url"])

异步调用对应run_async(),签名与返回结构完全一致,适用于 asyncio 环境。

5.4 在 RAG Pipeline 中使用(联网问答)

下面是一条完整的"搜索 → 构建提示 → 生成"RAG 流水线,把PerplexityWebSearchChatPromptBuilderPerplexityChatGenerator串起来,让模型基于实时联网结果作答:

from haystack import Pipeline from haystack.utils import Secret from haystack.components.builders.chat_prompt_builder import ChatPromptBuilder from haystack.dataclasses import ChatMessage from haystack_integrations.components.generators.perplexity import PerplexityChatGenerator from haystack_integrations.components.websearch.perplexity import PerplexityWebSearch web_search = PerplexityWebSearch( api_key=Secret.from_env_var("PERPLEXITY_API_KEY"), top_k=3, ) prompt_template = [ ChatMessage.from_system("You are a helpful assistant."), ChatMessage.from_user( "Given the information below:\n" "{% for document in documents %}{{ document.content }}\n{% endfor %}\n" "Answer the following question: {{ query }}.\nAnswer:", ), ] prompt_builder = ChatPromptBuilder( template=prompt_template, required_variables=["query", "documents"], ) llm = PerplexityChatGenerator( api_key=Secret.from_env_var("PERPLEXITY_API_KEY"), ) pipe = Pipeline() pipe.add_component("search", web_search) pipe.add_component("prompt_builder", prompt_builder) pipe.add_component("llm", llm) pipe.connect("search.documents", "prompt_builder.documents") pipe.connect("prompt_builder.prompt", "llm.messages") query = "What is Haystack by deepset?" result = pipe.run(data={"search": {"query": query}, "prompt_builder": {"query": query}}) print(result["llm"]["replies"][0].text)

这条 Pipeline 中,搜索结果的documents被模板循环渲染进用户消息,模型据此生成有依据的回答。由于PerplexityWebSearch输出的是标准Document对象,它同样可以直接接入索引 Pipeline(例如搜索结果先经转换、切分后写入文档库),作为知识库的实时补充数据源。


六、序列化与 Pipeline 运维要点

四个组件都实现了标准的序列化协议:

  • to_dict() -> dict[str, Any]:把组件序列化为字典,便于保存到 YAML/JSON;
  • from_dict(data: dict[str, Any]) -> PerplexityXxx:从字典反序列化还原组件实例。

to_dict()返回的字典包含组件的类型标识与全部构造参数(API Key 以Secret的序列化形式安全存储,不会明文落盘)。这意味着你可以把包含 Perplexity 组件的 Pipeline 定义导出为 YAML 文件,在部署环境通过 Haystack 的Pipeline.load_from_yaml()还原——配合PERPLEXITY_API_KEY环境变量注入密钥,即可实现"配置即代码"的部署方式。

在生产环境使用时的几条建议:

  1. API Key 一律走环境变量:所有组件默认读取PERPLEXITY_API_KEY,不要写死在代码或 YAML 中;
  2. 关闭进度条PerplexityDocumentEmbedder(progress_bar=False)可避免批量索引时日志被进度条刷屏;
  3. 按配额调整batch_sizetop_k:批量嵌入的batch_size直接影响单请求文本条数,top_k被约束在 1–20;两者都要与你的 API 配额匹配;
  4. 善用超时与重试回退timeout/max_retries未显式设置时会回退到OPENAI_TIMEOUT/OPENAI_MAX_RETRIES,再回退到 30 秒/5 次;
  5. WebSearch 显式 warm_up:在延迟敏感的服务启动阶段提前调用warm_up(),避免首次请求承担 HTTP 客户端初始化开销。

七、小结

Perplexity 集成让 Haystack 开发者用一套perplexity-haystack包补齐三条能力链路:

  • 向量化PerplexityDocumentEmbedder(批量文档)与PerplexityTextEmbedder(单条查询)基于pplx-embed-v1系列模型产出向量,支撑 Embedding 检索与语义匹配,支持元数据联合嵌入、base64_int8紧凑编码与批量控制;
  • 生成PerplexityChatGenerator经 OpenAI Responses 兼容的 Agent API 接入跨厂商模型,支持流式输出、generation_kwargs透传、工具调用与严格 schema;
  • 联网检索PerplexityWebSearch把实时搜索结果规范化为Document+links,支持国家、时效、域名、语言与日期范围过滤,且同时提供同步与异步两条执行路径。

三者可以独立使用,也可以像 5.4 节那样组装成"联网搜索 → 提示构建 → 对话生成"的端到端 RAG 流水线。想深入了解每个组件的完整参数与 Pipeline 接入方式,可继续阅读 PerplexityDocumentEmbedder 使用文档、PerplexityTextEmbedder 使用文档、PerplexityChatGenerator 使用文档 与 PerplexityWebSearch 使用文档;向量化与生成组件的底层行为可在 openai_document_embedder.py、openai_text_embedder.py 与 openai_responses.py 中继续追踪。

【免费下载链接】haystackOpen-source AI orchestration framework for building context-engineered, production-ready LLM applications. Design modular pipelines and agent workflows with explicit control over retrieval, routing, memory, and generation. Built for scalable agents, RAG, multimodal applications, semantic search, and conversational systems.项目地址: https://gitcode.com/GitHub_Trending/ha/haystack

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询