
答:RAG = Retrieval-Augmented Generation,检索增强生成。先从外部知识库检索相关文本,再送给大模型生成答案。
解决问题:
大模型知识过时
容易幻觉
无法使用私有 / 实时数据
隐私数据不能进预训练
举例:问 “2026 年公司新政策”,模型没训练过,RAG 从内部文档检索后再回答,无幻觉、实时准确。
答:
文档加载(PDF/Word/Excel/ 网页)
文本分块(Chunking)
向量化 Embedding
存入向量数据库
用户查询向量化 + 检索 Top-K
构造 Prompt → 大模型生成答案
举例:上传产品手册 → 切块 → 转向量存 Chroma → 用户提问 → 召回相关段落 → 生成回答。
答
无需训练,成本极低
知识实时更新
不会破坏模型能力
隐私安全,数据不上大模型
适合高频变更的知识库
举例:电商商品每天上新,用 RAG 秒级更新;Fine-tuning 要重训几小时。
答
检索不准 → 答案必错
多跳问题、复杂推理弱
长文本召回容易丢失关键信息
依赖 embedding 与 chunk 质量
多文档融合困难
举例:问 “A 产品和 B 产品对比”,如果只召回其中一个,回答必然片面。
答:不能,但能大幅降低。幻觉来源:
检索漏召回 / 错召回
模型编造连接逻辑
检索内容冲突
解决:强 Prompt 约束 + rerank + 引用溯源 + 事实校验。
举例:Prompt 强制:“只使用检索材料回答,不知道就说不知道”。
答
Naive RAG:基础流程,无优化
Advanced RAG:预处理、检索、生成全链路优化
Modular RAG:把 RAG 拆成可插拔模块,支持路由、多查询、工具调用
举例:Naive:直接切块检索。Advanced:重排、HyDE、多路召回。Modular:判断简单问题直接答,复杂问题走检索 + 推理。
答
企业内部知识库问答
客服机器人
法律 / 医疗 / 金融文档问答
代码文档助手
长文本阅读理解(标书、年报)
教育题库答疑
举例:律所把判例向量化,律师提问直接检索相关法条与案例。
答检索端:Recall@k、Precision@k、MRR生成端:BLEU、ROUGE、BERTScore、Factuality用户端:准确率、响应速度、幻觉率
举例:Recall@10=95% 表示 10 条里 95% 概率包含真实答案。
答:把长文档切成小块,控制长度,提高检索精度。块太大:噪声多、语义模糊;块太小:信息碎片化。
举例:1 个 10000 字 PDF 切成 512 字符左右的块,检索更准。
答
固定长度切分(简单但容易切断语义)
按句子 / 段落切分(语义更完整)
基于标题层级切分(结构最优)
语义分块(Semantic Chunking,最常用)
递归分块(Recursive Chunk,LangChain 默认)
举例:递归切块:先按章节切,太大再按段落切,保证语义完整。
答:通用:256~512 token长文档:512~1024 token太小召回不全,太大噪声多。
答:利用 embedding 计算句子相似度,把语义连贯的合并成块。
举例:连续三句讲 “报销流程” 合并;下一句讲 “考勤” 则切分。
答
去除乱码、水印、页眉页脚
表格结构化
图片 OCR
多余空格换行
目录、参考文献过滤
举例:PDF 里大量 ----- 或页码,必须清洗,否则影响 embedding。
答
转 Markdown 表格
转 HTML
转线性文本描述
专用 Table Embedding
举例:商品价格表 → Markdown 表格嵌入,模型更容易理解。
答
层级切块(章节→小节→段落)
摘要 + 原文双层索引
摘要检索 + 精确定位
长文本模型 + 滑动窗口
举例:先检索章节摘要,再在章节内细查。
答
统一格式化为 Markdown
建立元数据(来源、时间、标签)
按类型做多路召回
元数据过滤(如按时间筛选最新)
举例:同时检索 PDF、Notion、飞书文档,按时间只取最新版本。
答开源强:
bge-small / base / large
m3e
text2vec
bge-m3(支持多语言)
闭源:
text-embedding-ada-002
文心 embedding
通义千问 embedding
举例:中文场景优先 bge-base-zh 或 m3e,速度与效果均衡。
答轻量:Chroma、FAISS、DocArray企业级:Milvus、Weaviate、Pinecone、Qdrant
选型:
单机轻量:Chroma/FAISS
高并发生产:Milvus/Qdrant
答
暴力检索(Flat)
索引检索(IVF、HNSW)
混合检索(向量 + 关键词)
多路召回
举例:HNSW 速度快、精度高,是生产标配。
答
欧氏距离:距离越小越相似
余弦相似度:方向相似性,常用
点积:归一化后等价于余弦
RAG 通用:余弦相似度。
答:向量检索(语义)+ BM25(关键词)融合结果。解决语义模糊、专业术语不准问题。
举例:“TCP 拥塞控制”BM25 抓关键词,向量抓语义,互补。
答
更好的 embedding
混合检索
查询增强(多 query 生成)
HyDE
增大 Top-K(5~10→15~20)
元数据过滤
答:对初步召回的段落再用小模型精排,把最相关排前面。向量召回是粗排,rerank 能大幅提升准确率。
举例:召回 10 条,rerank 后前 3 条最相关,减少模型噪声。
答
bge-reranker-base / large
Cohere rerank
Jina rerank
中文首选:bge-reranker-base。
答:用户查询 → 向量粗排 → rerank 精排 → 构造 prompt
答:公开数据集普遍提升 10%~30% 准确率,是 RAG 性价比最高优化。
答:Hypothetical Document Embeddings先生成一个 “伪答案文档”,用伪文档去检索。
举例:问 “公积金提取条件”→ 先生成一段描述 → 再检索,大幅提升稀疏问题召回。
答:把用户口语 query 转成多条专业查询。
举例:“怎么报销”→
员工报销流程
报销所需材料
报销审批时间
多路检索,提高覆盖。
答:复杂问题需要多次检索、逐步推理。
举例:“A 部门主管是谁?他负责哪些项目?”第一次查主管,第二次用主管名查项目。
答:模型自己判断是否需要检索、检索什么、是否要继续检索。
答:检索后做校验,质量差就重新检索 / 扩充检索,提升事实准确性。
答
反问澄清
多路意图检索
结合历史对话理解指代
举例:用户问 “它怎么用”,RAG 结合上文知道 “它” 指某个功能。
答
答非所问:检索召回错误
答案不全:Top-K 太小或 chunk 太碎
仍有幻觉:模型自由发挥
慢:embedding/rerank 耗时
重复:chunk 重叠过多
答
embedding 量化
向量库建 HNSW 索引
rerank 批量处理
缓存高频问题
GPU 部署
答
文档打标签(部门 / 角色)
检索时按用户权限过滤元数据
不把无权限内容喂给模型
举例:普通员工查不到管理层财务文档。
答前端 → API 网关 → 历史对话管理 → 查询改写 → 多路召回 → rerank → LLM 生成 → 后校验 → 返回
工具栈:LangChain/LLamaIndex + Milvus + bge-reranker + Qwen/Llama