论文:https://arxiv.org/pdf/2501.05366Search-o1 的核心思想是让大模型在推理过程中自主判断何时缺乏知识,并主动生成搜索查询以调用外部检索模块获取补充文档。随后通过设计的 Reason-in-Documents 模块对冗长检索结果进行“分析—精炼”,提取有用信息再注入后续推理,从而减少噪声干扰。
prompt/search_o1_reasoning.jinja
中定义提示模板,样例如下:
prompt/search_o1_refinement.jinja
,示例如下:
reasoning_indoc_template
,请不要忘了在 servers/prompt/parameter.yaml
中显式注册:
<|begin_search_result|>
…<|end_search_result|>
内容追加到现有 prompt 中:
servers/router/src/router.py
中添加:
<|im_end|>
或 <|end_search_query|>
等终止符。
servers/custom/src/custom.py
中添加:
<search>
标签内的查询字符串。
examples/
下新建一个 search_o1.yaml
:
examples/parameter/search_o1.yaml
,可根据需求修改 benchmark、retriever、generation 等参数配置,或提前在各 Server 下的 parameter.yaml
文件中设置默认值再进行 build。