📋 摘要

1. 什么是 RAG?它解决什么问题?和微调有什么区别?

📋 回答重点
  • RAG = 检索外部知识库 → 注入上下文 → 再生成(「先查再用」)
  • 解决:幻觉、知识时效、私有知识接入、可溯源
  • vs 微调:RAG 补知识(更新快、成本低、可溯源),微调改行为/风格,实践常组合

扩展知识

  • 检索质量决定 RAG 上限
  • 详细讲解:RAG

2. RAG 的完整流程包含哪几个阶段?

📋 回答重点
  • 索引(离线):文档 → 分块 → embedding → 存向量库
  • 检索(在线):query → 向量化 → top-k 检索 →(rerank)
  • 生成(在线):检索片段拼进 prompt → LLM 生成(带引用)

扩展知识

  • 每段质量都影响最终答案
  • 详细讲解:RAG

3. RAG 中如何做文本分块?

📋 回答重点
  • 权衡:块大检索不准、块小语义破碎
  • 策略:固定大小(+overlap)、递归、语义分块、按标题/表格结构切
  • 关键参数 chunk size(256~1024 token) 与 overlap(10%~20%)

扩展知识

  • 问答用小块、摘要可大块
  • 详细讲解:RAG

4. 如何选择和评估 embedding 模型?

📋 回答重点
  • 选型看:语言(中文选 BGE)、维度、检索专用、上下文长度、成本
  • 评估:MTEB 基准 + 业务数据实测(Recall@k/MRR/NDCG)
  • query 与 doc 可用不对称模型;度量要与模型训练一致

扩展知识

  • 真实业务数据评测更可靠
  • 详细讲解:RAG

5. 常用向量数据库有哪些?HNSW 原理是什么?

📋 回答重点
  • 库:FAISS(高性能库)、Milvus(生产级)、pgvector(PG 扩展)、Chroma(原型)
  • HNSW:多层小世界图 + 贪心搜索,近似最近邻,检索快、内存较大,速度/召回用 efSearch 调

扩展知识

  • HNSW 是对数级检索
  • 详细讲解:RAG

6. 余弦、内积、欧式距离怎么选?

📋 回答重点
  • 余弦:看方向,文本 embedding 语义常用
  • 内积:向量归一化后等价余弦,计算更快(向量库常用)
  • 欧式:考虑模长时(如图像特征)
  • 关键:度量须与 embedding 模型训练时一致

扩展知识

  • 语义由方向决定,模长无关
  • 详细讲解:RAG

7. 什么是混合检索?BM25 和向量如何融合?

📋 回答重点
  • 向量管语义、BM25 管精确词(型号/错误码),互补
  • 融合:RRF(排名倒数求和,免调权,主流)或加权融合
  • 标准链路:BM25 + 向量 → RRF → rerank

扩展知识

  • score = Σ 1/(k + rank)
  • 详细讲解:RAG

8. 什么是 rerank?双编码器和交叉编码器有什么区别?

📋 回答重点
  • rerank:粗召回 top-k 后用强模型精排,取最终 top-N
  • 双编码器:分别编码,快但粗(初检索)
  • 交叉编码器:query+doc 拼接一起编码,准但慢(重排)
  • 组合:双编码器粗排 + 交叉编码器重排

扩展知识

  • 代表:bge-reranker、Cohere Rerank
  • 详细讲解:RAG

9. 检索质量差有哪些原因?如何优化?

📋 回答重点
  • 原因:分块不当、embedding 不匹配、query-doc 表述鸿沟、单路召回、库参数/未更新
  • 优化三板斧:query 改写/HyDE + 混合检索 + rerank
  • 并按「分块→embedding→召回→重排」逐段排查

扩展知识

  • HyDE 先假设答案再检索,缩小鸿沟
  • 详细讲解:RAG

10. 有哪些高级 RAG 技术?

📋 回答重点
  • Parent-Document:检索小块、返回父块大上下文
  • HyDE:先假设答案再检索
  • Self-RAG / CRAG:按需检索、反思纠正
  • GraphRAG:知识图谱做多跳/全局问题
  • 多路召回 + rerank 是通用标配

