SearchApiWebSearch
使用 Search API 的搜索引擎。
| pipeline 中的最常见位置 | 在 LinkContentFetcher 或 Converters 之前 |
| 必需的初始化变量 | "api_key": SearchAPI 的 API 密钥。可以设置为SEARCHAPI_API_KEY 环境变量。 |
| 强制运行变量 | "query": 包含你的查询的字符串 |
| 输出变量 | “documents”:文档列表 “links”: 结果链接的字符串列表 |
| API 参考 | Websearch |
| GitHub 链接 | https://github.com/deepset-ai/haystack/blob/main/haystack/components/websearch/searchapi.py |
概述
当你提供SearchApiWebSearch 查询时,它会返回与你的搜索最相关的 URL 列表。它使用页面摘要(搜索结果中标题下显示的文本片段)来查找答案,而不是整个页面。
要搜索网页内容,请使用 LinkContentFetcher 组件。
SearchApiWebSearch 需要 SearchApi 密钥才能工作。默认情况下,它使用SEARCHAPI_API_KEY 环境变量。否则,你可以传递一个api_key——请参阅下面的代码示例。
备选搜索
要使用 Serper Dev 作为替代,请参阅其相应的 文档页面。
用法
单独使用
这是如何SearchApiWebSearch 在网上查找我们查询的答案,并将结果转换为包含结果内容摘要以及 URL 的文档列表的示例。
from haystack.components.websearch import SearchApiWebSearch
web_search = SearchApiWebSearch(api_key=Secret.from_token("<your-api-key>"))
query = "What is the capital of Germany?"
response = web_search.run(query)
在 pipeline 中
这是一个 RAG 管道的示例,我们在其中使用一个SearchApiWebSearch 来查找查询的答案。然后将结果文档传递给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 SearchApiWebSearch
from haystack.dataclasses import ChatMessage
web_search = SearchApiWebSearch(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 个月前
