node-DeepResearch

GitHub
5.1k 448 简单 1 次阅读 昨天Apache-2.0其他
AI 解读 由 AI 自动生成,仅供参考

node-DeepResearch 是一款专注于深度信息挖掘的开源 AI 工具。它不像其他模型那样致力于生成冗长的报告,而是通过“搜索 - 阅读 - 推理”的自动化循环,不断在网络上查找线索、研读网页内容并进行逻辑推导,直到找到确切答案或达到预设的资源上限。

这一工具主要解决了传统搜索引擎难以处理复杂、多跳推理问题的痛点。当用户面对需要交叉验证多个来源、深入分析才能回答的疑问时,node-DeepResearch 能像人类研究员一样层层递进,提供精准且简练的结论,并附带详细的引用来源。

它非常适合开发者集成到自己的应用中,也适合研究人员、分析师或任何需要快速获取高质量深度答案的用户。其独特的技术亮点在于采用了迭代式的工作流:先搜索关键词,再读取具体网页,接着由大语言模型(支持 Gemini、OpenAI 或本地模型)进行推理,若未得出满意结果则自动发起新一轮搜索。此外,它完全兼容 OpenAI API 标准,便于快速接入现有系统,同时结合 Jina Reader 实现了高效的网页内容提取,让深度调研变得简单高效。

使用场景

某科技公司的市场分析师需要在两小时内完成一份关于“全球固态电池最新技术突破及主要厂商量产进度”的竞争情报简报,以支持即将到来的投资决策会议。

没有 node-DeepResearch 时

  • 信息搜集碎片化:分析师需手动在多个搜索引擎反复切换关键词,难以一次性覆盖技术论文、新闻稿及行业论坛的深度内容。
  • 验证成本极高:面对搜索结果中的大量营销软文和过时数据,必须逐个点开网页人工甄别真伪,耗时占整个任务的 70%。
  • 逻辑断层严重:搜集到的信息零散孤立,缺乏自动化的推理串联,难以直接得出“哪家厂商真正具备量产能力”的结论。
  • 引用溯源困难:整理报告时需回头重新查找每个数据的来源链接,极易出现引用错误或遗漏关键出处。

使用 node-DeepResearch 后

  • 全自动深度挖掘:node-DeepResearch 自主执行“搜索 - 阅读 - 推理”循环,自动遍历数十个深层网页,精准锁定技术突破细节与厂商实际进度。
  • 智能去伪存真:工具通过多轮推理交叉验证信息,自动过滤公关通稿,直接提炼出经多方证实的核心事实。
  • 结论导向输出:基于搜集的证据链,node-DeepResearch 直接生成带有逻辑推导的最终答案,明确指出具备量产潜力的厂商名单。
  • 原生脚注支持:生成的回答自动附带 GitHub 风格的 Markdown 脚注,每个观点均精确对应原始网页链接,无需二次核对。

node-DeepResearch 将原本需要数小时的人工调研与推理过程压缩至分钟级,让开发者能直接从海量噪声中获取带可信溯源的深度洞察。

运行环境要求

操作系统
  • Linux
  • macOS
  • Windows
GPU

非必需(支持本地 LLM 或云端 API,若本地部署大模型则取决于具体模型需求)

内存

未说明

依赖
notes该项目基于 Node.js 运行,需安装 npm 依赖。推理可使用云端 Gemini/OpenAI API 或本地 LLM(如 Ollama、LMStudio,需支持结构化输出)。使用 Docker 可一键部署。需配置 GEMINI_API_KEY 或 OPENAI_API_KEY 以及 JINA_API_KEY 环境变量。
python未说明
Node.js
npm
gemini-2.0-flash (或 OpenAI/LocalLLM)
Jina Reader API
node-DeepResearch hero image

快速开始

深度研究

官方界面 | 界面代码 | 稳定 API | 博客

持续搜索、阅读网页、推理,直到找到答案(或用完 token 预算)。适用于深入探究一个问题。

[!重要]
与 OpenAI/Gemini/Perplexity 的“深度研究”不同,我们只专注于通过迭代过程找到正确的答案。我们并不优化生成长篇幅的文章——那是一个完全不同的问题——所以如果你需要从深度搜索中快速、简洁地获取答案,这里正是你所需要的。如果你想要像 OpenAI/Gemini/Perplexity 那样由 AI 生成的长篇报告,那么这并不适合你。

---
config:
  theme: mc
  look: handDrawn