扩展知识

  • 多跳/全局问题用 GraphRAG
  • 详细讲解:RAG

11. 如何组织检索到的上下文?如何做引用溯源?

📋 回答重点
  • 组织:去重、按相关性排序、编号 [1][2]、控制 token、必要时 LLM 压缩
  • 注意 lost in the middle(中间信息被忽略)
  • 溯源:要求模型引用编号 + 约束解码强制格式 + 映射回原文位置

扩展知识

  • 忠实度评估检验溯源质量
  • 详细讲解:RAG

12. 如何评估 RAG 系统的效果?

📋 回答重点
  • 三指标:忠实度(答案忠于上下文)、答案相关性、上下文相关度
  • 工具:RAGAS 自动评估;检索用 Recall@k/MRR/NDCG
  • 分层评估(检索 vs 生成分开定位),用真实业务数据

扩展知识

  • 忠实度防幻觉
  • 详细讲解:RAG

13. RAG 系统生产落地有哪些工程要点?

📋 回答重点
  • 增量更新、缓存(query/embedding)、成本控制
  • 权限过滤(多租户最易踩坑)、可观测、容错降级
  • 质量迭代:线上反馈回流优化分块/embedding/rerank

扩展知识

  • 体现「能上线」而非「搭 demo」
  • 详细讲解:RAG

14. dense 检索和 sparse 检索有什么区别?

📋 回答重点
  • Dense(稠密):embedding 压成低维向量,语义匹配,同义/改写也能命中
  • Sparse(稀疏):词项权重(BM25),词面精确匹配,专名/型号/错误码强
  • Dense 强语义弱精确词;Sparse 强精确词弱语义
  • 生产普遍混合检索互补(RRF/加权融合)

扩展知识

  • Sparse 免训练、可解释;Dense 依赖训练语料、领域迁移差
  • 详细讲解:RAG

15. BM25 和 TF-IDF 有什么区别?

📋 回答重点
  • TF-IDF:TF(线性词频)× IDF,词出现越多权重线性涨
  • BM25 = IDF + TF 饱和(k1)+ 文档长度归一(b)
  • BM25 是 TF-IDF 的工程改良,长期作为 sparse 基线
  • 默认参数 k1=1.2~2、b=0.75

扩展知识

  • 公式 BM25 = Σ IDF · f·(k1+1) / (f + k1·(1-b+b·|D|/avgdl))
  • 详细讲解:RAG

16. query 和 document 的不对称问题如何解决?

📋 回答重点
  • 本质:query 短口语、doc 长书面,分布/信息量不同,同模型编码会错位
  • 非对称双编码器:query/doc 用不同 prompt 模板(E5 query:/passage:、BGE instruction)
  • query 侧加指令、doc 侧离线编码固定
  • 也可用 query 改写 / HyDE / ColBERT 多向量缓解

扩展知识

  • 训练侧用对比学习让 query 向量靠近正例 doc 向量
  • 详细讲解:RAG

17. ColBERT 多向量检索的原理是什么?

📋 回答重点
  • 不把整段压成一个向量,而是每个 token 存一个向量(多向量)
  • 打分用 MaxSim 后期交互:score = Σ_i max_j(q_i · d_j)
  • doc token 向量离线预存,查询只编码 query
  • 精度接近交叉编码器,比它快;代价是存储放大 n 倍

扩展知识

  • 代表 ColBERTv2/PLAID,是速度/精度的折中
  • 详细讲解:RAG

18. 如何对 embedding 模型做领域微调?

📋 回答重点
  • 数据:(query, 正样本, 负样本) 三元组,负样本用 hard negative(相似但不相关)
  • 训练:对比学习 InfoNCE(in-batch negative)+ LoRA 参数高效微调
  • 标注不足用 LLM 合成伪 query
  • 在 BGE/E5 检索基座上续训,用领域集 Recall@k/MRR/NDCG 评测

扩展知识

  • hard negative 可用 BM25 挖同主题不相关文档;防灾难性遗忘混入通用数据
  • 详细讲解:RAG

