菜单

系统架构

相关源文件

本页面记录了 Local Deep Researcher 的系统架构。它提供了核心组件、它们之间的交互以及支持迭代式网络研究过程的数据流的技术概述。本文档侧重于系统的结构组织,有关研究工作流程和状态管理的具体细节,请参阅 研究工作流程状态管理

高层架构概述

Local Deep Researcher 构建为一个 LangGraph 应用程序,用于协调迭代式研究过程。该系统使用本地托管的大型语言模型 (LLM) 来生成搜索查询、分析网络搜索结果,并生成带有正确引用的全面研究摘要。

系统组件图

来源:src/ollama_deep_researcher/graph.py282-297 README.md157-167

图结构

该系统的核心实现为一个 LangGraph StateGraph,它通过一系列节点和边缘来协调研究过程。该图定义了研究工作流程,其中每个节点代表过程中的一个特定操作。

LangGraph 结构图

来源:src/ollama_deep_researcher/graph.py282-297

节点函数

LangGraph 中的每个节点都代表一个执行研究过程一部分的特定函数。

节点名称功能描述
generate_querygenerate_query()根据研究主题生成搜索查询
web_researchweb_research()使用配置的搜索 API 执行网络搜索
summarize_sourcessummarize_sources()总结网络研究结果
reflect_on_summaryreflect_on_summary()识别知识差距并生成后续查询
finalize_summaryfinalize_summary()准备带有引用的最终输出

来源:src/ollama_deep_researcher/graph.py17-260

状态管理

该系统使用 SummaryState 类来跟踪研究过程的状态。此类维护着重要的信息,例如研究主题、当前搜索查询、收集的结果以及运行中的摘要。

状态结构图

来源:src/ollama_deep_researcher/state.py1-20

集成点

Local Deep Researcher 集成了两种类型的外部服务:LLM 提供商和搜索 API。

LLM 提供商集成

该系统支持两种 LLM 提供商

  • Ollama:默认提供商,使用 ChatOllama
  • LMStudio:替代提供商,使用 ChatLMStudio

选择通过 LLM_PROVIDER 环境变量或 LangGraph UI 配置进行设置。

搜索 API 集成

该系统支持多种搜索 API

  • DuckDuckGo:默认搜索提供商(无需 API 密钥)
  • Tavily:需要 API 密钥
  • Perplexity:需要 API 密钥
  • SearXNG:自托管搜索引擎

选择通过 SEARCH_API 环境变量或 LangGraph UI 配置进行设置。

集成图示

来源:src/ollama_deep_researcher/graph.py41-64 src/ollama_deep_researcher/graph.py92-110

配置系统

该系统使用 Configuration 类来管理配置设置。可以通过三种方式设置配置值,按优先级顺序排列:

  1. 环境变量(最高优先级)
  2. LangGraph UI 配置
  3. Configuration 类中的默认值(最低优先级)

关键配置参数包括

  • LLM_PROVIDER:要使用的 LLM 提供商(“ollama”或“lmstudio”)
  • LOCAL_LLM:要使用的特定模型
  • SEARCH_API:要使用的搜索 API
  • MAX_WEB_RESEARCH_LOOPS:最大研究迭代次数
  • FETCH_FULL_PAGE:是否获取完整页面内容

来源:README.md129-135

数据流

以下时序图说明了研究会话期间数据在系统中的流动情况。

来源:src/ollama_deep_researcher/graph.py17-260 README.md157-167

执行模型

Local Deep Researcher 被设计为以 LangGraph 应用程序的形式运行,可以以多种方式部署

  1. LangGraph Studio UI:用户的主要界面,允许配置和可视化研究过程
  2. Docker 容器:容器化部署,包括 LangChain Studio,但需要外部 LLM 服务
  3. 编程访问:可用作其他应用程序的库组件

可以通过环境变量或 LangGraph Studio UI 配置系统。

来源:README.md16-156 README.md178-214