---
flowchart LR
 subgraph Loop["直到预算用尽"]
    direction LR
        Search["搜索"]
        Read["阅读"]
        Reason["推理"]
  end
    Query(["查询"]) --> Loop
    Search --> Read
    Read --> Reason
    Reason --> Search
    Loop --> Answer(["答案"])

博客文章

无论你是否喜欢这种实现方式,我都强烈建议你阅读我撰写的 DeepSearch/DeepResearch 实现指南,它会为你提供关于这一主题的温和入门介绍。

自己动手试试

我们托管了一个完全相同的代码库的在线部署版本,你可以借此体验一下;或者将其作为日常生产力工具使用。

https://search.jina.ai

官方 API 也已开放供你使用:

https://deepsearch.jina.ai/v1/chat/completions

更多关于 API 的信息,请访问 https://jina.ai/deepsearch

安装

git clone https://github.com/jina-ai/node-DeepResearch.git
cd node-DeepResearch
npm install

安装部署视频教程 在 Youtube 上

它也可以通过 npm 获取,但目前不推荐这样做,因为代码仍在积极开发中。

使用方法

我们使用 Gemini(最新 gemini-2.0-flash)/ OpenAI / 本地 LLM 进行推理,使用 Jina Reader 来搜索和阅读网页。你可以从 jina.ai 获得一个包含 100 万 token 的免费 API 密钥。

export GEMINI_API_KEY=...  # 用于 gemini
# export OPENAI_API_KEY=... # 用于 openai
# export LLM_PROVIDER=openai # 用于 openai
export JINA_API_KEY=jina_...  # 免费 jina api 密钥,可从 https://jina.ai/reader 获取

npm run dev $QUERY

官方网站

你可以在我们的官方网站上试用。

官方 API

你也可以使用我们的官方 DeepSearch API

https://deepsearch.jina.ai/v1/chat/completions

你可以使用任何兼容 OpenAI 的客户端来调用该 API。认证所需的 Bearer Token、API 密钥以及速率限制等信息,请参阅 https://jina.ai/deepsearch。

客户端集成指南

如果你正在构建一个使用 Jina DeepSearch API 的 Web/本地/移动客户端,以下是一些设计指南:

  • 我们的 API 完全兼容 OpenAI API 架构,这将大大简化集成过程。模型名称为 jina-deepsearch-v1
  • 我们的 DeepSearch API 是一种结合了推理与搜索的 LLM,因此最适合需要深度推理和搜索的问题。
  • 引入了两个特殊标记 <think>...</think>。请谨慎渲染它们。
  • 经常会提供引用,并采用 Github 风格的 Markdown 脚注格式,例如 [^1][^2] 等。
  • 建议引导用户从 https://jina.ai 获取 Jina API 密钥,新用户可获得 100 万 token 的免费额度。
  • 存在速率限制,具体取决于 API 密钥的等级,范围在 10 RPM 到 30 RPM 之间(详情请参见 https://jina.ai/contact-sales#rate-limit)。
  • 在此下载 Jina AI 标志

示例

录制时使用的是 gemini-1.5-flash,而最新的 gemini-2.0-flash 会带来更好的效果!

查询:“Jina AI 最新博文的标题是什么?”
3 步;答案正确!
demo1

查询:“readerlm-v2 的上下文长度是多少?”
2 步;答案正确!
demo1

查询:“尽可能多地列出 Jina AI 的员工姓名”
11 步;部分正确!但我没在名单里 :(
demo1

查询:“Jina AI 最大的竞争对手会是谁?”
42 步;属于对未来预测类型的提问,因此可以说答案是正确的!目前我并不认为 weaviate 是竞争对手,但我很期待未来能说一句“我就说过吧”的时刻。
demo1

更多示例:

# 示例:无需工具调用
npm run dev "1+1="
npm run dev "法国的首都是哪里?"

# 示例:2 步
npm run dev "Jina AI 的最新消息是什么?"

# 示例:3 步
npm run dev "Jina AI 创始人的 Twitter 账号是什么?"

# 示例:13 步,问题模糊(未定义“大”)
npm run dev "cohere、Jina AI 和 voyage,谁更大?"

# 示例:开放式问题,类似研究,思维链较长
npm run dev "2028 年美国的总统会是谁?"
npm run dev "Jina AI 在 2025 年的战略应该是什么?"

使用本地 LLM

注意,并非所有 LLM 都能与我们的推理流程兼容,我们需要那些能够很好地支持结构化输出(有时称为 JSON Schema 输出或对象输出)的模型。欢迎提出 PR,将更多开源 LLM 添加到可用列表中。

如果你使用 Ollama 或 LMStudio,可以通过设置以下环境变量将推理请求重定向到你的本地 LLM:

export LLM_PROVIDER=openai  # 是的,没错——对于本地 LLM,我们仍然使用 openai 客户端
export OPENAI_BASE_URL=http://127.0.0.1:1234/v1  # 你的本地 LLM 端点
export OPENAI_API_KEY=whatever  # 随便填个字符串就行,因为我们并不使用它(除非你的本地 LLM 有认证机制)
export DEFAULT_MODEL_NAME=qwen2.5-7b  # 你的本地 LLM 模型名称

兼容 OpenAI 的服务器 API

如果你有一个支持 OpenAI API 的 GUI 客户端(例如 CherryStudioChatbox),只需简单配置即可使用本服务器。

demo1

启动服务器:

# 无认证
npm run serve

# 带认证(客户端必须以 Bearer 令牌形式提供此密钥)
npm run serve --secret=your_secret_token

服务器将在 http://localhost:3000 上启动,并提供以下端点:

POST /v1/chat/completions

# 不带认证
curl http://localhost:3000/v1/chat/completions \
  -H "Content-Type: application/json" \
  -d '{
    "model": "jina-deepsearch-v1",
    "messages": [
      {
        "role": "user",
        "content": "Hello!"
      }
    ]
  }'

# 带认证(当服务器使用 --secret 启动时)
curl http://localhost:3000/v1/chat/completions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer your_secret_token" \
  -d '{
    "model": "jina-deepsearch-v1",
    "messages": [
      {
        "role": "user",
        "content": "Hello!"
      }
    ],
    "stream": true
  }'