19. 什么是元数据过滤?如何实现?

📋 回答重点
  • 用结构化字段(时间/部门/类型/权限标签)约束召回范围,即 filtered search
  • Pre-filter:先筛后搜,语义准但过滤宽时性能差
  • Post-filter:先搜后筛,快但可能不足 k 条
  • single-stage filtering:索引内嵌过滤,兼顾两者

扩展知识

  • 过滤字段要建标量索引;多租户权限常靠它实现
  • 详细讲解:RAG

20. 如何处理文档新鲜度?时间加权检索怎么做?

📋 回答重点
  • 语义分叠加时间衰减分:final = α·sim + β·recency
  • 衰减用指数 exp(-λ·Δt) 或高斯,或近 N 天加 boost
  • 也可用元数据过滤圈时间窗口、标 valid_until 自动下架
  • 按 query 时效敏感度选择性启用(事实类不衰减)

扩展知识

  • 新闻/价格/版本等时效内容适用,λ 按业务调
  • 详细讲解:RAG

21. 多路召回如何实现?各路结果如何融合?

📋 回答重点
  • 多通道并行召回:向量 + BM25 + 多 query + 实体/元数据
  • 融合:RRF(排名倒数求和,免调权)或加权融合
  • 融合后并集去重 → 统一 rerank 取 top-N
  • 通道越多召回越全,但延迟成本上升

扩展知识

  • RRF:score = Σ 1/(k + rank);每路结果需归一化/去重
  • 详细讲解:RAG

22. HNSW 的三个关键参数(M、efConstruction、efSearch)分别是什么?

📋 回答重点
  • M:每节点邻居数(图密度),越大召回高、内存大、建图慢
  • efConstruction:建图候选宽度,越大图质量越高、构建慢
  • efSearch:查询候选宽度,越大召回高、查询慢
  • 经验 efConstruction > efSearch;efSearch 是上线最常调的旋钮

扩展知识

  • 三者都在召回率 ↔ 速度/内存间权衡
  • 详细讲解:RAG

23. IVF 和 HNSW 有什么区别?如何选择?

📋 回答重点
  • IVF:KMeans 聚成 nlist 簇,查询先找 nprobe 簇再桶内搜
  • HNSW:多层小世界图贪心搜,对数级
  • IVF 内存小、构建快、增量友好;HNSW 召回高、查询快但内存大
  • 中小规模选 HNSW;超大/内存受限选 IVF+PQ

扩展知识

  • 参数:IVF=nlist/nprobe;HNSW=M/efSearch,两者都是 ANN
  • 详细讲解:RAG

24. 乘积量化(PQ)的原理是什么?

📋 回答重点
  • 高维向量切 m 段,每段 KMeans 聚类,用质心 ID 代替浮点
  • 存储压缩数倍(如 1024 维/8 段/256 质心 = 8 字节)
  • 检索查表(lookup table)加速,有量化误差(有损)
  • 常与 IVF 组合成 IVF-PQ,十亿级标配

扩展知识

  • 召回略降,常配「粗筛后原始向量精算」重排
  • 详细讲解:RAG

25. 如何选择向量数据库?选型要点有哪些?

📋 回答重点
  • 五维:功能(过滤/多向量/多租户)、性能规模、一致可用性、运维、成本生态
  • FAISS=高性能库需自建;Milvus/Qdrant=生产级服务;pgvector=PG 扩展;Chroma=轻量原型
  • 百万级 pgvector/单机即可;十亿级选分布式
  • 已有 PG 选 pgvector 落地最快;需复杂过滤选 Milvus/Qdrant

扩展知识

  • 不要背产品名,按「规模/分布式/事务过滤/运维成本」给选型逻辑
  • 详细讲解:RAG

26. filtered search(带过滤的向量检索)性能如何优化?

📋 回答重点
  • 本质矛盾:ANN 索引为全局近邻优化,与子集过滤冲突
  • 用 single-stage filtering(索引内嵌过滤)比 pre/post 都稳
  • 高基数字段建倒排+向量联合索引;固定过滤集合可缓存
  • 按选择度动态规划:过滤命中多走向量、命中极少先过滤再精算

扩展知识

  • 高选择性查询直接暴力扫描反而更快
  • 详细讲解:RAG

27. query rewriting 是什么?multi-query 和 step-back 有什么区别?

📋 回答重点
  • query rewriting:用 LLM 把口语 query 改写/扩展成检索友好形式,缩小鸿沟
  • multi-query:横向生成多个不同角度改写并行检索,扩大召回
  • step-back:纵向抽象到上位问题检索背景再答
  • 常用 LLM 生成多 query + RRF 融合

扩展知识

  • 横向(同层多角度)vs 纵向(向上抽象)
  • 详细讲解:RAG

28. HyDE 的原理是什么?有哪些局限?

📋 回答重点
  • 原理:先让 LLM 生成假设答案,再用假设答案向量去检索(对齐 doc 分布)
  • 局限:假设答案编造事实会带偏检索、依赖 LLM 质量、多一步成本延迟
  • 精确词/型号/错误码场景不如 BM25;冷门领域生成差

扩展知识

  • 适合语义模糊、长短鸿沟大的场景
  • 详细讲解:RAG

29. 什么是 routing(路由)?query 路由如何实现?

📋 回答重点
  • 按 query 意图/类型分发到不同知识库/检索器/模型/是否走 RAG
  • 实现:规则关键词、分类器、LLM few-shot 判断、语义路由(相似度选分支)
  • 多知识库、多任务时用;简单 query 可跳过重流程降成本

扩展知识

  • 路由 + 回退:某路结果差回退备用源
  • 详细讲解:RAG

30. 单轮检索和多轮检索有什么区别?

📋 回答重点
  • 单轮:一次检索一次生成,简单低延迟,适合独立问答
  • 多轮:检索-生成循环,根据中间结果再检索,适合多跳/复杂问题
  • 多轮需循环终止条件(最大轮次/信息足够/LLM 判断)
  • 每轮把前轮结果拼入上下文驱动下一轮

扩展知识

  • 多轮延迟成本高,可按复杂度路由(简单单轮)
  • 详细讲解:RAG

31. iterative retrieval 和递归检索是什么?

📋 回答重点
  • iterative:线性循环「检索→生成→再检索」,前轮结果驱动下轮
  • recursive:树形递归把问题拆子问题,逐层检索合并
  • 都由 LLM/规则决定是否继续,设最大迭代次数
  • 适合多跳/可分解的复合问题,代价是延迟成本

扩展知识

  • 代表 Self-Ask/IRCoT
  • 详细讲解:RAG

32. conversational RAG 如何实现?如何做多轮改写?

📋 回答重点
  • 多轮 query 含指代/省略,需结合历史理解
  • 核心:LLM 把「历史 + 当前 query」改写为独立完整 query(补指代)
  • 维护会话状态(历史/检索结果/引用);历史过长做摘要/滑窗
  • 记忆:短期窗口 + 长期向量化历史

扩展知识

  • 例:「它什么时候发布的?」+上文 iPhone 16 →「iPhone 16 什么时候发布?」
  • 详细讲解:RAG

33. query 意图识别怎么做?

📋 回答重点
  • 规则/关键词(快覆盖窄)→ embedding 分类(语义路由)→ 微调小模型 → LLM few-shot
  • 意图类型:知识问答、闲聊、操作执行、多意图
  • 输出结构化意图 + 置信度 + 低置信回退
  • 用于「是否检索、路由到哪、选什么检索策略」

扩展知识

  • LLM few-shot 灵活、可解释,是当前主流
  • 详细讲解:RAG

34. GraphRAG 的社区摘要是什么?如何工作?

📋 回答重点
  • 抽取实体关系建知识图谱 → Leiden 社区检测 → LLM 对每个社区生成摘要
  • 社区可分层(细到全局)
  • 本地查询取实体邻居/片段;全局查询读社区摘要答整体性问题
  • 擅长多跳/全局问题,建图成本高

