🧠AI RAG

长上下文与递归 RAG

面试回答

常见问法

  • 既然模型支持 100k/1M 长上下文,RAG 是不是要被淘汰了?
  • 长上下文的「中段遗忘」(lost in the middle)是怎么回事?
  • 什么是递归/分层 RAG?和朴素 RAG 有什么区别?
  • 对复杂问题怎么做查询分解和多跳检索?

回答

待补充:从「长上下文 ≠ 有效上下文」切入,对比长上下文直塞、朴素 RAG、递归 RAG 三条路线的成本/延迟/准确率三维曲线。

追问

  • Sliding Window Attention、Ring Attention、Flash Attention 分别优化了什么?
  • Needle-in-a-Haystack 测试怎么解读?
  • 分层索引(父子块、摘要索引)是怎么组织的?
  • 多跳推理用 agentic RAG 还是 pipeline RAG?

原理展开

  • 长上下文退化现象:U 型曲线,首尾高中段低
  • 分层检索:父子块(small-to-big)、摘要索引(summary index)
  • 递归 RAG:先检索 → 判断是否足够 → 再扩展检索 → 汇总
  • Query 分解:把复杂问题拆成子问题,并行/串行检索
  • HyDE / Step-back / Multi-query:查询改写家族
  • 长上下文优化:KV cache 复用、prompt caching、压缩上下文

易错点

  • 以为「上下文变长 = 答得更准」,没测 needle-in-a-haystack
  • 长上下文直塞导致单次请求成本暴涨,线上不可持续
  • 递归 RAG 没设终止条件,陷入死循环
  • 把 Agentic RAG 用在不需要多跳的简单问题上,延迟翻数倍

记忆技巧

  • 核心判断:上下文长不等于有效上下文
  • 三条路线:长塞 / 朴素 RAG / 递归 RAG,按「问题复杂度 × 成本预算」选
  • 分层记忆:索引粒度 ≠ 召回粒度 ≠ 送入上下文的粒度