响应格式:

{
  "id": "chatcmpl-123",
  "object": "chat.completion",
  "created": 1677652288,
  "model": "jina-deepsearch-v1",
  "system_fingerprint": "fp_44709d6fcb",
  "choices": [{
    "index": 0,
    "message": {
      "role": "assistant",
      "content": "YOUR FINAL ANSWER"
    },
    "logprobs": null,
    "finish_reason": "stop"
  }],
  "usage": {
    "prompt_tokens": 9,
    "completion_tokens": 12,
    "total_tokens": 21
  }
}

对于流式响应(stream: true),服务器会以以下格式发送数据块:

{
  "id": "chatcmpl-123",
  "object": "chat.completion.chunk",
  "created": 1694268190,
  "model": "jina-deepsearch-v1",
  "system_fingerprint": "fp_44709d6fcb",
  "choices": [{
    "index": 0,
    "delta": {
      "content": "..."
    },
    "logprobs": null,
    "finish_reason": null
  }]
}

注意:流式响应中的思考内容会被包裹在 XML 标签中:

<think>
[思考步骤...]
</think>
[最终答案]

Docker 部署

构建 Docker 镜像

要构建应用程序的 Docker 镜像,请运行以下命令:

docker build -t deepresearch:latest .

运行 Docker 容器

要运行 Docker 容器,请使用以下命令:

docker run -p 3000:3000 --env GEMINI_API_KEY=your_gemini_api_key --env JINA_API_KEY=your_jina_api_key deepresearch:latest

Docker Compose

您也可以使用 Docker Compose 来管理多容器应用。要使用 Docker Compose 启动应用程序,请运行:

docker-compose up

工作原理?

不确定流程图是否有帮助,但还是附上:

