news 2026/5/23 9:16:53

自建 Deep Research,其实没那么难

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
自建 Deep Research,其实没那么难

如果你今天想让 AI 帮你做深度研究,大概率会用 ChatGPT Deep Research、Claude 或 Perplexity。

它们确实都很强。

但问题也很明显:它们都是闭源 SaaS,跑在别人的云上。你的查询、内部文档、连接的数据源,都会进入对方服务器。

对很多团队来说,这就是默认交换条件:

要么接受。 要么别用 AI 做严肃研究。

但其实还有第三种选择:

搭一套完全开源、可自托管的 Deep Research Stack。

核心是三个工具:

Onyx 负责检索。 CrewAI 负责编排。 Voxtral 负责语音。

这套系统可以从语音提问开始,到生成带引用的研究报告,再到语音朗读结果,完整跑通。

为什么自托管很重要?

主流 AI 研究工具基本都是闭源云服务,这会带来几个现实问题。

你的问题会发到它们服务器。 你连接的数据,会在它们基础设施里被索引。 日志、留存、审计规则,由它们决定。 价格和额度,也会按它们的节奏变化。

对普通用户来说,这可能还能接受。

但对受监管行业、处理敏感 IP 的团队,或者有数据驻留要求的公司来说,这不是小事。

AI 辅助研究之所以迟迟进不了很多严肃工作流,原因就在这里:

工具很好,但数据不敢放出去。

除非,你能把整套研究系统跑在自己的基础设施上。

现有研究工具为什么容易坏?

很多 AI 研究工具,本质上只做一轮:

搜索。 收集结果。 交给 LLM 写报告。

浅问题还行。

但一旦问题需要跨来源综合、识别矛盾、进行多跳推理,它就容易崩。

常见问题包括:

发现两个互相矛盾的来源,却只选一个继续写,矛盾没有暴露。 两个来源表达同一件事,却被当成两份独立证据。 关键连接事实没被检索到,因为关键词搜索不理解 “cloud migration” 和 “moving our PostgreSQL cluster to AWS” 是同一类问题。

这些不是边缘情况。

这就是现实研究任务的常态。

根本原因是:研究不是一个单一任务。

好的 Deep Research 需要什么?

不管用什么工具,真正可靠的深度研究至少需要五件事。

第一,阶段分离。

收集、分析、写作之间要有硬边界。每个阶段只接收上一阶段整理后的干净输出。

第二,检索要会推理。

关键词搜索太脆。单纯向量相似度在多跳问题上也容易断。你需要并行 query 变体、智能重组,以及 LLM 选择步骤,再进入综合。

第三,循环中要有反思。

静态计划遇到新发现时会失效。系统应该能根据发现调整方向,同时持续跟踪原始计划覆盖情况。

第四,统一搜索公开和内部资料。

研究层需要同时查开放网络和内部知识库,并且按文档权限控制访问。

第五,语音层。

能说出问题,比打字更自然。能听报告,也比盯着长文读更轻松。

Onyx:开源检索层

Onyx 是一个开源 AI 平台,围绕 RAG、Web 搜索、代码执行、Deep Research 和自定义 Agent 构建。

它可以完全自托管,所以数据不用离开你的基础设施。

而且能力并不弱。

Onyx 曾提交到 DeepResearch Bench,这是一个独立学术 benchmark,包含 22 个领域、100 个博士级研究任务,评估报告质量和引用准确性。

结果它排到第一,超过 OpenAI Deep Research、Gemini 2.5 Pro 和 Perplexity Deep Research。

Onyx 团队总结的提示哲学很直接:

“研究时,宁可彻底,也不要只是显得有帮助。”

这句话也直接体现在架构里。

分享一个正版GPT5.5 目前 0.2 倍率, https://api.aidazhi.com/,注册后把用户名发到私信里面,即可帮领 5 美元测试额度。

三个阶段,而不是一个循环

Onyx 的研究流程分成三个阶段。

第一阶段:澄清。

对短问题或模糊问题,最多提出 5 个针对性问题。问题足够详细时,会自动跳过。

第二阶段:规划。

把查询拆成最多 6 个探索方向。关键点是:planner 没有工具权限,所以它只做计划,不直接生成答案。

第三阶段:迭代执行。

Orchestrator 和 research agents 交替运行,最多 8 轮,每轮最多并行派出 3 个 agent。

这里有两个关键隔离:

Orchestrator 不直接搜索。 Research agents 看不到完整查询和完整计划。

这样能强制每个任务 brief 自洽,也能减少上下文污染。

自适应研究策略

Onyx 不会死守最初计划。

每次派发任务之间,它都会做一次强制 reflection,并输出结构化结果:

已经覆盖了什么。 还剩哪些空白。 出现了哪些新方向。 继续跑是否还能带来新信息。

这一步每次都会执行。

所以它更像研究员,而不是简单检索器。

六阶段检索管线

每个研究 agent 在综合前,都会先跑一套检索流程。

第一,query generation。

生成并行查询,包括语义改写、关键词变体和更宽泛搜索。多部分问题会自动拆分。

第二,search and recombination。

使用混合索引,也就是 vector + BM25。结果通过 Reciprocal Rank Fusion 合并,并把相邻 chunk 拼接起来。

第三,LLM selection。

LLM 会审查所有 chunk,只保留真正相关内容。跳过这一步,幻觉就容易进来。

第四,context expansion。

对每个选中的文档,LLM 会读取周边 chunk,决定需要扩展多少上下文。

第五,prompt building。

把选中的内容、引用和对话历史组装起来。

第六,answer synthesis。

生成带 inline citations 的 grounded answer,每条引用都能追溯到来源。

引用完整性

Onyx 的 agent 在写中间报告时,就会内联引用来源。

多个并行 agent 的引用会被合并、重新编号,变成统一引用集。

最终报告里的每个关键说法,都能追溯到具体来源文档。

这点很重要。

研究报告最怕的不是写得不漂亮,而是看起来有理,实际没证据。

内部资料也能接入

Onyx 支持 40 多种企业数据源,比如 Slack、Confluence、Jira、GitHub、Salesforce、Google Drive、SharePoint、Notion、Zendesk、HubSpot、Gong 等。

重点不是能不能连接。

而是索引在哪里发生。

Onyx 会在你的基础设施上持续预索引内容、metadata 和权限,并保持接近实时同步。

这带来的结果是:

一个查询可以同时覆盖开放网络和内部资料。 用户只能看到自己有权限访问的文档。 权限会自动从各数据源同步。 内部数据不会被送到第三方云上索引或存储。

CrewAI:编排层

Onyx 负责检索。

CrewAI 负责协调。

很多开发者一开始会写成一个 agent 加三个连续任务,共用一个越来越长的上下文窗口。

问题是:

Writer 可能在 Analyst 完成前就开始写。 搜索噪音会流进最终报告。 原始材料被反复解释,最后失真。

CrewAI 用三个东西解决这个问题:

Flows:把独立 Crews 串起来,每一层只接收上一层的干净输出。 Skills:通过SKILL.md在运行时给 agent 注入领域指令。 MCP Integration:通过mcps字段直接把 MCP server 接到 agent 上。

Onyx 接入也很简单:

from crewai import Agent researcher_agent = Agent( role="Senior Research Analyst", goal="Gather information on research query with source URLs", backstory="You are a disciplined analyst. Record every source URL.", mcps=[ f"{ONYX_MCP_URL}?token={ONYX_TOKEN}" ] )

Researcher agent 会立刻获得三个工具:

搜索知识库。 搜索网页。 抓取任意 URL 的完整页面内容。

不需要手动接工具。schema 会缓存,连接按需建立,服务器不可用时也能优雅失败。

Voxtral:语音层

每个研究工作流都有一个摩擦点:

键盘。

AI 工具里的语音通常只是外挂:Whisper 做输入,普通 TTS 做输出,输入输出模型还不是一套。

Voxtral 不一样。

它是 Mistral 的原生音频模型家族,从一开始就为语音理解和生成设计,同一家族同时处理输入和输出。

它能带来两个变化:

第一,语音输入。

你直接说问题,转录结果进入研究管线。

第二,报告朗读。

完整 Markdown 报告可以被自然语音读出来。长报告很多时候听比读更舒服。

整体怎么跑?

完整流程是这样:

输入方式可以是打字、语音,或者上传 PDF。

Researcher Agent 通过 Onyx MCP 搜索网页和内部文档。

Analyst Agent 去重、标记矛盾、整理发现。

Report Writer Agent 生成结构化、带引用的 Markdown 报告。

最后点击 “Play Report”,用 Voxtral TTS 朗读报告。

为什么要三个 mini-crews?

