怎么读
每篇先回答“它解决什么失败”,再读方法、实验和限制。不要把论文结论直接当产品配置;把数据集、检索器、生成模型和指标版本记录下来。
必读:建立共同语言
1. RAG(Lewis et al., 2020)
- 论文:Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks
- 代码入口:facebookresearch/RAG
- 核心:参数记忆与非参数外部记忆组合。
- 学习问题:RAG 的知识更新边界在哪里?
- 学习问题:论文如何分别训练 retriever 与 generator?
- 动手:固定生成模型,只替换检索器,记录 EM/F1。
- 风险:论文数据与今天的长上下文模型不可直接比较。
2. DPR(Karpukhin et al., 2020)
- 论文:Dense Passage Retrieval
- 代码:facebookresearch/DPR
- 核心:question/passage 双编码器。
- 学习问题:负样本如何影响召回?
- 学习问题:BM25 何时会胜过 dense retriever?
- 动手:同一批问题比较 BM25、DPR、混合检索。
- 输出:Recall@20 和错误案例各 10 条。
3. FiD(Izacard & Grave, 2021)
- 论文:Leveraging Passage Retrieval with Generative Models
- 代码:facebookresearch/FiD
- 核心:每段证据独立编码,在 decoder 融合。
- 学习问题:增加 passage 数量为什么可能提升答案?
- 学习问题:显存和延迟的代价是什么?
- 动手:比较拼接上下文与 FiD 的引用覆盖率。
4. BEIR(Thakur et al., 2021)
- 论文:BEIR: A Heterogeneous Benchmark
- 代码:beir-cellar/beir
- 核心:跨领域零样本检索评测。
- 学习问题:为什么单一数据集排名不可靠?
- 学习问题:nDCG@10 与 Recall@k 的使用场景有何不同?
- 动手:固定模型跑两个领域,写一页误差分析。
5. Lost in the Middle(Liu et al., 2023)
- 论文:Lost in the Middle
- 学习问题:长上下文中间位置为什么容易被忽略?
- 学习问题:top-k 变大是否必然更好?
- 动手:把同一证据放在开头、中间、末尾,比较答案与引用。
必读:检索增强策略
6. HyDE(Gao et al., 2022)
- 论文:Precise Zero-Shot Dense Retrieval without Relevance Labels
- 学习问题:生成假设答案如何帮助召回?
- 学习问题:假设答案的幻觉会怎样污染检索?
- 动手:原查询与 HyDE 查询各跑 Recall@5。
- 记录:额外 token、延迟和失败问题类型。
7. Self-RAG(Asai et al., 2023)
- 论文:Self-RAG
- 代码:AkariAsai/self-rag
- 学习问题:模型何时决定检索?
- 学习问题:reflection token 怎样参与生成控制?
- 动手:给不可回答问题,检查是否减少无依据回答。
8. CRAG(Yan et al., 2024)
- 论文:Corrective Retrieval Augmented Generation
- 学习问题:检索质量评估器何时触发 web search 或纠正?
- 学习问题:错误检索与无检索哪个更危险?
- 动手:构造低相关 top-k,测试纠正分支。
9. GraphRAG(Edge et al., 2024)
- 论文:From Local to Global
- 代码:microsoft/graphrag
- 学习问题:社区摘要如何回答全局问题?
- 学习问题:图构建成本与增量更新如何控制?
- 动手:同一语料跑 local/global query,各记录 token 成本。
10. RAGAS(Es et al., 2023)
- 论文:RAGAS: Automated Evaluation of Retrieval Augmented Generation
- 代码:explodinggradients/ragas
- 学习问题:faithfulness 与 answer relevancy 分别测什么?
- 学习问题:LLM judge 与人工标注如何校准?
- 动手:30 条 golden set,抽样人工复核 judge 错误。
进阶:系统设计与生产
11. ColBERT(Khattab & Zaharia, 2020)
- 论文:ColBERT
- 学习问题:late interaction 为何在效率和精度间折中?
- 动手:比较单向量与多向量索引内存。
12. Contriever(Izacard et al., 2022)
- 论文:Unsupervised Dense Information Retrieval
- 学习问题:无监督对比学习为何能跨域?
- 动手:在无标注语料上做 hard-negative 分析。
13. RAFT(Zhang et al., 2024)
- 论文:RAFT: Adapting Language Model to Domain Specific RAG
- 学习问题:领域微调与更好检索分别贡献多少?
- 动手:比较 distractor 文档下的答案稳定性。
14. LongRAG(可能的长文检索路线)
- 入口:LongRAG 论文搜索
- 学习问题:大 chunk 与重排如何改变上下文利用?
- 注意:标题、版本和代码需在开课前复核,避免引用错误版本。
15. LLM 大规模检索综述
- 入口:Retrieval-Augmented Generation survey 搜索
- 学习问题:检索、记忆、工具调用的边界如何划分?
- 动手:画出系统数据流并标出每个可观测点。
原始官方资料
- LlamaIndex RAG 教程
- 问题:哪些默认组件能替换?
- 练习:替换 embedding 并保存索引版本。
- LangChain RAG 教程
- 问题:Runnable 边界在哪里?
- 练习:让 retriever 独立返回 source metadata。
- Haystack 文档
- 问题:pipeline 如何序列化和观测?
- 练习:给每个组件记录耗时。
- Qdrant 文档
- 问题:payload filter 如何保证租户隔离?
- 练习:写越权测试。
- FlagEmbedding README
- 问题:embedding 与 reranker 的输入输出是什么?
- 练习:比较 dense、sparse、rerank 三段式。
- RAGFlow README
- 问题:解析器如何保留表格和页码?
- 练习:导入复杂 PDF 并抽查引用。
课程复盘模板
每读一篇材料,填写:
- 目标任务和数据集是什么?
- 检索器、生成器、上下文长度分别是什么?
- 基线是否公平、指标是否匹配?
- 失败案例属于召回、排序、生成还是评估偏差?
- 哪个结论能转为一个最小实验?
- 许可、模型权重和数据集条款是什么?
- 上线时要增加哪些日志、限流和权限检查?
八周阅读与实验节奏
- 第 1 周:RAG、DPR、BEIR,完成 BM25 vs dense。
- 第 2 周:FiD、Lost in the Middle,完成上下文位置实验。
- 第 3 周:HyDE、ColBERT,完成查询改写与 late interaction 对比。
- 第 4 周:Self-RAG、CRAG,完成检索门控和纠正分支。
- 第 5 周:RAGAS,建立 golden set 与人工校准。
- 第 6 周:GraphRAG,比较 local/global 与普通检索。
- 第 7 周:阅读 LlamaIndex、LangChain、Haystack 官方教程,完成同一接口适配。
- 第 8 周:Qdrant/pgvector 部署演练、备份恢复、越权和 prompt injection 测试。
引用与核验说明
论文链接优先使用 arXiv 原文;代码链接指向作者或组织的 GitHub。论文实验结果不能直接代表当前模型效果,课程应锁定 commit、依赖、模型和数据版本。本文未逐项核实所有仓库在 2026-10-17 的归档状态与许可证,尤其 LongRAG、部分社区实现和模型权重,部署或发表前必须重新打开官方 LICENSE 与 release 页面。
评论
正在加载评论…