node-DeepResearch
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
非必需(支持本地 LLM 或云端 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 实现指南,它会为你提供关于这一主题的温和入门介绍。
自己动手试试
我们托管了一个完全相同的代码库的在线部署版本,你可以借此体验一下;或者将其作为日常生产力工具使用。
官方 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
它也可以通过 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 步;答案正确!
查询:“readerlm-v2 的上下文长度是多少?”
2 步;答案正确!
查询:“尽可能多地列出 Jina AI 的员工姓名”
11 步;部分正确!但我没在名单里 :(
查询:“Jina AI 最大的竞争对手会是谁?”
42 步;属于对未来预测类型的提问,因此可以说答案是正确的!目前我并不认为 weaviate 是竞争对手,但我很期待未来能说一句“我就说过吧”的时刻。
更多示例:
# 示例:无需工具调用
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 客户端(例如 CherryStudio、Chatbox),只需简单配置即可使用本服务器。

启动服务器:
# 无认证
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/12v1.3.02025/02/10v1.2.02025/02/07v1.1.12025/02/06v1.1.02025/02/06v1.0.22025/02/06v1.0.12025/02/06常见问题
相似工具推荐
ML-For-Beginners
ML-For-Beginners 是由微软推出的一套系统化机器学习入门课程,旨在帮助零基础用户轻松掌握经典机器学习知识。这套课程将学习路径规划为 12 周,包含 26 节精炼课程和 52 道配套测验,内容涵盖从基础概念到实际应用的完整流程,有效解决了初学者面对庞大知识体系时无从下手、缺乏结构化指导的痛点。 无论是希望转型的开发者、需要补充算法背景的研究人员,还是对人工智能充满好奇的普通爱好者,都能从中受益。课程不仅提供了清晰的理论讲解,还强调动手实践,让用户在循序渐进中建立扎实的技能基础。其独特的亮点在于强大的多语言支持,通过自动化机制提供了包括简体中文在内的 50 多种语言版本,极大地降低了全球不同背景用户的学习门槛。此外,项目采用开源协作模式,社区活跃且内容持续更新,确保学习者能获取前沿且准确的技术资讯。如果你正寻找一条清晰、友好且专业的机器学习入门之路,ML-For-Beginners 将是理想的起点。
funNLP
funNLP 是一个专为中文自然语言处理(NLP)打造的超级资源库,被誉为"NLP 民工的乐园”。它并非单一的软件工具,而是一个汇集了海量开源项目、数据集、预训练模型和实用代码的综合性平台。 面对中文 NLP 领域资源分散、入门门槛高以及特定场景数据匮乏的痛点,funNLP 提供了“一站式”解决方案。这里不仅涵盖了分词、命名实体识别、情感分析、文本摘要等基础任务的标准工具,还独特地收录了丰富的垂直领域资源,如法律、医疗、金融行业的专用词库与数据集,甚至包含古诗词生成、歌词创作等趣味应用。其核心亮点在于极高的全面性与实用性,从基础的字典词典到前沿的 BERT、GPT-2 模型代码,再到高质量的标注数据和竞赛方案,应有尽有。 无论是刚刚踏入 NLP 领域的学生、需要快速验证想法的算法工程师,还是从事人工智能研究的学者,都能在这里找到急需的“武器弹药”。对于开发者而言,它能大幅减少寻找数据和复现模型的时间;对于研究者,它提供了丰富的基准测试资源和前沿技术参考。funNLP 以开放共享的精神,极大地降低了中文自然语言处理的开发与研究成本,是中文 AI 社区不可或缺的宝藏仓库。
cs-video-courses
cs-video-courses 是一个精心整理的计算机科学视频课程清单,旨在为自学者提供系统化的学习路径。它汇集了全球知名高校(如加州大学伯克利分校、新南威尔士大学等)的完整课程录像,涵盖从编程基础、数据结构与算法,到操作系统、分布式系统、数据库等核心领域,并深入延伸至人工智能、机器学习、量子计算及区块链等前沿方向。 面对网络上零散且质量参差不齐的教学资源,cs-video-courses 解决了学习者难以找到成体系、高难度大学级别课程的痛点。该项目严格筛选内容,仅收录真正的大学层级课程,排除了碎片化的简短教程或商业广告,确保用户能接触到严谨的学术内容。 这份清单特别适合希望夯实计算机基础的开发者、需要补充特定领域知识的研究人员,以及渴望像在校生一样系统学习计算机科学的自学者。其独特的技术亮点在于分类极其详尽,不仅包含传统的软件工程与网络安全,还细分了生成式 AI、大语言模型、计算生物学等新兴学科,并直接链接至官方视频播放列表,让用户能一站式获取高质量的教育资源,免费享受世界顶尖大学的课堂体验。
ragflow
RAGFlow 是一款领先的开源检索增强生成(RAG)引擎,旨在为大语言模型构建更精准、可靠的上下文层。它巧妙地将前沿的 RAG 技术与智能体(Agent)能力相结合,不仅支持从各类文档中高效提取知识,还能让模型基于这些知识进行逻辑推理和任务执行。 在大模型应用中,幻觉问题和知识滞后是常见痛点。RAGFlow 通过深度解析复杂文档结构(如表格、图表及混合排版),显著提升了信息检索的准确度,从而有效减少模型“胡编乱造”的现象,确保回答既有据可依又具备时效性。其内置的智能体机制更进一步,使系统不仅能回答问题,还能自主规划步骤解决复杂问题。 这款工具特别适合开发者、企业技术团队以及 AI 研究人员使用。无论是希望快速搭建私有知识库问答系统,还是致力于探索大模型在垂直领域落地的创新者,都能从中受益。RAGFlow 提供了可视化的工作流编排界面和灵活的 API 接口,既降低了非算法背景用户的上手门槛,也满足了专业开发者对系统深度定制的需求。作为基于 Apache 2.0 协议开源的项目,它正成为连接通用大模型与行业专有知识之间的重要桥梁。
PaddleOCR
PaddleOCR 是一款基于百度飞桨框架开发的高性能开源光学字符识别工具包。它的核心能力是将图片、PDF 等文档中的文字提取出来,转换成计算机可读取的结构化数据,让机器真正“看懂”图文内容。 面对海量纸质或电子文档,PaddleOCR 解决了人工录入效率低、数字化成本高的问题。尤其在人工智能领域,它扮演着连接图像与大型语言模型(LLM)的桥梁角色,能将视觉信息直接转化为文本输入,助力智能问答、文档分析等应用场景落地。 PaddleOCR 适合开发者、算法研究人员以及有文档自动化需求的普通用户。其技术优势十分明显:不仅支持全球 100 多种语言的识别,还能在 Windows、Linux、macOS 等多个系统上运行,并灵活适配 CPU、GPU、NPU 等各类硬件。作为一个轻量级且社区活跃的开源项目,PaddleOCR 既能满足快速集成的需求,也能支撑前沿的视觉语言研究,是处理文字识别任务的理想选择。
awesome-machine-learning
awesome-machine-learning 是一份精心整理的机器学习资源清单,汇集了全球优秀的机器学习框架、库和软件工具。面对机器学习领域技术迭代快、资源分散且难以甄选的痛点,这份清单按编程语言(如 Python、C++、Go 等)和应用场景(如计算机视觉、自然语言处理、深度学习等)进行了系统化分类,帮助使用者快速定位高质量项目。 它特别适合开发者、数据科学家及研究人员使用。无论是初学者寻找入门库,还是资深工程师对比不同语言的技术选型,都能从中获得极具价值的参考。此外,清单还延伸提供了免费书籍、在线课程、行业会议、技术博客及线下聚会等丰富资源,构建了从学习到实践的全链路支持体系。 其独特亮点在于严格的维护标准:明确标记已停止维护或长期未更新的项目,确保推荐内容的时效性与可靠性。作为机器学习领域的“导航图”,awesome-machine-learning 以开源协作的方式持续更新,旨在降低技术探索门槛,让每一位从业者都能高效地站在巨人的肩膀上创新。