Haystack 集成指南:使用 BraveWebSearch 组件接入 Brave Search API 构建实时 Web 搜索与 RAG 流水线

发布时间:2026/9/11 21:09:16
Haystack 集成指南:使用 BraveWebSearch 组件接入 Brave Search API 构建实时 Web 搜索与 RAG 流水线 Haystack 集成指南使用 BraveWebSearch 组件接入 Brave Search API 构建实时 Web 搜索与 RAG 流水线【免费下载链接】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/haystackBraveWebSearch 是 Haystack 官方生态中的网页搜索集成组件通过调用 Brave Search API 将查询结果转换为标准的 HaystackDocument对象与 URL 链接列表。本文基于仓库内该组件的 API 参考文档 与 组件使用指南完整讲解其初始化参数、run/run_async调用契约、独立使用与流水线内 RAG 集成的实战方法读完后你可以直接在自己的 Haystack 项目中接入实时网络检索能力。组件定位与适用场景在 Haystack 的组件体系中网页搜索类组件负责“从互联网获取最新信息”常见用途包括构建检索增强生成RAG流水线为 LLM 提供超出其训练时间范围的最新事实在索引indexing流水线起始处抓取网页内容将其转化为可入库的Document为 Agent 工具如 AgentTool提供实时搜索能力。Brave Search 是拥有独立网页索引的搜索引擎不依赖 Google 或 Bing 的生态。从源码结构看它适合对隐私与独立性有要求的搜索场景。该组件属于 Haystack 的外部集成external integration以独立包brave-haystack分发导入路径为haystack_integrations.components.websearch.brave。在 平台组件清单 中BraveWebSearch 被标记为可用组件同一目录下还提供 DuckDuckGoDDGSWebSearch、Tavily、SearchApi、SerperDev 等多个可替换的搜索实现见 WebSearch 组件总览。前置条件获取 API Key使用BraveWebSearch前需要先从 Brave 官方申请一个 Brave Search API key。组件默认从环境变量BRAVE_API_KEY读取密钥也支持在初始化时通过api_key参数直接传入from haystack.utils import Secret # 方式一从环境变量读取推荐避免密钥硬编码 api_key Secret.from_env_var(BRAVE_API_KEY) # 方式二直接传入明文 api_key Secret.from_token(你的-Brave-API-Key)Secret是 Haystack 统一管理敏感信息的工具类支持从环境变量、文件等来源解析密钥。建议在.env或部署环境变量中配置BRAVE_API_KEY而非把密钥写进代码。安装由于组件位于独立集成包中需要通过 pip 安装pip install brave-haystack安装后即可从haystack_integrations.components.websearch.brave导入组件。独立使用一次最简单的网页搜索组件核心用法是调用run(query...)发起搜索返回包含documents与links两个键的字典。以下为 API 参考文档 中给出的最小示例from haystack_integrations.components.websearch.brave import BraveWebSearch from haystack.utils import Secret websearch BraveWebSearch( api_keySecret.from_env_var(BRAVE_API_KEY), top_k5, ) result websearch.run(queryWhat is Haystack by deepset?) documents result[documents] links result[links]在 组件使用指南 中还有更完整的遍历写法from haystack_integrations.components.websearch.brave import BraveWebSearch from haystack.utils import Secret web_search BraveWebSearch( api_keySecret.from_env_var(BRAVE_API_KEY), top_k5, ) query What is Haystack by deepset? response web_search.run(queryquery) for doc in response[documents]: print(doc.content)其中documents是 Haystack 标准 Document 对象列表每个文档承载搜索结果的正文内容与元数据可直接作为下游检索、切分或提示词构建的输入links是字符串形式的来源 URL 列表便于做引用溯源。初始化参数详解BraveWebSearch.__init__的完整签名与默认值如下与 API 参考文档 一致__init__( api_key: Secret Secret.from_env_var(BRAVE_API_KEY), top_k: int | None 10, country: str | None None, search_lang: str | None None, extra_params: dict[str, Any] | None None, timeout: int 10, max_retries: int 3, ) - None各参数含义与使用要点参数类型默认值说明api_keySecret环境变量BRAVE_API_KEYBrave Search API 密钥。默认读取BRAVE_API_KEY也可显式传入top_kint \| None10返回结果的最大数量直接映射到 Brave API 的count参数countrystr \| NoneNone两位国家代码用于偏向某国结果例如US、DEsearch_langstr \| NoneNone结果语言代码例如en、deextra_paramsdict[str, Any] \| NoneNone额外查询参数原样透传给 Brave Search APItimeoutint10HTTP 请求超时时间秒max_retriesint3对瞬时故障的最大重试次数参数实战说明top_k与结果量控制top_k直接映射为 Brave API 的count决定单次请求返回的结果条数。它既可以在初始化时设定也可以在每次run时覆盖见下文适合“默认少取、特定场景多取”的灵活控制。country与search_lang用于地域与语言偏向。例如面向德国用户的知识库问答可设置countryDE, search_langde提升本地化结果命中率。extra_paramsBrave Search API 的其余可选参数如安全级别safesearch、时间范围过滤等可在此以字典形式透传无需升级组件即可使用 API 新特性。timeout与max_retries控制网络请求的稳健性。对生产环境建议保持默认或按网络状况适当调大timeout以降低偶发慢响应导致的失败率。run 与 run_async同步/异步调用契约runrun(query: str, top_k: int | None None) - dict[str, Any]参数querystr必填搜索查询串top_kint | None可选单次运行时的结果数量覆盖值若不传则使用初始化时的top_k。返回值dict[str, Any]包含documents搜索结果内容构成的Document列表links搜索结果来源 URL 列表。run_asyncrun_async(query: str, top_k: int | None None) - dict[str, Any]run_async提供完全一致的参数与返回结构但以异步方式执行网络请求。它面向需要高并发的场景例如在AsyncPipeline中与其他 I/O 密集型组件并行执行。从 Haystack 的异步机制看见 异步管道相关演进同步run与异步run_async是同一组件的两种执行入口接口契约保持一致。在流水线中使用实时 RAG 示例BraveWebSearch 最常见的流水线位置是ChatPromptBuilder之前作为信息源提供检索结果。以下为 组件使用指南 提供的完整 RAG 流水线示例通过BraveWebSearch → ChatPromptBuilder → OpenAIChatGenerator实现“联网检索 生成回答”from haystack import Pipeline from haystack.utils import Secret from haystack.components.builders.chat_prompt_builder import ChatPromptBuilder from haystack.components.generators.chat import OpenAIChatGenerator from haystack_integrations.components.websearch.brave import BraveWebSearch from haystack.dataclasses import ChatMessage web_search BraveWebSearch( api_keySecret.from_env_var(BRAVE_API_KEY), top_k3, ) 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( templateprompt_template, required_variables{query, documents}, ) llm OpenAIChatGenerator( api_keySecret.from_env_var(OPENAI_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)该示例的关键点连接关系search.documents输出接入prompt_builder.documentsprompt_builder.prompt接入llm.messages形成检索→拼装→生成的单向数据流模板变量ChatPromptBuilder通过required_variables{query, documents}声明必需变量Jinja 模板中{% for document in documents %}遍历搜索结果运行参数分发pipe.run时按组件名分别传入queryBraveWebSearch只消费search.query提示词构建器同时消费prompt_builder.query与已连接的documents。使用建议与注意事项密钥安全优先使用Secret.from_env_var(BRAVE_API_KEY)从环境变量注入避免在版本库中暴露密钥。结果数量权衡top_k越大Document越多LLM 上下文越长、费用越高实时问答场景通常3~5条即可索引抓取场景可适当调大。覆盖机制若需要“同一组件不同调用次数不同”可在run时用top_k参数覆盖初始化值组件按调用粒度生效。返回内容documents适合作为检索上下文links适合做引用溯源与后续深度抓取二者均已在 API 参考文档 的返回值约定中明确。备选方案如需免密钥搜索或聚合多引擎可参考 DDGSWebSearch完整搜索组件清单见 WebSearch 组件总览。相关资源BraveWebSearch API 参考本文核心依据含__init__、run、run_async的完整签名与参数说明BraveWebSearch 组件指南独立使用与流水线 RAG 完整示例WebSearch 组件总览Brave、DDGS、Tavily、SerperDev 等搜索组件横向对比平台组件清单BraveWebSearch 在 Haystack 平台中的可用性标注Document 数据类搜索结果的载体结构定义【免费下载链接】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),仅供参考

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询