❤️ 如果你也关注 AI 的发展现状,且对 AI 应用开发非常感兴趣,我会每日分享大模型与 AI 领域的最新开源项目和应用,提供运行实例和实用教程,帮助你快速上手AI技术,欢迎关注我哦!
🥦 微信公众号|搜一搜:蚝油菜花 🥦
🚀 快速阅读
- 功能特点:支持动态知识检索,填补推理过程中的知识空白,提升推理准确性。
- 技术原理:基于代理检索增强生成(RAG)机制和Reason-in-Documents模块,实现知识检索与推理的无缝集成。
- 应用场景:适用于科学研究、数学教育、编程开发、开放域问答等多个复杂推理任务。
正文(附运行示例)
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 提供了多种推理模式,以下是运行示例:
直接推理模式:
python scripts/run_direct_gen.py \ --dataset_name gpqa \ --split diamond \ --model_path "YOUR_MODEL_PATH"
朴素检索增强生成(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"
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
资源
- 项目官网:https://search-o1.github.io/
- GitHub 仓库:https://github.com/sunnynexus/Search-o1
- HuggingFace 仓库:https://huggingface.co/papers/2501.05366
- arXiv 技术论文:https://arxiv.org/pdf/2501.05366
❤️ 如果你也关注 AI 的发展现状,且对 AI 应用开发非常感兴趣,我会每日分享大模型与 AI 领域的最新开源项目和应用,提供运行实例和实用教程,帮助你快速上手AI技术,欢迎关注我哦!
🥦 微信公众号|搜一搜:蚝油菜花 🥦