🧠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,按「问题复杂度 × 成本预算」选
- 分层记忆:索引粒度 ≠ 召回粒度 ≠ 送入上下文的粒度