Jina AI 开源 node-DeepResearch
Jina AI 团队开源 node-DeepResearch 项目,阐述了 DeepSearch(深度搜索) 和 DeepResearch(深度研究) 的设计理念、区别以及关键技术实现,特别是其多轮迭代的 Agent 式工作流程。文章强调,DeepSearch 代表了搜索技术应对复杂查询的新范式,其核心在于 搜索 (Search) -> 阅读 (Read) -> 推理 (Reason) 的循环迭代。
现象与背景
-
2025年初,“深度搜索”(Deep Search)成为行业热点:
- Google、OpenAI、Perplexity、X AI(Grok 3)等都在推出相关功能。
-
本质:
- Deep Search 并非全新概念,其核心是增强版的 RAG 或多跳问答。
- 引入“推理时计算”理念,实现质的飞跃。
关键转折点
-
OpenAI o1-preview (2024年9月):
- 提出“推理时计算”,在生成阶段投入更多资源进行深度思考和自我反思。
-
DeepSeek-R1:
- 推广“推理时计算”与“延迟满足”的用户体验。
- 用户接受更长响应时间,只要能看到模型 过程。
-
展示推理过程成为标准:
- 2025年,UI中展示模型思考过程成为普遍做法。
核心概念区分:DeepSearch vs DeepResearch
DeepSearch(深度搜索)
-
目标:解决单个复杂问题,找到最优答案。
-
核心机制:搜索 (S) → 阅读 ® → 推理 ® 的循环迭代(S-R-R Loop)。
-
特点:
- 多次迭代,不同于一次性 RAG。
- 明确的停止条件(Token 预算、失败尝试次数上限)。
- 可视为配备网络工具的 LLM Agent。
- 以状态机为核心,LLM 控制状态转换。
DeepResearch(深度研究)
-
目标:生成高质量、结构化的长篇研究报告。
-
核心机制:以 DeepSearch 为引擎。
- 创建报告目录(TOC)。
- 每个章节使用 DeepSearch 生成内容。
- 最终整合并修订整体连贯性。
-
关键区别:
- 问题范围:DeepSearch 解决单问题;DeepResearch 是系统工程。
- 核心能力:DeepSearch 依赖 S-R-R 循环;DeepResearch 依赖组织与撰写能力。
- 输出:DeepSearch 输出答案;DeepResearch 输出报告。
- 价值定位:DeepSearch 是基础技术突破;DeepResearch 是上层应用。
DeepSearch 的核心实现:迭代推理循环(S-R-R Loop)
主循环骨架
- 基于
while
循环持续迭代,直到满足停止条件(Token 超限或失败次数过多)。
关键组件
知识空白队列(FIFO)
- 子问题识别后加入队列头部,原始问题始终在尾部。
- 相比递归,避免深度优先陷阱,共享上下文,平衡探索与利用。
动态提示生成
- 根据当前状态动态生成提示词。
- 使用 XML 结构化各部分(指令、知识、失败尝试、动作等)。
- 支持精细控制,如根据上下文启用/禁用某些动作。
动作选择与执行
- LLM 决定下一步动作(answer, reflect, search, visit, code)。
search(搜索)
- 查询重写最关键!将自然语言转化为适合搜索引擎的形式。
- 使用 jina-embeddings-v3 实现语义去重,跨语言高效。
visit(访问/阅读)
- 访问 URL,使用 Jina Reader 提取网页内容。
- 存储为带来源的知识片段。
reflect(反思)
- 分析当前状态,识别子问题,更新知识空白队列。
- 规划后续步骤。
answer(回答)
- 尝试生成最终答案。
- 独立评估比自我评估更可靠。
内存管理
- 不使用向量数据库,完全依赖 LLM 长上下文。
- 内存分为三类:
- knowledge:获取的事实与内容片段(带来源)。
- diaryContext:记录每一步行动和结果。
- badContext:记录失败尝试及策略。
预算控制与“野兽模式”
-
核心目标:在预算耗尽前充分探索,追求高质量答案。
-
策略:
- 优先识别知识空白。
- 失败后限制可用动作。
- 设定最大失败尝试次数。
-
野兽模式(Beast Mode):
- 当接近预算极限时触发。
- 禁用除
answer
外所有动作,强制输出一个答案。 - 工程实用主义体现。
实现中的关键发现与选型
必要项
-
长上下文 LLM:
- 支持 JSON 输出与长记忆处理。
- 如 DeepSeek-R1 在推理与查询扩展方面表现优异。
-
查询扩展:
- 必须支持多语言、超越同义词替换。
- 小模型(SLM)可能无法胜任。
-
网页搜索与阅读:
- 核心依赖,Jina Reader 表现良好。
意外发现
-
向量模型:
- 未用于检索或压缩,但可用于语义去重。
- jina-embeddings-v3 效果突出。
-
Reranker 模型:
- 理论上有用,但未在实现中采用。
- jina-reranker-v2 是潜在候选。
不必要项
-
Agent 框架:
- 抽象层增加复杂性,轻量工具更优(如 Vercel AI SDK)。
-
向量数据库:
- 在长上下文足够时不再需要。
-
SLM 用于查询扩展:
- 性能不足,效果有限。
总结:DeepSearch 的意义
-
突破传统:
- 解耦搜索、阅读、推理,引入多轮迭代循环。
- 克服单次 RAG 和多跳 QA 的局限。
-
工程实践:
- Jina AI 展示了如何构建此类系统。
- 包括知识空白处理、查询重写、内存管理、预算控制等关键技术。
-
未来方向:
- 代表新一代搜索范式。
- 利用“推理时计算”与 Agent 式迭代,适应用户对高质量答案的需求。
DeepSearch 是一种基于 S-R-R 多轮迭代循环的智能搜索引擎。它像一个不断搜索信息、阅读资料、深入思考的研究员,通过动态规划、解决子问题、精细控制流程,最终为复杂问题提供深度答案。DeepResearch 则是基于 DeepSearch 构建结构化报告的上层应用。开源实现揭示了关键技术选型(如长上下文 LLM、查询重写、语义去重)和工程智慧(如 FIFO 队列、野兽模式、避免过度框架化)。