Search-o1:人大清华联合推出动态检索推理框架,使模型能够在推理过程中动态检索外部知识

简介: Search-o1 是中国人民大学和清华大学联合推出的创新框架,通过动态知识检索和精炼,提升大型推理模型在复杂任务中的推理能力。

❤️ 如果你也关注 AI 的发展现状,且对 AI 应用开发非常感兴趣,我会每日分享大模型与 AI 领域的最新开源项目和应用,提供运行实例和实用教程,帮助你快速上手AI技术,欢迎关注我哦!

🥦 微信公众号|搜一搜:蚝油菜花 🥦


🚀 快速阅读

  1. 功能特点:支持动态知识检索,填补推理过程中的知识空白,提升推理准确性。
  2. 技术原理:基于代理检索增强生成(RAG)机制和Reason-in-Documents模块,实现知识检索与推理的无缝集成。
  3. 应用场景:适用于科学研究、数学教育、编程开发、开放域问答等多个复杂推理任务。

正文(附运行示例)

Search-o1 是什么

Search-o1

Search-o1 是中国人民大学和清华大学联合推出的创新框架,旨在提升大型推理模型(LRMs)在复杂问题中的推理能力。该框架通过整合代理检索增强生成(RAG)机制和Reason-in-Documents模块,使模型能够在推理过程中动态检索外部知识,填补知识空白。

RAG 机制支持模型自主决定何时发起搜索查询,而Reason-in-Documents模块则负责精炼检索到的文档,提取对当前推理步骤有用的信息。这种设计确保了信息能够无缝集成到推理链中,保持推理的连贯性和逻辑性。Search-o1 在多个复杂推理任务和开放域问答基准测试中展现了卓越的性能,为构建更可靠、更通用的智能系统提供了新的途径。

Search-o1 的主要功能

  • 动态知识检索:在推理过程中,当模型遇到知识空白时,动态地检索外部知识,支持逐步推理。
  • 知识精炼:将检索到的文档精炼成简洁、相关的信息,确保信息无缝集成到推理链中,保持推理的连贯性。
  • 提高推理准确性:基于补充外部知识,减少因知识不足导致的推理错误,提高推理的准确性和可信度。
  • 多任务适用性:在科学、数学、编程等多个复杂推理任务及开放域问答任务中表现出色,展示了广泛的适用性。

Search-o1 的技术原理

  • 代理检索增强生成(RAG)机制
  • 自主检索:模型在推理过程中自主决定何时生成搜索查询,触发检索机制获取相关外部知识。
  • 动态迭代:检索机制在单个推理会话中多次触发,满足不同推理步骤的知识需求。
  • 特殊符号:搜索查询和检索结果被特殊符号包围,确保检索过程与推理链的无缝对接。
  • Reason-in-Documents模块
  • 文档分析:基于当前搜索查询、检索到的文档和之前的推理步骤,对文档进行深入分析。
  • 信息提取:从文档中提取与当前推理步骤直接相关的信息,确保信息的准确性和相关性。
  • 精炼输出:生成简洁、相关的信息,并将其无缝集成到推理链中,保持推理的连贯性和逻辑一致性。

如何运行 Search-o1

1. 环境配置

首先,确保你已经安装了 Python 3.9+ 和 Conda 环境。然后,按照以下步骤配置环境:

# 创建 Conda 环境
conda create -n search_o1 python=3.9
conda activate search_o1

# 安装依赖
cd Search-o1
pip install -r requirements.txt

2. 数据准备

使用 data/data_pre_process.ipynb 中的代码将数据集预处理为标准化的 JSON 格式。数据集分为两类:

  • 复杂推理任务:如 GPQA、MATH500、AMC2023、AIME2024 等。
  • 开放域问答任务:如 NQ、TriviaQA、HotpotQA 等。

3. 模型推理

Search-o1 提供了多种推理模式,以下是运行示例:

  1. 直接推理模式

    python scripts/run_direct_gen.py \
     --dataset_name gpqa \
     --split diamond \
     --model_path "YOUR_MODEL_PATH"
    
  2. 朴素检索增强生成(RAG)模式

    python scripts/run_naive_rag.py \
     --dataset_name gpqa \
     --split diamond \
     --use_jina True \
     --model_path "YOUR_MODEL_PATH" \
     --jina_api_key "YOUR_JINA_API_KEY" \
     --bing_subscription_key "YOUR_BING_SUBSCRIPTION_KEY"
    
  3. Search-o1 模式

    python scripts/run_search_o1.py \
     --dataset_name aime \
     --split test \
     --max_search_limit 5 \
     --max_turn 10 \
     --top_k 10 \
     --max_doc_len 3000 \
     --use_jina True \
     --model_path "YOUR_MODEL_PATH" \
     --jina_api_key "YOUR_JINA_API_KEY" \
     --bing_subscription_key "YOUR_BING_SUBSCRIPTION_KEY"
    

4. 评估

推理脚本会自动保存模型的输入和输出文本以供评估。对于检索增强方法,如果模型未能提供最终答案,可以使用回退策略:

python scripts/evaluate.py \
    --output_path outputs/... \
    --apply_backoff

资源


❤️ 如果你也关注 AI 的发展现状,且对 AI 应用开发非常感兴趣,我会每日分享大模型与 AI 领域的最新开源项目和应用,提供运行实例和实用教程,帮助你快速上手AI技术,欢迎关注我哦!

🥦 微信公众号|搜一搜:蚝油菜花 🥦

相关文章
|
存储 JSON 应用服务中间件
Higress的日志收集中,底层用的是Envoy,可不可以实现类似NGINX的rsyslog发送?
【2月更文挑战第30天】Higress的日志收集中,底层用的是Envoy,可不可以实现类似NGINX的rsyslog发送?
205 2
|
消息中间件 关系型数据库 Kafka
Flink CDC可以从Kafka消费数据并写入到Doris中
Flink CDC可以从Kafka消费数据并写入到Doris中
1221 2
|
前端开发
webpack如何设置devServer启动项目为https协议
webpack如何设置devServer启动项目为https协议
2051 0
|
编解码 人工智能 数据库
世界土壤数据库(HWSD)土壤数据集
世界土壤数据库(HWSD)土壤数据集
1423 0
|
8月前
|
JSON 自然语言处理 Linux
linux命令—tree
tree是一款强大的Linux命令行工具,用于以树状结构递归展示目录和文件,直观呈现层级关系。支持多种功能,如过滤、排序、权限显示及格式化输出等。安装方法因系统而异常用场景包括:基础用法(显示当前或指定目录结构)、核心参数应用(如层级控制-L、隐藏文件显示-a、完整路径输出-f)以及进阶操作(如磁盘空间分析--du、结合grep过滤内容、生成JSON格式列表-J等)。此外,还可生成网站目录结构图并导出为HTML文件。注意事项:使用Tab键补全路径避免错误;超大目录建议限制遍历层数;脚本中推荐禁用统计信息以优化性能。更多详情可查阅手册mantree。
731 143
linux命令—tree
|
6月前
|
人工智能 自然语言处理 数据挖掘
Apache Doris 4.0 AI 能力揭秘(一):AI 函数之 LLM 函数介绍
在即将发布的 Apache Doris 4.0 版本中,我们正式引入了一系列 LLM 函数,将前沿的 AI 能力与日常的数据分析相结合,无论是精准提取文本信息,还是对评论进行情感分类,亦或生成精炼的文本摘要,皆可在数据库内部无缝完成。
451 0
Apache Doris 4.0 AI 能力揭秘(一):AI 函数之 LLM 函数介绍
|
算法 数据可视化 测试技术
共学 | 2025年,更加有效地搭建Agent
2024年末,Anthropic写了一篇叫做“Building effective Agents”的文章,针对如何有效的搭建Agent,常见Agent工作流程的几种范式,以及对现在的Code Agent工作模式做了详细的解读。本文结合cookbook+ModelScope的免费Qwen API做了一些中文示例的实践,来更好的理解这篇文章。
3558 7
共学 | 2025年,更加有效地搭建Agent
|
编解码 监控
Zoom + OBS + B 站直播配置
Zoom + OBS + B 站直播配置
|
机器学习/深度学习 存储 人工智能
算法金 | 一个强大的算法模型,GP !!
高斯过程是一种非参数机器学习方法,利用高斯分布描述数据,并通过核函数衡量相似性。它在小样本和不确定性估计上有优势,常用于回归、分类和优化。高斯过程基于函数分布,通过核函数(如线性、RBF、多项式)捕捉数据关系。与传统方法相比,它在处理不确定性和非线性问题时更具灵活性。虽然计算复杂度高、内存需求大,但通过稀疏高斯过程等方法可改善。高斯过程还可扩展到非平稳和多任务场景。本文通过代码示例展示了高斯过程在战斗胜率预测中的应用。
548 11
算法金 | 一个强大的算法模型,GP !!
|
开发框架 Go 微服务
Golang 语言怎么使用 go-micro 和 gin 开发微服务?
Golang 语言怎么使用 go-micro 和 gin 开发微服务?
820 0

热门文章

最新文章