本文详细介绍了 Local Deep Researcher 如何与各种搜索提供商交互以从网络收集信息。它涵盖了支持的搜索引擎、配置选项、集成模式以及搜索功能的内部实现细节。有关整体研究工作流程的运作方式,请参阅研究工作流程。
搜索 API 组件使 Local Deep Researcher 能够使用各种搜索提供商从互联网检索信息。这项能力对于系统能够对用户指定的主题进行独立研究至关重要。
来源: src/ollama_deep_researcher/utils.py154-365 .env.example1-4
系统支持四种不同的搜索提供商,每种都有其自身的特点和配置要求
| 提供商 | 功能 | 需要 API 密钥 | 配置 | 特性 |
|---|---|---|---|---|
| DuckDuckGo | duckduckgo_search() | 否 | 默认选项 | 文本搜索结果 |
| SearXNG | searxng_search() | 否 | 自托管实例 URL | 私有搜索元搜索引擎 |
| Tavily | tavily_search() | 是 | TAVILY_API_KEY | 包含内容的增强搜索 |
| Perplexity | perplexity_search() | 是 | PERPLEXITY_API_KEY | 带引用的 AI 驱动搜索 |
活动的搜索提供商由 SEARCH_API 环境变量决定,可设置为以下值之一
duckduckgo (默认)searxngtavilyperplexity来源: .env.example1-4 src/ollama_deep_researcher/utils.py154-365
DuckDuckGo 搜索实现使用 DDGS 库进行网页搜索,无需 API 密钥。
该函数以标准化格式返回结果,包括标题、URL、内容片段,并在启用 fetch_full_page 时可选地返回完整页面内容。
来源: src/ollama_deep_researcher/utils.py154-205
SearXNG 是一个注重隐私的元搜索引擎,可以自托管。其实现使用了 LangChain 的 SearxSearchWrapper。
配置通过 SEARXNG_URL 环境变量管理,如果未指定,则默认为 http://:8888。
来源: src/ollama_deep_researcher/utils.py208-257
Tavily 是一个商业搜索 API,需要 API 密钥。它内置了包含来自源的原始内容的能力。
Tavily 集成相对简单,因为 API 在请求时会处理内容检索。
来源: src/ollama_deep_researcher/utils.py260-286
Perplexity 提供 AI 增强的搜索结果,并需要 API 密钥。它不仅返回搜索结果,还返回引用。
与其他提供商不同,Perplexity 返回一个带有多个引用的单一连贯响应,系统将其格式化为标准化的结果结构。
来源: src/ollama_deep_researcher/utils.py289-365
所有搜索提供商都以标准化格式返回结果,以确保在整个系统中进行一致的处理。搜索结果会先由实用函数处理,然后再传递给 LLM 进行分析。
每个搜索结果包含以下字段
{
"results": [
{
"title": "Result Title",
"url": "https://result-url.com",
"content": "Snippet or summary of content",
"raw_content": "Full page content (if fetch_full_page=True)"
},
// Additional results...
]
}
deduplicate_and_format_sources 函数执行两项关键任务
此函数能够自适应处理单个搜索响应和来自多个搜索的批量响应,从而在执行搜索操作时提供了灵活性。
来源: src/ollama_deep_researcher/utils.py49-110
当启用 FETCH_FULL_PAGE 时,系统会尝试检索搜索结果中引用的网页的完整内容。这为 LLM 提供了更全面的信息进行分析。
The fetch_raw_content 函数
markdownify 库将 HTML 转换为 Markdown 格式None此功能是可选的,可以禁用以减少处理时间和带宽使用。
来源: src/ollama_deep_researcher/utils.py130-151 .env.example16-17
搜索功能与更广泛的研究工作流程集成如下
在每次研究迭代中,系统会
来源: src/ollama_deep_researcher/utils.py154-365
搜索功能通过环境变量进行配置
| 可变 | 目的 | 默认 | 选项 |
|---|---|---|---|
SEARCH_API | 选择搜索提供商 | duckduckgo | duckduckgo, searxng, tavily, perplexity |
SEARXNG_URL | SearXNG 实例 URL | http://:8888 | 任何有效的 URL |
TAVILY_API_KEY | Tavily API 凭据 | 无 | 来自 tavily.com 的有效 API 密钥 |
PERPLEXITY_API_KEY | Perplexity API 凭据 | 无 | 来自 perplexity.ai 的有效 API 密钥 |
FETCH_FULL_PAGE | 是否检索完整页面内容 | True | True, False |
这些配置选项允许用户根据隐私要求、API 密钥的可用性以及对全面内容检索的需求等因素选择其首选的搜索提供商。
来源: .env.example1-9 .env.example16-17
搜索 API 集成为 Local Deep Researcher 提供了使用不同搜索提供商从各种网络源收集信息的能力。该系统的模块化设计允许未来轻松扩展以支持更多搜索提供商,同时为应用程序的其余部分保持一致的接口。
标准化结果格式确保 LLM 无论选择哪个搜索提供商,都能以一致的方式处理搜索结果,从而促进了构成 Local Deep Researcher 核心功能的迭代研究过程。