flowchart TD
    Start([开始]) --> Init[初始化上下文与变量]
    Init --> CheckBudget{是否超过令牌预算?}
    CheckBudget -->|否| GetQuestion[从待解决问题中获取当前问题]
    CheckBudget -->|是| BeastMode[进入狂暴模式]

    GetQuestion --> GenPrompt[生成提示]
    GenPrompt --> ModelGen[使用 Gemini 模型生成回复]
    ModelGen --> ActionCheck{检查行动类型}

    ActionCheck -->|回答| AnswerCheck{是否为原始问题?}
    AnswerCheck -->|是| EvalAnswer[评估回答]
    EvalAnswer --> IsGoodAnswer{回答是否明确?}
    IsGoodAnswer -->|是| HasRefs{是否有参考文献?}
    HasRefs -->|是| End([结束])
    HasRefs -->|否| GetQuestion
    IsGoodAnswer -->|否| StoreBad[存储失败尝试并重置上下文]
    StoreBad --> GetQuestion

    AnswerCheck -->|否| StoreKnowledge[将结果作为中间知识存储]
    StoreKnowledge --> GetQuestion

    ActionCheck -->|反思| ProcessQuestions[处理新的子问题]
    ProcessQuestions --> DedupQuestions{是否有新的唯一问题?}
    DedupQuestions -->|是| AddGaps[添加到待解决问题队列]
    DedupQuestions -->|否| DisableReflect[禁用下一次的反思功能]
    AddGaps --> GetQuestion
    DisableReflect --> GetQuestion

    ActionCheck -->|搜索| SearchQuery[执行搜索]
    SearchQuery --> NewURLs{是否找到新网址?}
    NewURLs -->|是| StoreURLs[存储网址以便后续访问]
    NewURLs -->|否| DisableSearch[禁用下一次的搜索功能]
    StoreURLs --> GetQuestion
    DisableSearch --> GetQuestion

    ActionCheck -->|访问| VisitURLs[访问网址]
    VisitURLs --> NewContent{是否发现新内容?}
    NewContent -->|是| StoreContent[将内容存储为知识]
    NewContent -->|否| DisableVisit[禁用下一次的访问功能]
    StoreContent --> GetQuestion
    DisableVisit --> GetQuestion

    BeastMode --> FinalAnswer[生成最终答案] --> End

版本历史

v1.4.02025/02/12
v1.3.02025/02/10
v1.2.02025/02/07
v1.1.12025/02/06
v1.1.02025/02/06
v1.0.22025/02/06
v1.0.12025/02/06

常见问题

相似工具推荐

ML-For-Beginners

ML-For-Beginners 是由微软推出的一套系统化机器学习入门课程,旨在帮助零基础用户轻松掌握经典机器学习知识。这套课程将学习路径规划为 12 周,包含 26 节精炼课程和 52 道配套测验,内容涵盖从基础概念到实际应用的完整流程,有效解决了初学者面对庞大知识体系时无从下手、缺乏结构化指导的痛点。 无论是希望转型的开发者、需要补充算法背景的研究人员,还是对人工智能充满好奇的普通爱好者,都能从中受益。课程不仅提供了清晰的理论讲解,还强调动手实践,让用户在循序渐进中建立扎实的技能基础。其独特的亮点在于强大的多语言支持,通过自动化机制提供了包括简体中文在内的 50 多种语言版本,极大地降低了全球不同背景用户的学习门槛。此外,项目采用开源协作模式,社区活跃且内容持续更新,确保学习者能获取前沿且准确的技术资讯。如果你正寻找一条清晰、友好且专业的机器学习入门之路,ML-For-Beginners 将是理想的起点。

85.1k|★★☆☆☆|1周前
图像数据工具视频

funNLP

funNLP 是一个专为中文自然语言处理(NLP)打造的超级资源库,被誉为"NLP 民工的乐园”。它并非单一的软件工具,而是一个汇集了海量开源项目、数据集、预训练模型和实用代码的综合性平台。 面对中文 NLP 领域资源分散、入门门槛高以及特定场景数据匮乏的痛点,funNLP 提供了“一站式”解决方案。这里不仅涵盖了分词、命名实体识别、情感分析、文本摘要等基础任务的标准工具,还独特地收录了丰富的垂直领域资源,如法律、医疗、金融行业的专用词库与数据集,甚至包含古诗词生成、歌词创作等趣味应用。其核心亮点在于极高的全面性与实用性,从基础的字典词典到前沿的 BERT、GPT-2 模型代码,再到高质量的标注数据和竞赛方案,应有尽有。 无论是刚刚踏入 NLP 领域的学生、需要快速验证想法的算法工程师,还是从事人工智能研究的学者,都能在这里找到急需的“武器弹药”。对于开发者而言,它能大幅减少寻找数据和复现模型的时间;对于研究者,它提供了丰富的基准测试资源和前沿技术参考。funNLP 以开放共享的精神,极大地降低了中文自然语言处理的开发与研究成本,是中文 AI 社区不可或缺的宝藏仓库。

79.9k|★☆☆☆☆|1周前
语言模型数据工具其他

cs-video-courses