扩展知识

  • 解决「块检索」做不了全局聚合的问题
  • 详细讲解:RAG

35. self-RAG 的反思 token 是什么?

📋 回答重点
  • Retrieve(要不要检索)、IsREL(片段相关吗)、IsSUP(句子被支撑吗)、IsUSE(内容有用吗)
  • 训练时 critic 标注,推理时按需检索 + 逐句自检
  • 自适应检索、自我纠错,比固定管线灵活

扩展知识

  • IsSUP 用于反幻觉
  • 详细讲解:RAG

36. 什么是 agentic RAG?

📋 回答重点
  • LLM 像 Agent 自主编排:规划、调工具、多步迭代检索
  • 检索器/BM25/数据库/计算器封装成 tool 供调用
  • ReAct/Plan-and-Execute,边做边评估
  • vs 传统 RAG:动态多次检索 + 自主决策,但成本高需限步数

扩展知识

  • 实现靠 LangGraph/AutoGen/LlamaIndex Agent 等框架
  • 详细讲解:RAG

37. CRAG 的评分器(evaluator)是如何工作的?

📋 回答重点
  • 轻量检索评估器(小模型)给 query+文档打相关分
  • 分三档:Correct 直接精炼生成、Incorrect 丢弃改外部搜索、Ambiguous 部分保留补全
  • 纠正动作:query 重写再检索 / 网页搜索兜底
  • 评分器必须轻量廉价,否则抵消收益

扩展知识

  • 训练数据用「文档是否含答案」自动标注
  • 详细讲解:RAG

38. RAPTOR 是什么?解决什么问题?

📋 回答重点
  • 块 → 相邻聚类 + LLM 摘要 → 上层节点,递归成多层树
  • 所有层级节点都入向量索引
  • 检索:树遍历自顶向下 / 折叠树拍平多粒度命中
  • 解决「单一分块粒度无法兼顾细节与全局」的问题

扩展知识

  • 强于跨块高层问题,摘要有成本、可能引入噪声
  • 详细讲解:RAG

39. semantic chunking 如何实现?

📋 回答重点
  • 按语义边界切,避免切断语义
  • 核心:相邻句 embedding 相似度骤降处为边界
  • 也可用模型判断断点 / 句子聚类
  • 参数:相似度阈值、最小块长;代价比固定分块多 embedding 成本

扩展知识

  • 可结合标题/段落结构做辅助信号
  • 详细讲解:RAG

40. 什么是 lost in the middle?如何缓解?

📋 回答重点
  • LLM 对长上下文中间位置信息记忆弱(U 形注意力)
  • 最相关片段排中间可能被忽略
  • 缓解:rerank + 相关放首尾、压缩上下文、只取必要 top-N、Map-Reduce 分段

扩展知识

  • Liu et al., 2023;选长上下文能力强的模型也有帮助
  • 详细讲解:RAG

41. stuffing 和 rerank 方式组织上下文有什么区别?

📋 回答重点
  • Stuffing:所有片段全塞进 prompt,简单但噪声多、易超长、易 lost in the middle
  • Rerank 精选:粗召回后交叉编码器精排,只取最相关 top-N
  • 片段少都相关直接 stuff;召回多混噪声先 rerank
  • 更精细可 Map-Reduce/Refine

扩展知识

  • rerank 多一步但 prompt 更短、更聚焦
  • 详细讲解:RAG

42. 引用溯源如何实现?如何保证引用忠实性?

📋 回答重点
  • 片段编号 [1][2] 注入 prompt,要求标注来源
  • 约束解码/结构化输出强制合法引用格式
  • 维护「编号→原文位置」映射,前端渲染可点击
  • 忠实性:用 NLI/RAGAS Faithfulness 逐句校验是否被引用支撑,无支撑则丢弃

扩展知识

  • 引用精确到片段而非整篇文档;训练/RL 惩罚错误引用
  • 详细讲解:RAG

43. RAG 幻觉和无 RAG 幻觉有什么区别?

