AI知识库

53AI知识库

学习大模型的前沿技术与行业应用场景


剖析DeepSearcher,可本地部署的深度研究框架

发布日期:2025-03-11 18:24:04 浏览次数: 1557 来源:AI科技论谈
推荐语

探索AI领域创新工具DeepSearcher的全貌,洞悉其架构、原理与应用。

核心内容:
1. DeepSearcher与同类工具的对比分析
2. DeepSearcher架构及研究流程解析
3. DeepSearcher在智能检索生成技术中的应用与优势

杨芳贤
53A创始人/腾讯云(TVP)最具价值专家

一文读懂 DeepSearcher:架构、原理与应用全解析。

长按关注《AI科技论谈》
长按关注《AI科技论谈》

近期,OpenAI 的深度研究成果引发 AI 领域广泛关注,不少类似工具相继推出,如 Perplexity Deep Research、Hugging Face 的 Open DeepResearch 等。这些工具虽然架构和方法有差异,但都想通过反复研究网页或内部文档,输出一份详实、有条理的报告。而且,这些工具的底层智能体都能自动思考中间步骤该怎么做。

今天给大家介绍的是 Zilliz 的开源项目 DeepSearcher。DeepSearcher 融入查询路由、条件执行流等创新概念,支持网页爬取,以 Python 库和命令行工具呈现,功能丰富,能处理多源文档,还可配置嵌入模型和向量数据库。尽管它还不够复杂,但在智能体增强检索生成(RAG)技术方面表现亮眼,推动了人工智能应用发展。

推理模型依赖 “推理扩展” 提升输出质量,频繁调用大语言模型导致推理带宽成为瓶颈。我们采用 SambaNova 定制硬件上的 DeepSeek - R1 推理模型,其输出速度比对手快一倍(见图示)。