cs-video-courses 是一个精心整理的计算机科学视频课程清单,旨在为自学者提供系统化的学习路径。它汇集了全球知名高校(如加州大学伯克利分校、新南威尔士大学等)的完整课程录像,涵盖从编程基础、数据结构与算法,到操作系统、分布式系统、数据库等核心领域,并深入延伸至人工智能、机器学习、量子计算及区块链等前沿方向。 面对网络上零散且质量参差不齐的教学资源,cs-video-courses 解决了学习者难以找到成体系、高难度大学级别课程的痛点。该项目严格筛选内容,仅收录真正的大学层级课程,排除了碎片化的简短教程或商业广告,确保用户能接触到严谨的学术内容。 这份清单特别适合希望夯实计算机基础的开发者、需要补充特定领域知识的研究人员,以及渴望像在校生一样系统学习计算机科学的自学者。其独特的技术亮点在于分类极其详尽,不仅包含传统的软件工程与网络安全,还细分了生成式 AI、大语言模型、计算生物学等新兴学科,并直接链接至官方视频播放列表,让用户能一站式获取高质量的教育资源,免费享受世界顶尖大学的课堂体验。

79.8k|★☆☆☆☆|1周前
其他图像数据工具

ragflow

RAGFlow 是一款领先的开源检索增强生成(RAG)引擎,旨在为大语言模型构建更精准、可靠的上下文层。它巧妙地将前沿的 RAG 技术与智能体(Agent)能力相结合,不仅支持从各类文档中高效提取知识,还能让模型基于这些知识进行逻辑推理和任务执行。 在大模型应用中,幻觉问题和知识滞后是常见痛点。RAGFlow 通过深度解析复杂文档结构(如表格、图表及混合排版),显著提升了信息检索的准确度,从而有效减少模型“胡编乱造”的现象,确保回答既有据可依又具备时效性。其内置的智能体机制更进一步,使系统不仅能回答问题,还能自主规划步骤解决复杂问题。 这款工具特别适合开发者、企业技术团队以及 AI 研究人员使用。无论是希望快速搭建私有知识库问答系统,还是致力于探索大模型在垂直领域落地的创新者,都能从中受益。RAGFlow 提供了可视化的工作流编排界面和灵活的 API 接口,既降低了非算法背景用户的上手门槛,也满足了专业开发者对系统深度定制的需求。作为基于 Apache 2.0 协议开源的项目,它正成为连接通用大模型与行业专有知识之间的重要桥梁。

77.1k|★★★☆☆|2周前
Agent图像开发框架

PaddleOCR

PaddleOCR 是一款基于百度飞桨框架开发的高性能开源光学字符识别工具包。它的核心能力是将图片、PDF 等文档中的文字提取出来,转换成计算机可读取的结构化数据,让机器真正“看懂”图文内容。 面对海量纸质或电子文档,PaddleOCR 解决了人工录入效率低、数字化成本高的问题。尤其在人工智能领域,它扮演着连接图像与大型语言模型(LLM)的桥梁角色,能将视觉信息直接转化为文本输入,助力智能问答、文档分析等应用场景落地。 PaddleOCR 适合开发者、算法研究人员以及有文档自动化需求的普通用户。其技术优势十分明显:不仅支持全球 100 多种语言的识别,还能在 Windows、Linux、macOS 等多个系统上运行,并灵活适配 CPU、GPU、NPU 等各类硬件。作为一个轻量级且社区活跃的开源项目,PaddleOCR 既能满足快速集成的需求,也能支撑前沿的视觉语言研究,是处理文字识别任务的理想选择。

75.8k|★★★☆☆|今天
语言模型图像开发框架

awesome-machine-learning

awesome-machine-learning 是一份精心整理的机器学习资源清单,汇集了全球优秀的机器学习框架、库和软件工具。面对机器学习领域技术迭代快、资源分散且难以甄选的痛点,这份清单按编程语言(如 Python、C++、Go 等)和应用场景(如计算机视觉、自然语言处理、深度学习等)进行了系统化分类,帮助使用者快速定位高质量项目。 它特别适合开发者、数据科学家及研究人员使用。无论是初学者寻找入门库,还是资深工程师对比不同语言的技术选型,都能从中获得极具价值的参考。此外,清单还延伸提供了免费书籍、在线课程、行业会议、技术博客及线下聚会等丰富资源,构建了从学习到实践的全链路支持体系。 其独特亮点在于严格的维护标准:明确标记已停止维护或长期未更新的项目,确保推荐内容的时效性与可靠性。作为机器学习领域的“导航图”,awesome-machine-learning 以开源协作的方式持续更新,旨在降低技术探索门槛,让每一位从业者都能高效地站在巨人的肩膀上创新。

72.1k|★☆☆☆☆|2周前
开发框架其他