文档API 参考📓 教程🧑‍🍳 食谱🤝 集成💜 Discord🎨 Studio
API 参考

Websearch

Haystack 的网络搜索引擎。

模块 serper_dev

SerperDevWebSearch

使用 Serper 搜索网络以查找相关文档。

有关更多详细信息,请参阅 Serper Dev 网站

使用示例

from haystack.components.websearch import SerperDevWebSearch
from haystack.utils import Secret

websearch = SerperDevWebSearch(top_k=10, api_key=Secret.from_token("test-api-key"))
results = websearch.run(query="Who is the boyfriend of Olivia Wilde?")

assert results["documents"]
assert results["links"]

# Example with domain filtering - exclude subdomains
websearch_filtered = SerperDevWebSearch(
    top_k=10,
    allowed_domains=["example.com"],
    exclude_subdomains=True,  # Only results from example.com, not blog.example.com
    api_key=Secret.from_token("test-api-key")
)
results_filtered = websearch_filtered.run(query="search query")

SerperDevWebSearch.__init__

def __init__(api_key: Secret = Secret.from_env_var("SERPERDEV_API_KEY"),
             top_k: Optional[int] = 10,
             allowed_domains: Optional[list[str]] = None,
             search_params: Optional[dict[str, Any]] = None,
             *,
             exclude_subdomains: bool = False)

初始化 SerperDevWebSearch 组件。

参数:

  • api_key:Serper API 的 API 密钥。
  • top_k:要返回的文档数量。
  • allowed_domains:限制搜索的域名列表。
  • exclude_subdomains:在按 allowed_domains 过滤时是否排除子域名。如果为 True,则只返回 allowed_domains 中确切域名的结果。如果为 False,则也包括子域名的结果。默认为 False。
  • search_params:传递给 Serper API 的其他参数。例如,您可以将“num”设置为 20 以增加搜索结果的数量。有关更多详细信息,请参阅 Serper 网站

SerperDevWebSearch.to_dict

def to_dict() -> dict[str, Any]

将组件序列化为字典。

返回值:

包含序列化数据的字典。

SerperDevWebSearch.from_dict

@classmethod
def from_dict(cls, data: dict[str, Any]) -> "SerperDevWebSearch"

将组件序列化为字典。

返回值:

包含序列化数据的字典。

SerperDevWebSearch.run

@component.output_types(documents=list[Document], links=list[str])
def run(query: str) -> dict[str, Union[list[Document], list[str]]]

使用 Serper 搜索网络。

参数:

  • query:搜索查询。

引发:

  • SerperDevError:如果查询 SerperDev API 时发生错误。
  • TimeoutError:如果请求 SerperDev API 超时。

返回值:

包含以下键的字典

  • "documents":搜索引擎返回的文档列表。
  • "links":搜索引擎返回的链接列表。

模块 searchapi

SearchApiWebSearch

使用 SearchApi 搜索网络以查找相关文档。

使用示例

from haystack.components.websearch import SearchApiWebSearch
from haystack.utils import Secret

websearch = SearchApiWebSearch(top_k=10, api_key=Secret.from_token("test-api-key"))
results = websearch.run(query="Who is the boyfriend of Olivia Wilde?")

assert results["documents"]
assert results["links"]

SearchApiWebSearch.__init__

def __init__(api_key: Secret = Secret.from_env_var("SEARCHAPI_API_KEY"),
             top_k: Optional[int] = 10,
             allowed_domains: Optional[list[str]] = None,
             search_params: Optional[dict[str, Any]] = None)

初始化 SearchApiWebSearch 组件。

参数:

  • api_key:SearchApi API 的 API 密钥
  • top_k:要返回的文档数量。
  • allowed_domains:限制搜索的域名列表。
  • search_params:传递给 SearchApi API 的其他参数。例如,您可以将“num”设置为 100 以增加搜索结果的数量。有关更多详细信息,请参阅 SearchApi 网站

默认搜索引擎是 Google,但用户可以通过设置engine 参数来更改它。search_params.

SearchApiWebSearch.to_dict

def to_dict() -> dict[str, Any]

将组件序列化为字典。

返回值:

包含序列化数据的字典。

SearchApiWebSearch.from_dict

@classmethod
def from_dict(cls, data: dict[str, Any]) -> "SearchApiWebSearch"

从字典反序列化组件。

参数:

  • data: 要反序列化的字典。

返回值:

反序列化后的组件。

SearchApiWebSearch.run

@component.output_types(documents=list[Document], links=list[str])
def run(query: str) -> dict[str, Union[list[Document], list[str]]]

使用 SearchApi 搜索网络。

参数:

  • query:搜索查询。

引发:

  • TimeoutError:如果请求 SearchApi API 超时。
  • SearchApiError:如果查询 SearchApi API 时发生错误。

返回值:

包含以下键的字典

  • "documents":搜索引擎返回的文档列表。
  • "links":搜索引擎返回的链接列表。