SerperDevWebSearch
使用 SerperDev API 进行的网络搜索引擎。
| pipeline 中的最常见位置 | 在 LinkContentFetcher 或 Converters 之前 |
| 必需的初始化变量 | "api_key": SearchAPI 的 API 密钥。可以通过以下方式设置:SERPERDEV_API_KEY 环境变量。 |
| 强制运行变量 | “query”: 包含您查询的字符串 |
| 输出变量 | “documents”:文档列表 “links”: 结果链接字符串列表 |
| API 参考 | Websearch |
| GitHub 链接 | https://github.com/deepset-ai/haystack/blob/main/haystack/components/websearch/serper_dev.py |
概述
当您将SerperDevWebSearch 提供给查询时,它会返回与您的搜索最相关的 URL 列表。它使用页面摘要(搜索结果中页面标题下方显示的文本片段)来查找答案,而不是整个页面。
要搜索网页内容,请使用 LinkContentFetcher 组件。
SerperDevWebSearch 需要 SerperDev 密钥才能工作。它默认使用SERPERDEV_API_KEY 环境变量。否则,您可以传递一个api_key——请参阅下面的代码示例。
替代搜索
要使用 Search API 作为替代,请参阅其对应的 文档页面。
用法
单独使用
这是一个关于SerperDevWebSearch 如何在网上查找我们查询的答案,并将结果转换为包含结果内容摘要以及 URL 作为字符串的文档列表的示例。
from haystack.components.websearch import SerperDevWebSearch
from haystack.utils import Secret
web_search = SerperDevWebSearch(api_key=Secret.from_token("<your-api-key>"))
query = "What is the capital of Germany?"
response = web_search.run(query)
在 pipeline 中
以下是一个 RAG 管道的示例,其中我们使用SerperDevWebSearch 来查找查询的答案。然后将生成的文档传递给LinkContentFetcher 以从 URL 获取完整文本。最后,PromptBuilder 和OpenAIGenerator 一起工作以形成最终答案。
from haystack import Pipeline
from haystack.utils import Secret
from haystack.components.builders.chat_prompt_builder import ChatPromptBuilder
from haystack.components.fetchers import LinkContentFetcher
from haystack.components.converters import HTMLToDocument
from haystack.components.generators.chat import OpenAIChatGenerator
from haystack.components.websearch import SerperDevWebSearch
from haystack.dataclasses import ChatMessage
from haystack.utils import Secret
web_search = SerperDevWebSearch(api_key=Secret.from_token("<your-api-key>"), top_k=2)
link_content = LinkContentFetcher()
html_converter = HTMLToDocument()
prompt_template = [
ChatMessage.from_system("You are a helpful assistant."),
ChatMessage.from_user(
"Given the information below:\n"
"{% for document in documents %}{{ document.content }}{% endfor %}\n"
"Answer question: {{ query }}.\nAnswer:"
)
]
prompt_builder = ChatPromptBuilder(template=prompt_template, required_variables={"query", "documents"})
llm = OpenAIChatGenerator(api_key=Secret.from_token("<your-api-key>"), model="gpt-3.5-turbo")
pipe = Pipeline()
pipe.add_component("search", web_search)
pipe.add_component("fetcher", link_content)
pipe.add_component("converter", html_converter)
pipe.add_component("prompt_builder", prompt_builder)
pipe.add_component("llm", llm)
pipe.connect("search.links", "fetcher.urls")
pipe.connect("fetcher.streams", "converter.sources")
pipe.connect("converter.documents", "prompt_builder.documents")
pipe.connect("prompt_builder.messages", "llm.messages")
query = "What is the most famous landmark in Berlin?"
pipe.run(data={"search": {"query": query}, "prompt_builder": {"query": query}})
其他参考资料
📓 教程:使用条件路由构建到网络搜索的回退
更新于 7 个月前