📋 回答重点
  • 无 RAG:纯参数记忆/知识缺失,凭空编造
  • RAG 幻觉:上下文冲突、被错误片段误导、错误引用、忽略上下文用旧知识答
  • RAG 幻觉有上下文可对照,可用忠实度评估检测
  • RAG 消知识型幻觉,但引入检索误导型新幻觉

扩展知识

  • 缓解:提升召回/rerank + 忠实度校验 + 约束引用
  • 详细讲解:RAG

44. RAGAS 的四项指标分别是什么?

📋 回答重点
  • Faithfulness 忠实度:答案是否被上下文支撑(评生成)
  • Answer Relevancy 答案相关性:答案是否切题(评生成)
  • Context Relevancy 上下文相关度:片段相关且无冗余(评检索)
  • Context Recall 上下文召回率:关键信息是否检索到(评检索)

扩展知识

  • 可补 Answer Correctness;LLM 自动打分需人工抽查校准
  • 详细讲解:RAG

45. recall@k 和生成质量的关系是什么?

📋 回答重点
  • Recall@k 是检索指标,是生成的上限(答案没进 top-k 就答不出)
  • 必要但不充分:recall 高≠生成好(位置靠后/噪声/误读)
  • k 越大 recall 越高但噪声越多,生成质量先升后降
  • 先保 recall,再靠 rerank 提升精排把关键片段放到模型能看的位置

扩展知识

  • 检索与生成分层评估定位问题
  • 详细讲解:RAG

46. RAG 系统如何做 A/B 测试?

📋 回答重点
  • 固定评估集(真实 query + 参考答案)
  • 线上随机分桶:控制组 vs 实验组,单变量控制
  • 离线指标:Recall@k/MRR/NDCG + RAGAS 忠实度;线上:点击引用/满意度/完成率
  • 样本够大后做显著性检验

扩展知识

  • 陷阱:缓存隔离(按版本)、LLM 随机性需大样本、别只看准确率
  • 详细讲解:RAG

47. embedding 和 rerank 的成本如何权衡?

📋 回答重点
  • embedding 贵在索引一次性、查询便宜;rerank 贵在查询逐对、随 k 线性增长
  • 分层分工:embedding 海量粗筛 + rerank 小集合精排
  • 召回 k 是 rerank 成本旋钮(先粗召回 50200 再精排取 510)
  • 降本:缓存、rerank 用小模型/蒸馏、简单 query 跳过 rerank

扩展知识

  • 预算紧可只靠 embedding;质量优先必加 rerank
  • 详细讲解:RAG

48. 什么是语义缓存?如何实现?

📋 回答重点
  • 不仅缓存完全相同 query,也缓存语义相近 query 的结果
  • query embedding → 最近邻匹配(余弦 ≥ 0.95 命中)
  • 存答案或检索结果,TTL + 知识库更新主动失效
  • 风险:语义相似但语境不同误命中;缓存键含租户维度

扩展知识

  • 适合高频、事实稳定 query;动态/个性化慎用
  • 详细讲解:RAG

49. 权限多租户如何设计?

📋 回答重点
  • chunk 继承文档 ACL(tenant/user/group/角色)
  • 检索时权限作为过滤条件服务端强制注入(不信任客户端参数)
  • 物理隔离(每租户独立索引)vs 逻辑隔离(共享索引+过滤,主流)
  • 权限过滤与向量检索原子结合防越权,加后校验双保险

扩展知识

  • 权限贯穿索引→检索→生成全链路;缓存键含租户、审计日志
  • 详细讲解:RAG

50. 增量索引和 CDC(变更数据捕获)如何实现?

📋 回答重点
  • CDC 捕获变更(binlog/WAL/Debezium/Kafka/文件监听)
  • 变更 → 重分块 → 重 embedding → upsert/delete(按稳定 ID 幂等)
  • 删除/修改要先删旧 chunk 再写新(旧向量清理最易踩坑)
  • 小量近实时、大变更批量定时;定期重建/合并索引防退化

扩展知识

  • 用「幂等 + 定期全量对账」保证最终一致
  • 详细讲解:RAG