最自然的设计,是一个 Crew 里放三个连续任务。

但不要这么做。

跨阶段共享上下文会损坏事实。Onyx 团队把这叫 “deep frying”。

事实被重新解释。 矛盾被抹平。 来源材料到 Writer 手里时,已经变味。

更好的方式是 Flow:三个独立 Crews,每个只接收上一阶段整理后的结果。

Researcher Agent:连接 Onyx,搜索网页、读取 URL、检索 PDF,每个发现都带 citation。

Analyst Agent:处理原始 findings,去重、合并同义信息、标记明确矛盾,并按主题分组。

Report Writer Agent:把结构化总结写成带引用的 Markdown 报告,并用 CrewAI Skill 保持格式一致。

目录可以这样:

deep-research-report/ ├── SKILL.md ├── scripts/ └── references/

SKILL.md使用 YAML front matter 和 Markdown body:

--- name: deep-research-report description: > Guidelines for writing high-quality, publication-ready deep research reports. Covers structure, tone, evidence standards, and formatting rules. metadata: author: deep-research-agent version: "1.0" --- Instructions for the agent go here.

当 skill 被激活时,这段 Markdown 会被注入到 agent prompt 里。

你最终得到什么?

这套方案的重点,不只是“开源工具终于追上大厂”。

真正的重点是:

你可以在自己可检查、可自托管、可修改的基础设施上跑 Deep Research。

Onyx 提供检索和引用完整性。 CrewAI 强制阶段隔离。 Voxtral 提供原生语音交互。

组合起来,你得到的是:

能力:研究质量有竞争力,甚至在 benchmark 上领先。 控制:查询和内部数据留在自己的基础设施里。 透明:代码开源,可阅读、可审计、可扩展。

最后:

精通 React 面试:从零到中高级(针对面试回答)

CSS终极指南

Vue 设计模式实战指南

20个前端开发者必备的响应式布局

深入React:从基础到最佳实践完整攻略

python 技巧精讲

React Hook 深入浅出

CSS技巧与案例详解

vue2与vue3技巧合集

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/23 9:16:52

GitHub 给 Copilot Cloud Agent 加审计接口,Coding Agent 进入“可查配置”阶段

Coding Agent 开始进入配置治理 AI 写代码工具的早期卖点,通常是生成速度、补全质量和对话体验。但当 Coding Agent 开始进入企业仓库,问题会迅速变得具体:它能访问哪些仓库,能不能调用 MCP server,能使用哪些工具,能否触发 GitHub Actions,出站网络如何限制,失败后谁…

作者头像 李华
网站建设 2026/5/23 9:14:53

RTX166 Tiny中格式化输出问题的分析与解决

1. RTX166 Tiny环境下格式化输出问题的根源分析在嵌入式开发中使用RTX166 Tiny实时操作系统时,许多开发者会遇到一个看似诡异的现象:使用printf、sprintf等格式化输出函数时,输出的字符串会出现随机错误。通过分析问题代码可以发现&#xff0…

作者头像 李华
网站建设 2026/5/23 9:12:42

鸿蒙数学 108 篇 第九篇

鸿蒙数学 108 篇 第九篇:道数合一初论:鸿蒙道统与数学的初衔接【阶位归属】第一阶・一元・本源公理篇【本源溯源】承接第八篇一元数学体系根基闭环定论,以已成完备的本源数理公理为依托,回溯鸿蒙大道本统,打通先天大道…

作者头像 李华
网站建设 2026/5/23 9:11:08

如何5分钟打造Zotero中文文献管理终极方案:茉莉花插件完全指南

如何5分钟打造Zotero中文文献管理终极方案:茉莉花插件完全指南 【免费下载链接】jasminum A Zotero add-on to retrive CNKI meta data. 一个简单的Zotero 插件,用于识别中文元数据 项目地址: https://gitcode.com/gh_mirrors/ja/jasminum 还在为…

作者头像 李华
网站建设 2026/5/23 9:08:43

Windows虚拟手柄驱动终极指南:ViGEmBus完整安装与配置方法

Windows虚拟手柄驱动终极指南:ViGEmBus完整安装与配置方法 【免费下载链接】ViGEmBus Windows kernel-mode driver emulating well-known USB game controllers. 项目地址: https://gitcode.com/gh_mirrors/vi/ViGEmBus 你是否曾经遇到过这样的困扰&#xff…

作者头像 李华