DeepResearch深度搜索实现方法调研

DeepResearch深度搜索实现方法调研

Deep Research 有三个核心能力

  • 能力一:自主规划解决问题的搜索路径(生成子问题,queries,检索)
  • 能力二:在探索路径时动态调整搜索方向(刘亦菲最好的一部电影是什么?如何定义好?已有信息是否足够?)
  • 能力三:对多源的信息进行验证,整合(一个文档说 37 岁,另一个文档说 27 岁,怎么分辨?)

非强化学习方法:

《Search-o1: Agentic Search-Enhanced Large Reasoning Models》(能力二)

作者:人大+清华

https://github.com/sunnynexus/Search-o1 (Star 800)

  • 当遇到知识不确定的情况时,模型会自动生成搜索查询,格式为 <|begin_search_query|>搜索词<|end_search_query|>
  • 系统检测到这一标记后,暂停模型推理,执行网络搜索
  • 搜索结果被包装在 <|begin_search_result|>检索到的内容<|end_search_result|> 标记中返回给模型
  • 如果检索到的结果特别长,就用大语言模型对其进行精炼,再放进推理链条中。

优势:

检索触发机制:传统 RAG 是静态的、预先定义的;Search-o1 是动态的、由模型主动触发的,可以在一定程度上实现能力二。

Deep-Searcher

https://github.com/zilliztech/deep-searcher

基本流程:

  1. 将原始问题进行拆解,分成多个子问题。
  2. 子问题分别进行检索,得到对应的答案。
  3. 子问题和答案进行整合,由模型生成下一轮子问题。
  4. 达到指定检索轮数后,汇总最终的答案。

OpenDeepResearcher

https://github.com/mshumer/OpenDeepResearcher

  1. 用户输入一个研究主题后,LLM会生成最多四个不同的搜索关键词。
  2. 每个搜索关键词都通过调用SERPAPI接口进行搜索。
  3. 将所有获取到的链接进行聚合和去重处理。
  4. 对每个唯一链接调用JINA网页内容解析接口,利用LLM评估网页的有用性,如果页面被判定为有效,则提取相关文本内容。
  5. 汇总所有信息,判断是否需要进一步生成新的搜索关键词。如果需要,则生成新的查询;否则,循环终止。
  6. 将所有收集到的上下文信息整合后,由LLM生成一份全面、详尽的报告。

deep-research

https://github.com/dzhng/deep-research

  1. 获取用户的查询和研究参数(广度与深度)并生成SERP查询。
  2. 处理搜索结果,提取关键内容用于生成后续研究方向。
  3. 如果深度 > 0,则根据新的研究方向继续探索。
  4. 将所有上下文汇总成一份全面的Markdown报告。

强化学习方法:

《DeepRetrieval: Hacking Real Search Engines and Retrievers with Large Language Models via Reinforcement Learning》(能力一)

作者:伊利诺伊大学香槟分校+高丽大学

https://github.com/pat-jj/DeepRetrieval (Star 360)

query改写已被证实是检索流程中的关键步骤。当用户提交问题时,大型语言模型(LLM)通常会对其进行重新表述(称为增强查询),然后再执行检索。DeepRetrieval采用创新方法,利用强化学习(RL)而非传统的监督式微调(SFT)来优化这一关键步骤。

DeepRetrieval的突出之处在于它能够通过"试错"方式直接学习,使用检索指标作为奖励,无需昂贵的监督数据。这种方法使模型能够针对实际性能指标进行优化,而不仅仅是模仿人工编写的查询。

训练策略使用 PPO。

数据集:PubMed、ClinicalTrials.gov…公开数据集

《Search-R1: Training LLMs to Reason and Leverage Search Engines with Reinforcement Learning》(能力一、二、三)

伊利诺伊大学香槟分校

https://github.com/PeterGriffinJin/Search-R1

  • 将搜索引擎建模为环境的一部分 模型可以在生成中插入 <search>query</search> 指令,系统则响应 <information>results</information>,最终答案用 <answer> 标签输出,推理过程包裹在 <think> 中。
  • 支持多轮思考-检索循环 模型可以识别信息缺口并主动发起下一轮搜索,而不是一次性拼接上下文。
  • 基于强化学习策略学习 训练采用 PPO (Proximal Policy Optimization)或 GRPO (Group Relative Policy Optimization)算法,奖励信号基于最终结果(如 Exact Match)而非过程监督。
  • 避免优化干扰的技术细节 引入 Retrieved Token Loss Masking,对搜索返回内容不反向传播,从而保持训练稳定。

