RAG 八股
2026/9/2大约 3 分钟
RAG 八股
什么是 RAG?简述流程
RAG 全称是 检索增强生成,它解决的核心问题是 LLM 的知识是固定了,遇到私有数据或者最新的信息它就答不上来或者答的不好
RAG:
- 离线(文档入库)
- 文档加载 (DocumentLoader -> Document 对象,有 str 和 metadata)
- 图表怎么办? 默认忽略,可以用 base64/ocr 或者 多模态模型先解析文字
- 文档切割(chunking),通常 500~1000 token 一个 chunk,overlab 100 token,避免把一段完整的语义从中间切断
- Embedding(向量化)
- 入库(向量数据库)
- 文档加载 (DocumentLoader -> Document 对象,有 str 和 metadata)
- 在线(用户查询)
- 用户 query
- query 改写
- 向量检索(粗排序),找出 Top-K 个 Chunk,但是没有深度理解查询和文档之间的语义关系
- Reranker(精排),通常是 cross-encoder 架构,把用户输入和 chunk 拼在一起理解其相关性,保留 Top-3 到 Top-5
- 把用户问题 + 精排后的 chunk 拼成 prompt,交给 LLM 生成最终答案
- 用户 query
Chunking 策略有哪些
- 最简单的做法是 固定值 切分,一般设置切分为 500-1000 token,overlap 100 左右
- 固定大小切分会破坏语义,语义切分按章节,段落。对于有明确标题结构的 Markdown 或 HTML 文档,按标题层级切是更优的选择,metadata 带层级数据
- 特殊处理:代码按类/方法切分,表格转 md 或者添加语义
- 父子切割:检索使用小粒度的 chunk,去除对应的 大chunk,兼顾检索精度和语义
向量数据库索引算法有哪些:
- HNSW:召回率最高的算法之一,一个多层图结构
- IVF:先聚类成桶,然后从桶中找
向量数据库的核心概念
- collections:集合,类似于表
- Segment:段,类似与行
BM25 是什么
关键词匹配,词频统计,核心方法是 倒排索引(key 是词,value 是文档)
适合 型号,版本号,人名 这种查询
BM25 在 TF-IDF 算法(词频-稀缺度)基础上又加了饱和度限制
混合检索核心融合算法: RRF,用排名的倒数打分(α * BM25分 + (1-α) * 向量分)
什么是多路召回
用不同检索方法去召回数据
- BM25
- 向量
- 多 Query
有哪些更复杂的 RAG 范式
- Graph RAG
- Agentic RAG
RAG 效果如何量化
检索层
- Hit@K ,Top-K 检索到的准确率
- 更进一步 MRR,对每个问题算 1 / 排名,然后对所有问题求平均,MRR 越高,说明正确内容排名越靠前
生成评估层
- 忠实度:说的内容是否都有出处
- 答案相关性
- 上下文召回率:所需要的信息有多少比例在检索结果里覆盖到了(需要有「标准答案」作为参照)
- 上下文精确率:找到的是否靠前
RAG 如何更新
给每个文档算一个内容 hash,通过 轮询 或者 监听数据源变更,检测到文档新增、修改、删除的时候,先清掉旧的向量,再重新切割入库