DeepResearch深度搜索实现方法调研

news2025/7/17 16:28:38

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.coloradmin.cn/o/2372581.html

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

相关文章

【论文阅读】基于客户端数据子空间主角度的聚类联邦学习分布相似性高效识别

Efficient distribution similarity identification in clustered federated learning via principal angles between client data subspaces -- 基于客户端数据子空间主角度的聚类联邦学习分布相似性高效识别 论文来源TLDR背景与问题两个子空间之间的主角&#xff08;Principa…

Elasticsearch知识汇总之ElasticSearch部署

五 ElasticSearch部署 部署Elasticsearch&#xff0c;可以在任何 Linux、MacOS 或 Windows 机器上运行 Elasticsearch。在Docker 容器 中运行 Elasticsearch 。使用Elastic Cloud on Kubernetes 设置和管理 Elasticsearch、Kibana、Elastic Agent 以及 Kubernetes 上的 Elasti…

ROBOVERSE:面向可扩展和可泛化机器人学习的统一平台、数据集和基准

25年4月来自UC Berkeley、北大、USC、UMich、UIUC、Stanford、CMU、UCLA 和 北京通用 AI 研究院&#xff08;BIGAI&#xff09;的论文“ROBOVERSE: Towards a Unified Platform, Dataset and Benchmark for Scalable and Generalizable Robot Learning”。 数据扩展和标准化评…

(41)VTK C++开发示例 ---qt使用vtk最小示例

文章目录 1. 概述2. CMake链接VTK3. main.cpp文件4. 演示效果 更多精彩内容&#x1f449;内容导航 &#x1f448;&#x1f449;VTK开发 &#x1f448; 1. 概述 本文演示了在Qt中使用VTK的最小示例程序&#xff0c;使用VTK创建显示一个锥体&#xff1b; 采用Cmake作为构建工具&a…

OS7.【Linux】基本指令入门(6)

目录 1.zip和unzip 配置指令 使用 两个名词:打包和压缩 打包 压缩 Linux下的操作演示 压缩和解压缩文件 压缩和解压缩目录 -d选项 2.tar Linux下的打包和压缩方案简介 czf选项 xzf选项 -C选项 tzf选项 3.bc 4.uname 不带选项的uname -a选项 -r选项 -v选项…

国标GB28181视频平台EasyCVR安防系统部署知识:如何解决异地监控集中管理和组网问题

在企业、连锁机构及园区管理等场景中&#xff0c;异地监控集中管控与快速组网需求日益迫切。弱电项目人员和企业管理者亟需整合分散监控资源&#xff0c;实现跨区域统一管理与实时查看。 一、解决方案 案例一&#xff1a;运营商专线方案​ 利用运营商专线&#xff0c;连接各分…

O2O上门服务如何颠覆传统足浴行业?真实案例分析

在湖南经营传统足浴店的张总最近遇到了件让他哭笑不得的事。原本他的门店生意还算稳定&#xff0c;虽然这两年行情不好&#xff0c;但靠着老顾客还能勉强维持。可谁想到&#xff0c;一次好心帮忙&#xff0c;竟让他发现了行业的新天地。 几年前&#xff0c;张总的一位做砂石生意…

金仓数据库永久增量备份技术原理与操作

先用一张图说明一下常见的备份方式 为什么需要永久增量备份 传统的数据库备份方案通常是间隔7天对数据库做一次全量备份&#xff08;完整备份&#xff09;&#xff0c;每天会基于全量备份做一次增量备份&#xff0c;如此循环&#xff0c;这种备份方案在全备数据量过大场景下…

19、HashTable(哈希)、位图的实现和布隆过滤器的介绍

一、了解哈希【散列表】 1、哈希的结构 在STL中&#xff0c;HashTable是一个重要的底层数据结构, 无序关联容器包括unordered_set, unordered_map内部都是基于哈希表实现 哈希表又称散列表&#xff0c;一种以「key-value」形式存储数据的数据结构。哈希函数&#xff1a;负责将…

mysql中int(1) 和 int(10) 有什么区别?

困惑 最近遇到个问题&#xff0c;有个表的要加个user_id字段&#xff0c;user_id字段可能很大&#xff0c;于是我提mysql工单​​alter table xxx ADD user_id int(1)​​。领导看到我的sql工单&#xff0c;于是说&#xff1a;这int(1)怕是不够用吧&#xff0c;接下来是一通解…

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

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

element-ui日期时间选择器禁止输入日期

需求解释&#xff1a;时间日期选择器&#xff0c;下方日期有禁止选择范围&#xff0c;所以上面的日期输入框要求禁止输入&#xff0c;但时间输入框可以输入&#xff0c;也就是下图效果&#xff0c;其中日历中的禁止选择可以通过【picker-options】这个属性实现&#xff0c;此属…

[论文阅读]Deeply-Supervised Nets

摘要 我们提出的深度监督网络&#xff08;DSN&#xff09;方法在最小化分类误差的同时&#xff0c;使隐藏层的学习过程更加直接和透明。我们尝试通过研究深度网络中的新公式来提升分类性能。我们关注卷积神经网络&#xff08;CNN&#xff09;架构中的三个方面&#xff1a;&…

多模态大语言模型arxiv论文略读(六十二)

MileBench: Benchmarking MLLMs in Long Context ➡️ 论文标题&#xff1a;MileBench: Benchmarking MLLMs in Long Context ➡️ 论文作者&#xff1a;Dingjie Song, Shunian Chen, Guiming Hardy Chen, Fei Yu, Xiang Wan, Benyou Wang ➡️ 研究机构: The Chinese Univers…

现代框架对SEO的深度影响

第8章&#xff1a;现代框架对SEO的深度影响 1. 引言 Next 和 Nuxt 是两个 &#x1f525;热度和使用度都最高 的现代 Web 开发框架&#xff0c;它们分别基于 ⚛️React 和 &#x1f596;Vue 构建&#xff0c;也代表了这两个生态的 &#x1f310;全栈框架。 Next 是由 Vercel 公司…

密码学--RSA

一、实验目的 1.随机生成明文和加密密钥 2.利用C语言实现素数选择&#xff08;素性判断&#xff09;的算法 3.利用C语言实现快速模幂运算的算法&#xff08;模重复平方法&#xff09; 4.利用孙子定理实现解密程序 5.利用C语言实现RSA算法 6.利用RSA算法进行数据加/解密 …

如何选择自己喜欢的cms

选择内容管理系统cms what is cms1.whatcms.org2.IsItWP.com4.Wappalyzer5.https://builtwith.com/6.https://w3techs.com/7. https://www.netcraft.com/8.onewebtool.com如何在不使用 CMS 检测器的情况下手动检测 CMS 结论 在开始构建自己的数字足迹之前&#xff0c;大多数人会…

BUUCTF——杂项渗透之赛博朋克

下载附件&#xff0c;是一个txt。打开查看&#xff0c;数据如下&#xff1a; 感觉这个像是用十六进制编辑器打开后的图片数据。为了验证此想法&#xff0c;我用010editor打开&#xff0c;发现文件头的确是png图片的文件头。 把txt文件后缀改成png格式&#xff0c;再双击打开&am…

React 中集成 Ant Design 组件库:提升开发效率与用户体验

React 中集成 Ant Design 组件库:提升开发效率与用户体验 一、为什么选择 Ant Design 组件库?二、基础引入方式三、按需引入(优化性能)四、Ant Design Charts无缝接入图标前面提到了利用Redux提供全局维护,但如果在开发时再自己手动封装组件,不仅效率不高,可能开发的组件…

编译原理实验 之 语法分析程序自动生成工具Yacc实验

文章目录 实验环境准备复现实验例子分析总的文件架构实验任务 什么是Yacc Yacc(Yet Another Compiler Compiler)是一个语法分析程序自动生成工具&#xff0c;Yacc实验通常是在编译原理相关课程中进行的实践项目&#xff0c;旨在让学生深入理解编译器的语法分析阶段以及掌握Yac…