从下图来看,它用 7B 模型就能超越 Search-o1 和 680B 参数的 R1?这种“小模型大能力”的背后,正是 RL 训练出的搜索策略弥补了知识覆盖和参数规模的不足。

  • 数据集:在七个问答数据集上进行评估,包括一般问答(NQ、TriviaQA、PopQA)和多跳问答(HotpotQA、2WikiMultiHopQA、Musique、Bamboogle)。
  • 基线比较:与多种方法进行比较,包括无检索的推理、检索增强生成(RAG)、工具调用方法(如IRCoT和Search-o1)、监督微调(SFT)和基于RL的微调(R1)。
  • 模型和检索设置:使用Qwen-2.5-3B和Qwen-2.5-7B模型,以2018年维基百科转储作为知识源,E5作为检索器,每次检索返回3个段落。

奖励函数:

总结

  • 非强化学习方法从技术上来看技术路线都是一样的,即使用推理模型分析,结合联网搜索以及ReAct机制,根据用户输入扩展问题,再对每个问题进行多次联网查找,推理、再查找的过程,最终输出一个综合性的答案。这套方法也比较容易复现。
  • 使用强化学习对整体进行进行端到端训练固然可以提升效果,用小模型代替大模型。但缺点也很明显,依赖于高质量的数据,会限制其应用范围,比如无法支持多种模型。
  • 使用强化学习对个别流程进行针对性训练的是比较有可行性的,比如针对query生成专门训练。
  • 当前的方法主要讨论的都是能力一、二,对能力三较少有针对性优化。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/80372.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

跟我学C++中级篇——STL容器的查找对比

一、C标准库的查找 在C的STL中&#xff0c;对容器或相关序列的查找中&#xff0c;有两种方式&#xff0c;一种是std::find&#xff0c;另外一种是std::search。而且在它们的基础上&#xff0c;还衍生出std::find_if、std::find_if_not、std::find_end等和std::search_n、range…

SpringAI框架中的RAG知识库检索与增强生成模型详解

SpringAI框架中的RAG知识库检索与增强生成模型详解 一、RAG简介 RAG&#xff08;Retrieval-Augmented Generation&#xff09;可以通过检索知识库&#xff0c;克服大模型训练完成后参数冻结的局限性&#xff0c;携带知识让大模型根据知识进行回答。 二、SpringAI框架支持的R…

Delphi12安装Android开发的配置

Delphi12如果要开发android和Linux系统,需要在安装的时候安装这两个选项,否则,就找不到开发平台。 1、Adroid开发三剑客必须是指: JDK,SDK,NDK三洋,其中JDK是必须要安装的,最好使用Installer安装,否则自解压的免安装版在安装过程中会退出。 2、开始安装Delphi12. …

OpenHarmony launcher开发——删除dock栏

开发环境 OpenHarmony 5.0.0 代码修改 效果

FreeRTOS如何实现100%的硬实时性?

实时系统在嵌入式应用中至关重要&#xff0c;其核心在于确保任务在指定时间内完成。根据截止时间满足的严格程度&#xff0c;实时系统分为硬实时和软实时。硬实时系统要求任务100%满足截止时间&#xff0c;否则可能导致灾难性后果&#xff0c;例如汽车安全系统或医疗设备。软实…

微软推动智能体协同运作:支持 A2A、MCP 协议

今日凌晨&#xff0c;微软宣布 Azure AI Foundry 和 Microsoft Copilot Studio 两大开发平台支持最新 Agent 开发协议 A2A&#xff0c;并与谷歌合作开发扩大该协议&#xff0c;这一举措对智能体赛道意义重大。 现状与变革意义 当前智能体领域类似战国时代&#xff0c;各家技术…

从“山谷论坛”看AI七剑下天山

始于2023年的美国山谷论坛(Hill and Valley Forum)峰会,以“国会山与硅谷”命名,寓意连接科技界与国家安全战略。以人工智能为代表的高科技,在逆全球化时代已成为大国的致胜高点。 论坛创办者Jacob Helberg,现在是华府的副国务卿,具体负责经济、环境和能源事务。早先曾任…

Docker封装深度学习模型

1.安装Docker Desktop 从官网下载DockerDesktop&#xff0c;安装。&#xff08;默认安装位置在C盘&#xff0c;可进行修改&#xff09; "D:\Program Files (x86)\Docker\Docker Desktop Installer.exe" install --installation-dir"D:\Program Files (x86)\Do…

Linux 内核中的 security_sk_free:安全模块与 Socket 释放机制解析

引言 在 Linux 内核中,网络通信和进程间交互(IPC)的核心数据结构之一是 struct sock(即 socket)。其生命周期管理涉及复杂的资源分配与释放逻辑。本文聚焦于 security_sk_free 这一函数,探讨其作用、调用场景以及与安全模块的交互机制,并解答一个常见疑问:在单机间 TC…

