1. Deep Search 是什么?
Deep Search 是一种面向检索增强生成(RAG)系统的智能检索范式,其核心在于通过 分阶段检索 与 动态决策机制 优化信息召回质量。与传统 RAG 的“一次性检索”不同,Deep Search 强调 检索与推理的协同,在生成过程中按需触发检索,并基于语义相关性、上下文深度等维度筛选信息。
例如,当用户提问涉及多层级知识(如“2024年Transformer改进方向的最新研究”)时,Deep Search 会先检索核心概念的定义,再逐层深入技术细节或最新论文,而非一次性返回冗余内容。这种机制显著减少了噪音干扰,提升后续生成环节的准确性。
2. Deep Search 如何提高 RAG 的效果?
传统 RAG 的检索过程是“一次性完成”:用户提问后,系统直接召回一批文档片段,无论是否冗余,全部塞给生成模型。这容易导致两个问题:
- 答案质量不稳定:冗余信息干扰生成逻辑,模型可能错误引用低质量内容;
- 缺乏灵活性:检索完成后无法根据生成需求动态补充信息。
Deep Search 通过两项核心改进解决这些问题:
1. 分阶段检索,层层深入
- 问题拆解:将复杂问题拆解为多个子问题,分批次检索。例如回答“如何预测股票趋势”时:
- 第一阶段检索“预测股票趋势的常用方法”;
- 若生成模型发现需要具体技术细节,触发第二阶段检索“图神经网络+股票预测案例”;
- 遇到模糊结论(如“数据量不足影响效果”)时,第三阶段检索“小样本优化方案”。
- 优势:避免一次性召回大量无关内容,减少生成模型的判断负担。
2. 边生成边检索,动态补全
- 主动查漏补缺:生成过程中,模型实时检测知识缺口。例如:
- 初始检索未覆盖“2024年最新研究”,生成到相关段落时自动触发二次检索;
- 发现术语定义模糊(如“稀疏化方法”),立即检索权威定义。
- 示例:
用户提问:“Transformer 模型如何降低计算成本?”- 传统 RAG:一次性检索“Transformer 优化方法”,可能混杂过时方案;
- Deep Search:
- 首轮检索“主流计算成本优化技术”;
- 生成时发现未提及“2024年稀疏化技术”,立即补搜最新论文;
- 最终答案整合经典方法与最新进展。
3. Deep Search 强化 RAG 的实现步骤
步骤说明:
- 意图解析:使用大模型(如DeepSeek-R1)解析用户问题,生成检索关键词与子问题。
- 分阶段检索:根据问题复杂度启动多轮检索,优先召回高置信度文档,再扩展相关上下文。
- 动态融合:基于检索结果的质量与相关性,动态调整生成模型对检索内容的依赖权重。
- 验证迭代:若生成答案置信度不足,触发二次检索并修正输出。
注意事项:
- 注意设置最大循环迭代次数,以防无限循环
4. 提示词示例
Prompt - 原始问题拆分
为了更全面地回答此问题,请将原始问题拆分为最多四个子问题,以字符串列表的形式返回。
如果是非常基础的问题无需拆分,则保持原始问题作为列表中的唯一元素。
原始问题:{original_query}
<示例>
输入样例:
"解释深度学习"
输出样例:
[
"什么是深度学习?",
"深度学习与机器学习有什么区别?",
"深度学习的发展历史是怎样的?"
]
</示例>
请用Python列表格式返回响应:
Prompt - 判断文本块是否有助于回答问题
根据查询问题和检索到的文本块,判断该文本块是否有助于回答任意一个查询问题,只能返回"是"或"否",无需提供任何其他信息。
查询问题:{query}
检索到的文本块:{retrieved_chunk}
该文本块是否有助于回答问题?
Prompt - 迭代扩充,返回查询列表
根据原始查询、先前分解的子查询和所有检索到的文档块,判断是否需要新增搜索查询。如果需要进一步研究,请返回最多3个搜索查询的Python列表;如果不需要,请返回空列表。
注:如果原始查询是撰写报告类需求,即使已有信息充分,也倾向于生成补充性查询而非返回空列表。
原始查询:{question}
先前分解的子查询:{mini_questions}
相关文本块:
{mini_chunk_str}
请严格使用有效的Python列表格式返回,不要包含其他任何内容。
Prompt - 总结
你是一位擅长内容分析的AI专家,请基于先前分解的查询和检索到的相关文本块,总结形成具体且详细的回答或报告。
原始查询:{question}
先前分解的子查询:{mini_questions}
相关文本块:
{mini_chunk_str}
请开始总结: