如何构建一个强大的深度研究系统
如何构建一个强大的深度研究系统
原文:
towardsdatascience.com/how-to-build-a-powerful-deep-research-system/
你也可以将此应用于你自己的文档集合。例如,假设你拥有成千上万份内部公司信息文档,你可能希望创建一个深度研究系统,该系统能够接收用户问题,扫描所有可用的(内部)文档,并根据这些信息提供良好的答案。

这张信息图表突出了本文的主要内容。我将讨论在哪些情况下你需要构建一个深度研究系统,以及在哪些情况下更简单的方法,如 RAG 或关键词搜索更为合适。接下来,我将讨论如何构建一个深度研究系统,包括收集数据、创建工具,以及如何使用 orchestrator LLM 和子代理将这些工具整合在一起。图片由 ChatGPT 提供。
目录
-
为什么构建一个深度研究系统?
-
如何构建一个深度研究系统
-
收集和索引信息
-
工具
-
整合所有内容
-
-
结论
为什么构建一个深度研究系统?
你可能会问自己的第一个问题是:
为什么我需要一个深度研究系统?
这是一个合理的问题,因为在许多情况下还有其他可行的替代方案:
-
将所有数据输入到 LLM 中
-
RAG
-
关键词搜索
如果你可以用这些更简单的系统解决问题,你应该几乎总是这样做。迄今为止最简单的方法就是简单地将所有数据输入到 LLM 中。如果你的信息包含在少于 100 万个标记内,这绝对是一个好选择。
此外,如果传统的 RAG 效果良好,或者你可以通过关键词搜索找到相关信息,你也应该选择这些选项。然而,有时这两种解决方案都不足以解决你的问题。也许你需要深入分析许多来源,而基于相似性的块检索(RAG)并不足够好。或者你不能使用关键词搜索,因为你对数据集不够熟悉,不知道使用哪些关键词。在这种情况下,你应该考虑使用深度研究系统。
如何构建一个深度研究系统
您可以自然地利用来自 OpenAI 等提供商的深度研究系统,它提供了一个深度研究 API。如果您希望保持简单,这可以是一个不错的选择。然而,在这篇文章中,我将更详细地讨论如何构建深度研究系统,以及为什么它是有用的。Anthropic 撰写了一篇非常好的文章,关于他们的多智能体研究系统(即深度研究),我推荐您阅读以了解更多关于这个主题的细节。
收集和索引信息
任何信息查找系统的第一步是将所有信息集中在一个地方。也许您在以下应用程序中拥有信息:
-
Google Drive
-
Notion
-
Salesforce
您随后可能需要将这些信息集中在一个地方(例如,将它们全部转换为 PDF 并存储在同一文件夹中),或者您可以连接到这些应用程序,就像 ChatGPT 在其应用中所做的那样。
收集信息后,我们现在需要对其进行索引以使其易于访问。您应该创建的两个主要索引是:
-
关键词搜索索引。例如 BM25
-
向量相似度索引:将文本分成块,嵌入并存储在 Pinecone 等向量数据库中
这使得信息可以轻松地从我在下一节中描述的工具中访问。
工具
我们稍后将要使用的智能体需要工具来获取相关信息。因此,您应该创建一系列函数,使 LLM(大型语言模型)能够轻松地获取相关信息。例如,如果用户查询销售报告,LLM 可能想要进行关键词搜索并分析检索到的文档。这些工具可能看起来是这样的:
@tool
def keyword_search(query: str) -> str:
"""
Search for keywords in the document.
"""
results = keyword_search(query)
# format responses to make it easy for the LLM to read
formatted_results = "\n".join([f"{result['file_name']}: {result['content']}" for result in results])
return formatted_results
@tool
def vector_search(query: str) -> str:
"""
Embed the query and search for similar vectors in the document.
"""
vector = embed(query)
results = vector_search(vector)
# format responses to make it easy for the LLM to read
formatted_results = "\n".join([f"{result['file_name']}: {result['content']}" for result in results])
return formatted_results
您还可以允许智能体访问其他功能,例如:
-
网络搜索
-
仅文件名搜索
以及其他可能相关的功能
整合一切
深度研究系统通常由一个协调智能体和许多子智能体组成。方法通常如下:
-
一个协调智能体接收用户查询并规划采取的方法
-
发送许多子智能体去获取相关信息并将总结后的信息反馈给协调智能体
-
协调智能体确定是否拥有足够的信息来回答用户查询。如果没有,我们回到上一个要点;如果有,我们可以提供最终要点
-
协调智能体将所有信息汇总并提供给用户答案

此图突出了我讨论的深度研究系统。您输入用户查询,协调智能体处理它,并发送子智能体从文档语料库中获取信息。然后,协调智能体确定是否拥有足够的信息来回答用户查询。如果答案是否定的,它会获取更多信息;如果拥有足够的信息,它会为用户生成一个响应。图由作者提供。
此外,如果您用户的提问模糊,或者只是为了缩小用户查询的范围,您可能还会有一个澄清问题。如果您使用过任何前沿实验室的深度研究系统,您可能已经体验过这种情况,深度研究系统总是从提出澄清问题开始。
通常,协调器是一个更大/更好的模型,例如 Claude Opus,或者需要高推理努力的 GPT-5。子代理通常是较小的,例如 GPT-4.1 和 Claude Sonnet。
这种方法(尤其是与传统 RAG 相比)的主要优势是,您允许系统扫描和分析更多信息,降低遗漏与响应用户查询相关的信息的可能性。通常,您需要扫描更多文档也会使系统变慢。自然地,这是时间和响应质量之间的权衡。
结论
在这篇文章中,我讨论了如何构建一个深度研究系统。我首先介绍了构建此类系统的动机,以及在哪些场景下你应该专注于构建更简单的系统,例如 RAG 或关键词搜索。接着,我讨论了深度研究系统的基础,它本质上接收用户查询,规划如何回答,派遣子代理去获取相关信息,汇总这些信息,并响应用户。
👉 在社交平台上找到我:
🧑💻 联系我
✍️ Medium
您还可以阅读我的一些其他文章:

浙公网安备 33010602011771号