SambaNova Cloud 为 Llama 3.x、Qwen2.5 和 QwQ 等开源模型提供推理服务,基于 RDU 定制芯片运行,该芯片专为高效推理生成式 AI 模型设计,能降本增效,更多详情可前往官网查看(https://sambanova.ai/technology/sn40l-rdu-ai-chip)。

1 DeepSearcher架构 

DeepSearcher 架构将研究流程分为定义/细化问题、研究、分析、综合四步,且步骤间相互重叠,协同增效。下文会逐步介绍每个步骤,并重点说明DeepSearcher的改进之处。

1.1 定义和细化问题:深度挖掘查询核心

以“《辛普森一家》随时间发生了哪些变化?”为例,DeepSearcher会将其拆解为多个子查询:

  • 从首播到现在,其文化影响和社会意义是如何演变的?
  • 不同季之间,在角色发展、幽默风格和叙事方式上发生了哪些变化?
  • 动画风格和制作技术是如何随时间变化的?
  • 在播出期间,受众群体、观众反响和收视率发生了哪些变化?

DeepSearcher的特别之处在于,研究和细化问题的界限不固定。初始分解后,研究过程会按需对问题再细化,灵活调整研究方向,精准挖掘信息,为后续工作筑牢根基。

1.2 研究和分析

将查询分解为子查询后,智能体的研究部分就开始了。大致来说,这部分包含四个步骤:路由、搜索、反思和条件重复。

路由

我们的数据库包含来自不同来源的多个表或集合。如果能将语义搜索限制在与当前查询相关的来源上,效率会更高。查询路由器会促使大语言模型决定从哪些集合中检索信息。

以下是构建查询路由提示的方法:

def get_vector_db_search_prompt(
    question: str,
    collection_names: List[str],
    collection_descriptions: List[str],
    context: List[str] = None,
)
:

    sections = []
    # 通用提示
    common_prompt = f"""你是一位高级人工智能问题分析师。运用你的推理能力和历史对话信息,基于所有现有数据集,准确回答以下问题,并根据可能与该问题相关的数据集描述,为每个数据集生成一个合适的问题。

问题:{question}
"""

    sections.append(common_prompt)
    
    # 数据集提示
    data_set = []
    for i, collection_name in enumerate(collection_names):
        data_set.append(f"{collection_name}{collection_descriptions[i]}")
    data_set_prompt = f"""以下是所有数据集信息。数据集信息的格式为数据集名称:数据集描述。

数据集及描述:
"""

    sections.append(data_set_prompt + "\n".join(data_set))
    
    # 上下文提示
    if context:
        context_prompt = f"""以下是历史对话的精简版本。在本次分析中,需要结合这些信息生成更接近答案的问题。你不能为同一个数据集生成相同或相似的问题,也不能为已确定无关的数据集重新生成问题。

历史对话:
"""

        sections.append(context_prompt + "\n".join(context))
    
    # 响应提示
    response_prompt = f"""基于以上内容,你只能从以下数据集列表中选择几个数据集,并为所选数据集生成合适的相关问题,以解决上述问题。输出格式为JSON,其中键是数据集名称,值是相应生成的问题。

数据集:
"""

    sections.append(response_prompt + "\n".join(collection_names))
    
    footer = """仅以符合精确JSON模式的有效JSON格式进行响应。

关键要求:
- 仅包含一种操作类型
- 切勿添加不支持的键
- 排除所有非JSON文本、Markdown格式内容或解释说明
- 严格遵守JSON语法"""

    sections.append(footer)
    return"\n\n".join(sections)

让大语言模型以JSON格式返回结构化输出,这样就能轻松地将其输出转换为下一步行动的决策依据。

搜索

通过上一步选择了各种数据库集合后,搜索步骤会使用Milvus进行相似性搜索。源数据已预先指定、分块、嵌入并存储在向量数据库中。对于DeepSearcher,本地和在线的数据源都必须手动指定。我们将在线搜索留作未来的工作。

反思

DeepSearcher展示了一种真正的智能体反思形式,它将之前的输出作为上下文输入到一个提示中,该提示会 “反思” 到目前为止提出的问题以及检索到的相关文本块是否存在信息缺口。这可以看作是一个分析步骤。

以下是创建提示的方法:

def get_reflect_prompt(
   question: str,
   mini_questions: List[str],
   mini_chuncks: List[str],
)
:

    mini_chunk_str = ""
    for i, chunk in enumerate(mini_chuncks):
        mini_chunk_str += f"""<chunk_{i}>\n{chunk}\n</chunk_{i}>\n"""
    reflect_prompt = f"""根据原始查询、之前的子查询以及所有检索到的文档块,判断是否需要额外的搜索查询。如果需要进一步研究,请提供一个最多包含3个搜索查询的Python列表。如果不需要进一步研究,则返回一个空列表。

如果原始查询是要撰写一份报告,那么你最好生成一些进一步的查询,而不是返回空列表。

    原始查询:{question}
    之前的子查询:{mini_questions}
    相关文本块: 
    {mini_chunk_str}
    """

   
    
    footer = """仅以有效的字符串列表格式进行响应,不要包含任何其他文本。"""
    return reflect_prompt + footer

我们再次让大语言模型返回结构化输出,这次是可由Python解释的数据。

以下是在回答完上述初始子查询后,通过反思 “发现” 的新子查询示例:

  • 不同季中,《辛普森一家》配音演员和制作团队的变动对该剧的发展产生了怎样的影响?
  • 在过去几十年里,《辛普森一家》的讽刺和社会评论在其适应当代问题的过程中发挥了什么作用?
  • 《辛普森一家》是如何应对并将媒体消费的变化(如流媒体服务)融入其发行和内容策略的?

条件重复

DeepSearcher展示了条件执行流。在反思到目前为止的问题和答案是否完整后,如果还有其他问题需要询问,智能体会重复上述步骤。重要的是,执行流(一个while循环)取决于大语言模型的输出,而不是硬编码。在这种情况下,只有两种选择:重复研究或生成报告。在更复杂的智能体中,可能会有更多选择,例如:跟随超链接、检索文本块、存储在内存中、反思等。通过这种方式,智能体会根据需要不断细化问题,直到决定退出循环并生成报告。在我们关于《辛普森一家》的示例中,DeepSearcher又进行了两轮通过额外子查询填补信息缺口的操作。

1.3 综合

最后,经过充分分解的问题和检索到的文本块会通过提示合成为一份报告。以下是创建提示的代码:

def get_final_answer_prompt(
   question: str, 
   mini_questions: List[str],
   mini_chuncks: List[str],
)
:

    mini_chunk_str = ""
    for i, chunk in enumerate(mini_chuncks):
        mini_chunk_str += f"""<chunk_{i}>\n{chunk}\n</chunk_{i}>\n"""
    summary_prompt = f"""你是一位人工智能内容分析专家,擅长总结内容。请根据之前的查询和检索到的文档块,总结出一份具体且详细的答案或报告。

    原始查询:{question}
    之前的子查询:{mini_questions}
    相关文本块: 
    {mini_chunk_str}
    """

    return summary_prompt

1.4 结果

以下是使用DeepSeek-R1,以《辛普森一家》的维基百科页面作为源材料,对 “《辛普森一家》随时间发生了哪些变化?” 这个查询生成的报告示例:

报告:《辛普森一家》的演变(1989年至今)

  1. 文化影响和社会意义:《辛普森一家》首播时是对美国中产阶级生活的颠覆性批判,在20世纪90年代因其大胆的讽刺而声名大噪。最初,它是一种反文化现象,通过探讨宗教、政治和消费主义等主题的剧集挑战传统规范。随着时间的推移,随着《南方公园》和《恶搞之家》等竞争对手的出现,其文化影响力逐渐减弱。到了21世纪10年代,该剧从潮流引领者转变为承载怀旧情怀的经典,在平衡传统魅力的同时,试图探讨气候变化和LGBTQ+权利等现代问题,尽管其社会反响不如从前。
  2. 结论:《辛普森一家》从一部激进的讽刺剧演变成电视界的经典之作,经历了技术、政治和观众期望的变化。虽然其黄金时代的辉煌难以超越,但它通过流媒体、更新颖的幽默和全球传播等方式展现出的适应性,确保了它作为文化标志的地位。该剧的长久不衰既体现了人们的怀旧之情,也反映了它对变化的务实接受,尽管在碎片化的媒体环境中,它仍面临着保持相关性的挑战。

推荐书单 

《深入浅出机器学习:从数据到AI算法》

《深入浅出机器学习:从数据到大模型》是一本旨在帮助读者系统学习机器学习的著作。本书通过深入浅出的方式,将复杂的机器学习理论和技术讲解得深入浅出。

本书从机器学习的基础开始,为读者提供了对数据处理、特征工程和模型评估等核心概念的全面介绍。读者将学习如何准备和清洗数据,如何选择和构建合适的特征,并学会使用各种评估指标来评估模型性能。

然后,本书深入探讨了常见的机器学习算法和技术。详细解释了线性回归、逻辑回归和神经网络等算法的原理和应用,通过丰富的示例和实践项目,掌握这些算法的实现和调优技巧。

本书聚焦于大规模模型和深度学习,介绍了深度学习的基本原理和常用的深度学习框架,如TensorFlow和PyTorch。读者将学习如何构建深度神经网络,如何进行模型训练和调优,并了解大规模机器学习系统的实现和部署。

独家5折购买链接:https://item.jd.com/14387333.html

精彩回顾 

6款必知的AI Agent工作流,优缺点解析

QwQ-32B本地部署教程来了,全新开源推理大模型,性能比肩DeepSeek满血版

解读Deep Research:传统RAG已死,带你实现Agentic RAG

大模型应用开发平台Dify推出1.0版本,基于向量数据库Milvus实现RAG

从推理到编程,详细比较DeepSeek 32B、70B、R1实践性能

百度App携手DeepSeek满血版,体验飙升!

长按关注《AI科技论谈》
长按关注《AI科技论谈》
长按访问【IT今日热榜】,发现每日技术热点
长按访问【IT今日热榜】,发现每日技术热点

53AI,企业落地大模型首选服务商

产品:场景落地咨询+大模型应用平台+行业解决方案

承诺:免费场景POC验证,效果验证后签署服务协议。零风险落地应用大模型,已交付160+中大型企业

联系我们

售前咨询
186 6662 7370
预约演示
185 8882 0121

微信扫码

添加专属顾问

回到顶部

加载中...

扫码咨询