
Haystack 中的 DDGSWebSearch基于 ddgs 的无 Key 多引擎联网搜索组件实战指南【免费下载链接】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本指南围绕 Haystack 生态中的DDGSWebSearch组件展开它基于 ddgsDux Distributed Global Search这款免费、无需 API Key的元搜索引擎库一次查询即可聚合 DuckDuckGo、Google、Bing、Brave、Yahoo、Yandex、Mullvad 等多个后端的结果并转成 HaystackDocument。读完本文你将掌握DDGSWebSearch的安装、参数配置、单组件调用、异步执行以及如何把它接入 RAG 流水线实现零成本、免密钥的联网检索能力。组件定位零配置的联网搜索入口DDGSWebSearch是 Haystack 官方 WebSearch 组件家族的一员与 BraveWebSearch、SerperDevWebSearch、TavilyWebSearch 等基于商业 API 的搜索组件不同它不需要 API Key、不需要注册账号。ddgs 直接查询公开搜索引擎并聚合结果因此在快速原型、教学演示、无预算约束的场景下非常实用见 websearch 组件总览。在流水线中的典型位置是放在ChatPromptBuilder之前为对话生成提供实时的联网上下文放在索引流水线indexing pipeline的开头把搜索到的网页片段作为文档写入文档存储。它的输入输出契约非常简洁项目说明必需初始化参数无ddgs 不需要 API Key必需 run 参数query搜索查询字符串输出documents包含搜索结果摘要的 HaystackDocument列表标题与 URL 存放在meta中links结果 URL 字符串列表安装包名ddgs-haystack安装DDGSWebSearch属于独立的集成包使用前需要安装pip install ddgs-haystack安装完成后即可从haystack_integrations命名空间导入from haystack_integrations.components.websearch.ddgs import DDGSWebSearch快速上手单组件调用最基本的用法是实例化组件后直接调用run()无需任何密钥from haystack_integrations.components.websearch.ddgs import DDGSWebSearch websearch DDGSWebSearch(top_k5) result websearch.run(queryWhat is Haystack by deepset?) documents result[documents] links result[links]返回结果是一个字典包含两个键documents后端返回的Document列表doc.content为结果摘要文本doc.meta中带有结果标题与 URLlinks结果 URL 的字符串列表。遍历结果的常用写法web_search DDGSWebSearch(top_k5) response web_search.run(queryWhat is Haystack by deepset?) for doc in response[documents]: print(doc.meta[url]) print(doc.content)构造参数详解__init__的完整签名见 ddgs API 参考如下__init__( top_k: int 10, backend: str auto, region: str us-en, safesearch: str moderate, search_params: dict[str, Any] | None None, ) - None各参数的作用与建议取值参数类型默认值说明top_kint10最多返回的结果条数。backendstrauto逗号分隔的 ddgs 后端列表如duckduckgo, google, brave传auto时由 ddgs 自行选择后端。完整后端清单以 ddgs 文档为准。regionstrus-en搜索的区域/地区设置例如us-en、de-de传wt-wt表示不限定地区。safesearchstrmoderate安全搜索等级取值为on、moderate、off。search_paramsdict[str, Any] \| NoneNone透传给底层DDGS().text()的额外关键字参数例如page翻页或timelimit时间范围。注意与backend、region、safesearch、top_k冲突时search_params中的值优先生效。例如指定后端与地区并关闭安全搜索web_search DDGSWebSearch( top_k5, backendduckduckgo, brave, regionde-de, safesearchoff, )run()按次调用与运行时覆盖run()的完整签名如下run( query: str, top_k: int | None None, *, backend: str | None None, region: str | None None, safesearch: str | None None, search_params: dict[str, Any] | None None ) - dict[str, list[Document] | list[str]]query是唯一必需参数。其余参数均为可选的按次覆盖top_k未提供时沿用初始化时的top_kbackend未提供时沿用初始化时的backendregion未提供时沿用初始化时的regionsafesearch未提供时沿用初始化时的safesearchsearch_params需要注意传给run()的search_params字典会整体替换初始化时设置的search_params而不是做合并。返回值类型为dict[str, list[Document] | list[str]]包含documents与links两个键。这种设计让同一个组件实例可以服务不同查询需求默认配置在初始化时固化个别查询再通过run()临时调整。异步执行run_async()run_async()提供与run()完全相同的参数与返回值用于在异步流水线如Pipeline.run_async中调用run_async( query: str, top_k: int | None None, *, backend: str | None None, region: str | None None, safesearch: str | None None, search_params: dict[str, Any] | None None ) - dict[str, list[Document] | list[str]]实现要点ddgs 本身没有原生异步 API因此run_async()会把阻塞式的搜索放到工作线程worker thread中执行从而不阻塞事件循环。这一设计意味着你可以在高并发的异步服务中安全使用该组件而无需担心同步网络调用拖垮整个异步链路。warm_up()预热客户端、消除冷启动延迟warm_up() - Nonewarm_up()用于初始化 ddgs 客户端。底层客户端采用懒加载策略——在第一次搜索时才会创建因此首次调用会带来冷启动延迟。有两种处理方式不主动调用组件在首次使用时自动完成初始化主动调用在流水线运行前显式调用warm_up()提前创建客户端把冷启动延迟转移到启动阶段。web_search DDGSWebSearch(top_k5) web_search.warm_up() # 提前初始化客户端避免首次搜索延迟实战接入 RAG 流水线将DDGSWebSearch与ChatPromptBuilder、OpenAIChatGenerator组合即可构建一个检索即答案的轻量 RAG 流水线完整示例见 ddgswebsearch 使用文档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.ddgs import DDGSWebSearch from haystack.dataclasses import ChatMessage web_search DDGSWebSearch(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联网搜索→prompt_builder把文档摘要注入提示词→llm生成最终答案。注意提示词模板通过 Jinja2 循环展开documents的内容并把用户问题query一并注入。获取完整网页内容配合 LinkContentFetcherddgs 返回的只是**短摘要snippet**而非完整网页正文。当 RAG 应用需要更丰富的上下文时建议在搜索之后追加LinkContentFetcher抓取links指向的网页再用 HTML 转换器将其转为可索引的文本。这是把搜索升级为深度阅读的关键一步。注意事项尽力而为的结果质量ddgs 直接查询公开搜索引擎、没有 API 契约因此结果属于尽力而为best-effort不同时间运行结果可能存在差异高频、大量调用可能被限流或临时封禁。如果生产环境需要可预测的速率限制和 SLA建议改用商业搜索 API 支撑的组件例如TavilyWebSearch或SerperDevWebSearch。DDGSWebSearch更适合无密钥原型验证、教学演示以及对结果稳定性要求不高的场景。小结DDGSWebSearch以零密钥、多后端、即插即用的特点成为 Haystack 生态中上手成本最低的联网搜索组件免 API Key、免账号安装ddgs-haystack即可使用多后端聚合DuckDuckGo、Google、Bing、Brave、Yahoo、Yandex、Mullvad 等可用backend参数指定或auto自动选择参数灵活top_k、region、safesearch、search_params既可初始化固化也可在run()/run_async()中按次覆盖异步友好run_async()通过工作线程封装阻塞调用可安全用于异步流水线易于扩展与LinkContentFetcher组合即可获得完整网页内容。如需查阅本组件的权威接口签名可参考 ddgs 集成 API 参考 与 DDGSWebSearch 组件文档若想对比其他搜索组件可浏览 WebSearch 组件总览。【免费下载链接】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),仅供参考