工业与协议融合篇:如何将多个协议集成进一个系统?

🏭 本文为《嵌入式通信协议全解析》第六篇,深入探讨如何在工业或物联网系统中同时集成 BLE、CAN、LoRa、MQTT、RS485 等多种通信协议,实现一个高效、可控、稳定运行的嵌入式通信架构。 🧭 一、为什么需要多协议融合? 在真实产品中,单一通信协议往往无法满足所有业务需…

手撕红黑树的 左旋 与 右旋

一、为什么需要旋转&#xff1f; 在红黑树中&#xff0c;插入或删除节点可能会破坏其五条性质&#xff0c;比如高度不平衡或连续红节点。 为了恢复红黑性质&#xff0c;我们采用局部旋转来“调整树形结构”&#xff0c;保持平衡。 二、旋转本质是“局部变形” 左旋和右旋不会…

不用官方EDA怎么开发FPGA?

目前FPGA的开发和官方的EDA工具是高度绑定的&#xff0c;用哪家的芯片只能用其配套的EDA工具进行开发&#xff08;综合可选工具&#xff0c;布局布线没有可选的工具&#xff09;&#xff0c;那么有没有其他的开发方式呢&#xff1f;今天就介绍一个使用开源工具链来开发FPGA的方…

QuecPython+Aws:快速连接亚马逊 IoT 平台

提供一个可接入亚马逊 Iot 平台的客户端&#xff0c;用于管理亚马逊 MQTT 连接和影子设备。 初始化客户端 Aws class Aws(client_id,server,port,keep_alive,ssl,ssl_params)参数&#xff1a; client_id (str) - 客户端唯一标识。server (str) - 亚马逊 Iot 平台服务器地址…

44.辐射发射整改简易摸底测试方法

辐射发射整改简易摸底测试方法 1. 正式摸底预测试2. 简易方法预测试3. 分析频谱4. 探查传播路径5. 施加措施6. 与简易方法预测试效果对比 1. 正式摸底预测试 去正式实验室做一次预测试&#xff0c;取得频谱图&#xff1b;确定超标频点和超标量&#xff08;备用&#xff09;。 …

OpenCV中适用华为昇腾(Ascend)后端的逐元素操作(Per-element Operations)

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 针对华为昇腾&#xff08;Ascend&#xff09;后端的逐元素操作&#xff08;Per-element Operations&#xff09;&#xff0c;这些操作通常用于图…

Web前端VSCode如何解决打开html页面中文乱码的问题(方法2)

Web前端—VSCode如何解决打开html页面中文乱码的问题&#xff08;方法2&#xff09; 1.打开VScode后&#xff0c;依次点击 文件 >> 首选项 >> 设置 2.打开设置后&#xff0c;依次点击 文本编辑器 >> 文件&#xff08;或在搜索框直接搜索“files.autoGuessEnc…

【UltralyticsYolo11图像分类完整项目-04】代码重构

经过上一篇博客,我们实现 了一个cpp文件,可以预测单个图像和多个图像。为了更加简化代码,方便部署,我们需要对代码进行重构:将功能模块化到头文件中。 完整代码下载链接:点击这里 重构的优点 模块化设计:将不同功能分离到不同的类中,每个类有明确的职责更好的可维护性:…

Debezium RelationalSnapshotChangeEventSource详解

Debezium RelationalSnapshotChangeEventSource详解 1. 类的作用与功能 1.1 核心功能 RelationalSnapshotChangeEventSource是Debezium中用于关系型数据库快照的核心抽象类,主要负责: 数据快照:对数据库表进行全量数据快照模式捕获:捕获数据库表结构事务管理:确保快照过…

DeepInjectSQL - 基于 AI 生成对抗网络(GAN)的下一代 SQL 注入自动化漏洞猎手

概述 SQLMap本身是一个成熟的自动化SQL注入工具&#xff0c;可以与GAN结合起来&#xff0c;让GAN生成的Payload替代传统的手工或规则生成的测试用例&#xff0c;从而提高检测的覆盖率和效率。 分析可行性 GAN通常用于生成类似真实数据分布的数据&#xff0c;例如图片、文本等。…

Python 爬虫之 XPath 元素定位

XPath 简介 XPath (XML Path Language) 最初是为了在 XML 文档中进行导航而设计的语言&#xff0c;后来被广泛应用于 HTML 文档的解析。与 BeautifulSoup 相比&#xff0c;XPath 有以下特点&#xff1a; 语法强大&#xff1a;可以通过简洁的表达式精确定位元素跨平台性&#…