我最早用 RAG 只盯着生成效果,查过几次坏例子才明白,瓶颈多半在检索那一段。切片、Embedding、召回、重排、生成,哪一环出问题得能分开看。
Q1: RAG 的历史?为什么要有它?
1
2020年: Facebook AI 发表 RAG 论文
2020 年,Facebook AI Research(现 Meta AI)的 Patrick Lewis 等人发表了论文《Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks》。核心思想:在 LLM 生成答案之前,先从外部知识库中检索相关文档,把检索到的文档作为上下文注入 Prompt,让 LLM 基于真实文档回答,而不是依赖训练时”记住”的知识。
2
致命痛点: LLM 的知识幻觉问题
LLM 的训练数据有截止日期,且无法访问私有数据。当你问它最新的 API 文档或公司内部制度时,它要么编造不存在的信息(幻觉),要么说”我不知道”。更严重的是,LLM 编造的内容往往非常”自信”——格式规范、逻辑自洽,让人难以分辨真假。
3
RAG 的核心价值: 让 LLM '查资料'而不是'背书'
没有 RAG 的 LLM 就像一个闭卷考试的学生——全靠记忆,记不住就瞎编。引入 RAG 后,LLM 变成了开卷考试——先翻书找到相关章节,再根据章节内容回答问题。核心价值不是让 LLM 变得更”聪明”,而是让它变得更”可靠”。
4
2023-2024年: RAG 成为 AI 落地的标准范式
随着 LangChain、LlamaIndex 等框架的成熟,RAG 从学术论文变成了工业标准。几乎所有企业级 AI 应用(知识库问答、客服系统、代码助手)都以 RAG 为核心架构。向量数据库(Milvus、Pinecone、Weaviate)也因此成为独立赛道。
5
2025年: 从 Naive RAG 到 Advanced RAG
RAG 技术持续演进。从最初的”检索 + 生成”(Naive RAG),发展到加入查询改写、混合检索、重排序、多跳推理等优化策略的 Advanced RAG。更前沿的方向包括 Agentic RAG(Agent 自主决定何时检索、检索什么)和 Graph RAG(结合知识图谱的结构化检索)。
RAG 的本质是把 LLM 从”闭卷考试”变成”开卷考试”——先检索真实文档,再让 LLM 基于文档生成答案,从根本上解决知识幻觉问题。
没有 RAG
你问 ChatGPT”我们公司的年假制度是什么?“,它要么说”我不知道”,要么编造一套听起来很合理的年假政策。你无法区分它是”真知道”还是”在编”。
引入 RAG
你把公司的制度文档导入知识库。用户提问时,系统先检索到相关制度条目,再让 LLM 基于条目回答。答案有出处、可验证、不会编造。
Q2: RAG 的核心原理
RAG 的本质是检索增强生成,完整流程分为三个阶段:索引(Indexing)→ 检索(Retrieval)→ 生成(Generation)。Harrison Chase 在 LangChain 的 “RAG from Scratch” 系列中强调,RAG 的质量瓶颈不在 LLM 的生成能力,而在检索的准确性——“检索不到正确的文档,LLM 再强也答不对”。[1]向量化原理(Embedding 模型选择)
向量化是把文本转为高维向量的过程。核心思想:语义相似的文本,向量距离相近。MTEB 榜单更新频繁,排名会随新模型发布变化。选型时应以自己的业务语料构造评测集,而不是只看榜单名次。
检索策略(向量检索、BM25、混合检索)
切片策略(语义切片、递归切片、按段落切片)
切片质量直接决定检索质量——切片太大,包含太多无关信息;切片太小,语义不完整。重排序(Reranking)原理
重排序是 RAG 的关键优化环节。流程:先粗检索 Top-K 个候选(如 20 个),再用 Reranker 模型精排,取 Top-N(如 3 个)给 LLM。Q3: 如何自主搭建企业级 RAG
架构设计(文档加载 → 切片 → 向量化 → 存储 → 检索 → 生成)
企业级 RAG 的完整架构分为 7 层:向量数据库选型(Milvus、Pinecone、Weaviate、Chroma、Qdrant、Neo4j、ElasticSearch)
对比:纯向量数据库 vs 图数据库 vs 搜索引擎(ElasticSearch / Easysearch)
Embedding 模型选型(OpenAI、BGE、Jina、Cohere)
Neo4j 在 RAG 中的应用
什么是图数据库? 传统数据库(关系型 / 向量)存储的是”扁平”的数据——每条记录独立存在。图数据库存储的是实体(Node)和关系(Edge)——数据之间的连接本身就是一等公民。ElasticSearch 在 RAG 中的应用
ElasticSearch 的向量检索能力: ElasticSearch 从 8.0 版本开始原生支持 kNN 向量检索(dense_vector 字段类型)。这意味着你可以在 ElasticSearch 中同时做 BM25 关键词检索和向量语义检索,无需引入额外的向量数据库。Easysearch:Elasticsearch 的国产替代
2024 年,Elastic 将 Elasticsearch 的开源协议从 Apache 2.0 改为 SSPL/Elastic License,许多国内企业面临合规风险。极限科技(INFINI Labs)推出的 Easysearch 应运而生——它是一个完全兼容 Elasticsearch API 的国产分布式搜索与数据分析引擎,同时集成了向量搜索、混合搜索等 AI-native 能力。[5] Easysearch 的核心优势:- 开箱即用:内置中文分词优化(无需额外安装 IK 分词插件),降低部署和运维门槛。对于国内企业来说,这意味着从安装到生产可用的时间大幅缩短。
- AI-native 搜索:原生支持 dense vector(稠密向量)和 sparse vector(稀疏向量),内置 HNSW 索引算法,支持 kNN 向量检索和 BM25 + 向量混合检索(RRF 融合排序)。这些能力与 ElasticSearch 8.x 对齐,但部署更简单。
- 国产合规:Apache 2.0 开源协议,无 SSPL/Elastic License 的合规风险,适合政府、金融、国企等对软件供应链安全有严格要求的行业。
LangChain + Easysearch 集成
Easysearch 兼容 OpenSearch/ElasticSearch API,因此可以直接使用 LangChain 的OpenSearchVectorSearch 类进行集成,无需额外适配。[5]
基础连接与向量检索:
Easysearch 与 LangChain 的兼容性踩坑
Easysearch 兼容 Elasticsearch API,但 LangChain 的集成方式有一个容易踩的坑。ES 8.x 官方 Python 客户端(elasticsearch 包)会检测服务端是否为真正的 Elasticsearch——它通过检查服务端返回的 X-elastic-product 响应头来判断。Easysearch 虽然完全兼容 ES API,但不是 Elasticsearch,不会返回这个头,因此 ES 8.x 客户端会直接拒绝连接并抛出 UnsupportedProductError。
LangChain 的 ElasticsearchStore(langchain-elasticsearch 包)底层依赖该客户端,所以用 ElasticsearchStore 连接 Easysearch 会失败。正确的方式是使用 OpenSearchVectorSearch——因为 Easysearch 同时兼容 OpenSearch API,而 LangChain 的 OpenSearchVectorSearch 类底层使用 opensearch-py 客户端,不会做产品检测。
Easysearch 是 ElasticSearch 的国产替代——兼容 ES API、内置中文分词、Apache 2.0 开源协议,适合对国产合规有要求的企业。LangChain 集成 Easysearch 时必须用
OpenSearchVectorSearch 而非 ElasticsearchStore——因为 ES 8.x 客户端会检测服务端产品标识,Easysearch 不通过检测会被拒绝连接。混合检索策略(向量检索 vs BM25 vs 混合检索)
混合检索是 RAG 质量优化中投入产出比最高的策略。核心思想:向量检索捕获语义,BM25 捕获关键词,两者互补。
Reciprocal Rank Fusion (RRF) 算法:
RRF 是混合检索中最常用的融合算法。核心思想:不关心每个检索器返回的绝对分数,只关心排名。两个检索器都排在前面的文档,最终排名更高。
混合检索的核心是”语义 + 关键词”互补——向量检索理解用户意图(“怎么让页面快一点”匹配”性能优化”),BM25 精确匹配关键词(“React 18”不会匹配到”Vue 3”)。实际项目中,ElasticSearch 的 RRF 原生融合是最省心的方案,LangChain 的 EnsembleRetriever 是最灵活的方案。
质量优化(查询改写、HyDE、多路召回、重排序)
RAG 质量优化的投入产出比排序:企业级 RAG 的搭建核心是”分层设计”——文档层、切片层、向量化层、存储层、检索层、生成层各自独立,可单独优化和替换。向量数据库选型看规模和场景:纯语义检索选专用向量库(Milvus/Pinecone),需要关系推理选 Neo4j(Graph RAG),需要关键词 + 语义混合检索选 ElasticSearch 或 Easysearch(国产替代,兼容 ES API,内置中文分词)。Embedding 模型选型看语言,质量优化优先调切片策略和混合检索策略。
Q4: RAG 的高级优化策略
查询改写(Query Rewriting)
用 LLM 改写用户问题,提高检索命中率。用户的问题通常是口语化的短句,和文档的书面表述差异大。查询改写把口语化问题转为更适合检索的形式。HyDE(Hypothetical Document Embeddings)
让 LLM 先生成一个”假设性答案”,再用这个答案去检索。假设性答案虽然可能不准确,但它的语义和真实答案更接近,检索效果更好。多路召回(Multi-Route Retrieval)
用 LLM 把一个问题拆成多个子问题,分别检索,合并去重。覆盖更多角度,提高召回率。重排序(Reranking)
先粗检索 Top-K 个候选,再用 Reranker(Cross-Encoder)精排取 Top-N。详见 Q2 的重排序原理部分。上下文压缩(Context Compression)
检索到的文档切片可能包含大量无关信息。上下文压缩用 LLM 提取切片中与问题相关的部分,减少噪声,节省 Token。自适应检索(Adaptive Retrieval)
让 LLM 自主决定是否需要检索、检索什么、检索几次。这是 Agentic RAG 的核心思想。RAG 高级优化的核心思路是”多阶段精炼”——查询改写提升检索命中率,多路召回扩大覆盖面,重排序提升精确度,上下文压缩减少噪声,自适应检索让 Agent 自主决策。实际项目中,混合检索 + Reranker 的投入产出比最高。
Q5: LangChain + RAG 集成
LangChain RAG Chain 设计
LangChain 的 RAG Chain 本质是一个RunnableSequence:检索器(Retriever)+ 提示词模板(Prompt)+ LLM + 输出解析器(Parser)。
Retriever 原理
Retriever 是 LangChain 的检索抽象。核心接口只有一个方法:invoke(query) → Document[]。所有检索器都实现这个接口,可以自由组合。
Chain 类型(Stuff、MapReduce、Refine、Map-Rerank)
当检索到的文档太多,超出 LLM 上下文窗口时,需要用不同的 Chain 策略处理:自定义 RAG Pipeline
实际项目中,基础的 RAG Chain 往往不够用。你需要自定义 Pipeline,加入查询改写、混合检索、Reranker、答案验证等环节。Q6: n8n 和 Dify 是什么?
n8n 和 Dify 是当前主流的可视化 AI 工作流与 Agent 编排构建平台。n8n 偏向节点自动化,Dify 偏向大模型应用全栈开发。两者可以组合使用——Dify 提供 RAG 和 Agent 能力,n8n 负责把 Dify 的 AI 能力接入到更大的自动化工作流中。n8n:开源工作流自动化工具
n8n(读作 “n-eight-n”)是一个开源的工作流自动化工具,类似 Zapier,但可以自托管。它的核心是通过可视化的节点编辑器,把不同的服务和 API 连接起来,构建自动化工作流。Dify:开源 LLM 应用开发平台
Dify 是一个开源的 LLM 应用开发平台,提供可视化的界面来构建 RAG 应用和 Agent。它的核心价值是让不懂代码的人也能搭建 RAG 知识库和 AI 应用。n8n vs Dify 对比
n8n 是”通用的自动化胶水”——把各种 API 和服务连接起来,AI 只是其中一个节点。Dify 是”AI 专项的开发平台”——内置 RAG、Agent、工作流,专注于 LLM 应用的快速搭建。两者可以组合使用:Dify 提供 RAG 和 Agent 能力,n8n 负责把 Dify 的 AI 能力接入到更大的自动化工作流中。
Q7: RAG vs Fine-tuning 怎么选?
核心区别:知识注入 vs 能力注入
RAG 和 Fine-tuning 解决的是完全不同类型的问题:适用场景对比
RAG 解决的是”不知道”的问题(知识注入),Fine-tuning 解决的是”不会做”的问题(能力注入)。大多数企业场景用 RAG 就够了。Fine-tuning 只在两种场景下考虑:1) 需要特定的输出风格;2) 需要理解领域专用术语。两者也可以组合使用。
Q8: 多模态 RAG(图文混排、表格、图片语义)
传统 RAG 只处理纯文本,但企业文档中大量信息以图片、表格、PDF 图文混排的形式存在。多模态 RAG 的目标是让 RAG 系统能”看懂”图片和表格,而不仅仅是”读懂”文字。[1]PDF 图文混排解析(MinerU、LlamaParse、Docling)
企业级文档(合同、财报、技术手册)通常是图文混排的 PDF。传统的pdf-parse 或 pdfjs-dist 只能提取纯文本,图片、表格、公式全部丢失。专业的文档解析工具通过 OCR + 版面分析来保留完整的文档结构。
表格解析(Table Transformer、Camelot、VLM)
表格是 RAG 系统中最难处理的结构化数据。传统的文本切片会打碎表格的行列关系,导致检索到的切片丢失结构化语义。图片语义提取(GPT-4V、Qwen-VL)
图片中的关键信息(流程图、架构图、数据可视化)需要被转化为文本描述,才能参与 RAG 检索。核心思路是用多模态大模型生成图片的语义描述。多模态嵌入(CLIP、SigLIP)
多模态嵌入的核心是把文本和图片映射到同一个向量空间,使得”一张猫的图片”和”一只猫”在向量空间中距离很近。[2]BGE-M3 属于文本 Embedding(多语言,同时输出 Dense、Sparse、Multi-vector),不能处理图片,不要和多模态模型混用。
多模态 RAG 的核心是让 RAG 系统能”看懂”文档中的图片和表格——用 MinerU/LlamaParse/Docling 解析 PDF 图文混排,用 Table Transformer/VLM 结构化表格数据,用 GPT-4V/Qwen-VL 提取图片语义描述,用 CLIP/SigLIP 实现跨模态向量检索。2025 年的趋势是”视觉原生解析”——直接用多模态大模型理解文档版面,而不是传统的 OCR + 规则解析。
Q9: 行业 RAG 应用(食品、工业、金融、医疗)
RAG 的价值在不同行业中体现为不同的落地形态。核心差异在于知识库的结构、合规要求和容错标准。[3]食品/快消行业 RAG
食品行业的 RAG 核心场景覆盖配方管理、质量控制、供应链知识管理和营销文案生成四大领域。知识库包含产品配方文档、质检标准(GB/T 系列、FDA 21 CFR)、供应商资质文件、生产 SOP、营销素材库。[3] 配方管理知识库是食品行业 RAG 最核心的应用。同一产品可能有多个版本的配方(如”减糖版”、“无麸质版”),RAG 系统必须支持配方版本控制——在向量数据库的元数据中存储产品ID、版本号、生效日期、适用市场,检索时强制过滤为最新版本。配方查询需要精确匹配成分名称和配比数值,因此必须采用混合检索(向量语义 + BM25 关键词),纯向量检索可能将”蔗糖”和”果葡糖浆”混为一谈。
工业行业 RAG
工业行业的 RAG 核心场景是设备维护手册检索和制造流程知识库。知识库包含设备操作手册、维修 SOP、故障代码对照表、工艺参数文档、PLC 程序注释。[3] 工业 RAG 与其他行业最大的差异是毫秒级响应需求。设备报警时,生产线每停一分钟可能损失数万元。RAG 系统必须在设备报警后几秒内返回维修方案,而不是像传统 RAG 那样等待 2-3 秒的检索 + 生成时间。 设备维护手册是工业 RAG 最高频的知识源。一个大型工厂可能有数千台设备,每台设备的维护手册数百页。传统做法是工程师翻阅纸质手册或搜索 PDF,效率极低。RAG 系统将所有设备手册索引化,工程师输入故障代码或描述故障现象,系统返回对应的维修步骤、所需备件、预计维修时间。金融行业 RAG
金融行业的 RAG 核心场景是合规知识库、投研分析、风险管理三大领域。知识库包含监管法规(证监会、银保监会、人民银行文件)、内部合规制度、券商研报、风险案例库、审计文档。[3] 金融 RAG 与其他行业最大的差异是法规出处可追溯。金融合规问答不允许”大概”、“可能”的回答,每句话都必须能追溯到具体的法规条文。错误的合规建议可能导致监管处罚,甚至刑事责任。 合规知识库是金融 RAG 最基础的应用。金融机构需要回答”某项业务是否合规”、“某类产品的监管要求是什么”等问题。知识库包含数千份法规文件,且法规之间存在引用、修订、废止等复杂关系。纯向量检索无法处理”A 法规引用 B 法规第 X 条”这种关系型查询,必须引入知识图谱。医疗行业 RAG
医疗行业的 RAG 核心场景是医疗知识库、药品信息查询、病历分析三大领域。知识库包含医学文献(PubMed)、临床诊疗指南、药物说明书、病历数据(需脱敏)、影像报告。[3] 医疗 RAG 与其他行业最大的差异是容错标准极高——错误的诊断建议可能危及生命。因此,所有 LLM 生成的医疗建议必须标注”仅供参考,需医生复核”,且系统必须支持证据等级标注(如”基于 RCT 研究的 A 级推荐” vs “基于专家意见的 D 级推荐”)。 医疗知识库整合临床诊疗指南、医学教科书、Meta 分析。RAG 系统需要支持多模态检索——医生输入症状描述或影像图片,系统检索相关的诊疗指南和文献。影像报告(CT、MRI、X 光)需要多模态大模型(如 Med-PaLM)辅助解读。 药品信息查询是医疗 RAG 最高频的应用。知识库包含药物说明书、药物相互作用数据库、剂量指南。RAG 系统需要精确回答”A 药和 B 药能否同时服用”、“肾功能不全患者的剂量调整”等问题。这要求切片策略保留药物信息的结构化字段(通用名、商品名、适应症、禁忌症、相互作用),不能把说明书打碎成无序文本。行业 RAG 的核心差异不在技术架构,而在合规要求和容错标准。食品行业重版本管理(配方不能用错)和知识图谱(原料-配方-产品的关联关系);工业行业重响应速度(三级缓存 + 边缘部署实现毫秒级返回);金融行业重出处可追溯(GraphRAG 建模法规引用链 + 审计日志);医疗行业重隐私保护(HIPAA 脱敏 + 安全隔离 + 多模态影像支持)。
Q10: AI Agent 客服系统
AI Agent 客服系统是 RAG + Agent 最典型的落地场景——结合知识库检索、意图识别、多轮对话和转人工策略,构建端到端的智能客服解决方案。2024-2025 年,随着大模型能力的提升,智能客服从”关键词匹配 + 规则路由”进化为”Agent 自主决策 + RAG 知识检索 + Human-in-the-Loop 人机协同”。[1]意图识别(Intent Classification)
意图识别是客服系统的第一步——判断用户想做什么,然后路由到对应的处理流程。多轮对话(Multi-turn Dialogue)
客服系统的核心挑战是多轮对话——用户可能在多轮交互中逐步补充信息、切换话题、回溯之前的问题。系统需要维护完整的对话状态。转人工策略(Human Handoff)
转人工是客服系统的安全阀——当 Agent 无法处理时,必须无缝转接人工客服。触发条件需要多维度判断,不能只看”能不能回答”。工单闭环(Ticket Lifecycle)
转人工不是终点——人工客服解决问题后,需要把解决方案录入知识库,形成闭环。这样下次遇到类似问题,Agent 就能直接回答。端到端实现:CustomerServiceAgent
把意图识别、多轮对话、转人工策略、工单系统组合成一个完整的客服 Agent。AI Agent 客服系统的核心是”RAG 检索 + 意图识别 + 多轮对话 + 转人工策略 + 工单闭环”五位一体。意图识别用 LLM + 小模型混合架构(高频意图小模型快速分类,低频意图 LLM 深度理解);多轮对话维护槽位状态,逐步收集信息;转人工策略多维度判断(连续失败、情绪检测、敏感问题、用户主动要求);工单闭环把人工解决方案沉淀回知识库,让 Agent 越用越聪明。
Q11: RAG 评估体系(RAGAS、自动化评估)
RAG 的优化不能靠”感觉”,必须靠数据。RAGAS(Retrieval Augmented Generation Assessment)是 RAG 系统的权威评估框架,核心思想是用 LLM 作为评判者,自动化评估 RAG 的检索质量和生成质量。[4]RAGAS 核心指标详解
自动化评估流水线
生产级 RAG 系统需要建立自动化评估流水线——每次优化(调整 chunkSize、换 Embedding 模型、加 Reranker)后,自动跑一遍 RAGAS 评估,对比前后指标变化。RAGAS 是 RAG 系统的”考试阅卷系统”——Faithfulness 检查是否编造,Answer Relevancy 检查是否答非所问,Context Precision 检查检索排序是否合理,Context Recall 检查是否找到了所有相关文档。生产级 RAG 必须建立自动化评估流水线,每次优化后回归测试,用数据驱动迭代。
Q12: 企业级 RAG 部署(离线预处理、混合索引、VLM Re-ranking、前端集成)
从 Demo 到生产级 RAG,需要解决性能、成本、可靠性三大工程挑战。[5]离线预处理 + 在线检索
企业级 RAG 的核心工程原则是离线预处理和在线检索分离。离线阶段处理文档解析、切片、向量化、索引构建(可以批量、异步、批处理);在线阶段只做检索和生成(必须低延迟、高可用)。混合索引
混合索引是企业级 RAG 的标准配置——**向量索引(语义检索)+ 倒排索引(关键词检索)+ 元数据索引(过滤)**三者结合。RAG with VLM Re-ranking
VLM(Vision Language Model)Re-ranking 是 2025 年的前沿优化——用多模态大模型对检索结果进行精排,而不仅仅是用 Cross-Encoder。VLM Re-ranking 的优势是能同时理解文本和图片的相关性,特别适合多模态 RAG 场景。前端集成最佳实践
前端与 RAG 系统的集成需要关注流式渲染、引用来源展示、用户反馈收集三个核心体验。企业级 RAG 部署的核心是”离线/在线分离”——离线阶段做文档解析、切片、向量化(批量异步),在线阶段只做检索和生成(低延迟高可用)。混合索引(向量 + 倒排 + 元数据)是标准配置,VLM Re-ranking 是前沿优化(多模态精排),前端集成关注流式渲染和引用来源展示。
Q13: 高频面试题
每个 Q 下面必须有### 子标题(延伸知识),用于深入解释该 Q 的主题。这些子标题不是面试问题,而是对主题的深度扩展。
RAG 的核心流程是什么?
RAG 的核心流程是索引 → 检索 → 生成三个阶段:- 索引阶段:文档加载 → 文档切片(RecursiveCharacterTextSplitter,chunkSize 500-1500,overlap 10-20%) → 向量化(Embedding 模型) → 存入向量数据库
- 检索阶段:用户提问 → 问题向量化 → 向量相似度检索(返回 Top-K 个切片) → 可选:Reranker 精排
- 生成阶段:检索到的切片作为上下文 → 拼接 Prompt → 调用 LLM → 生成答案
向量数据库怎么选?
向量数据库选型取决于三个维度:规模、运维能力、是否需要混合检索。- 小项目/本地开发:Chroma(零配置,嵌入式)
- 快速原型/小团队:Pinecone(全托管,无需运维)
- 中等规模:Weaviate(原生支持混合检索)或 Qdrant(Rust 实现,高性能)
- 大规模生产:Milvus(支持亿级向量,性能最强)
- 已有 PostgreSQL:pgvector(零成本引入,不需要额外维护向量数据库)
RAG 的质量怎么优化?
RAG 质量优化从四个维度入手:- 切片策略:按语义切 > 递归切 > 按段落切。chunkSize 推荐 500-1500,overlap 推荐 10-20%。
- 检索策略:混合检索(向量 + BM25,权重 0.6:0.4)效果最好。加 Reranker(Cross-Encoder)精排,通常能提升 20-30% 准确率。
- 查询优化:查询改写(把口语化问题转为检索友好的表述)、HyDE(用假设性答案检索)、多路召回(拆成多个子问题分别检索)。
- 上下文优化:上下文压缩(提取切片中与问题相关的部分,减少噪声)、自适应检索(Agent 自主决定是否需要检索)。
RAG 和 Fine-tuning 的区别?
核心区别是解决的问题不同:- RAG 解决的是”LLM 不知道”的问题——知识注入。让 LLM 查资料而不是背书。适用于知识问答、文档检索。成本低,实时更新。
- Fine-tuning 解决的是”LLM 不会做”的问题——能力注入。让 LLM 学会某种风格或格式。适用于风格迁移、特定格式输出。成本高,需要重新训练。
n8n 和 Dify 的区别?
两者解决的问题不同:- n8n 是通用的工作流自动化工具——把各种 API 和服务连接起来,AI 只是其中一个节点。适用于跨系统自动化、定时任务、数据同步。目标用户是运维和开发人员。
- Dify 是 AI 专项的 LLM 应用开发平台——内置 RAG、Agent、工作流,专注于 LLM 应用的快速搭建。适用于企业知识库、AI 客服、内部文档问答。目标用户包括产品经理和业务人员。
RAGAS 评估指标有哪些?
RAGAS(Retrieval Augmented Generation Assessment)是 RAG 系统的权威评估框架,核心指标包括:如何处理 RAG 中的多跳问题?
多跳问题是指需要多次检索才能回答的问题。例如:“React 的并发模式用了什么调度算法?这个算法是谁提出的?”生产级 RAG 需要考虑哪些问题?
生产级 RAG 需要考虑 5 个层面:- 文档更新:增量索引(只索引变化的文档),而不是每次全量重建。支持多种格式(PDF、Word、网页、数据库)。
- 性能优化:缓存热门查询的结果,Embedding 模型批量化处理,向量数据库的索引优化(HNSW / IVF)。
- 安全与权限:文档级别的访问控制——不同用户只能检索到自己有权限的文档。向量数据库需要支持元数据过滤。
- 监控与可观测性:追踪每个 RAG 请求的检索质量(命中率、相关性分数)、生成质量(忠实度、答案相关性)、延迟和成本。
- 容错与降级:向量数据库不可用时降级为 BM25 关键词检索;LLM 不可用时返回检索到的原始文档片段。
RAG 面试的核心是理解”检索质量决定最终质量”——切片策略、Embedding 模型、检索策略、Reranker 四个环节环环相扣。高级话题包括 HyDE、多路召回、自适应检索、多跳推理。实际项目中,先用 RAGAS 建立评估基线,再逐步优化。
🔍 底层源码:向量检索是如何实现的?
向量数据库是怎么在百万级向量中快速找到最相似的 Top-K 个?
主流向量数据库使用 HNSW(Hierarchical Navigable Small World) 算法实现近似最近邻搜索。核心思想是构建一个多层的图结构,从顶层开始贪心搜索,逐层下降,最终在底层找到最近邻(详见 HNSW 论文):
BM25 的底层实现原理是什么?
BM25 基于**词频(TF)和逆文档频率(IDF)**的统计模型(详见 Lucene BM25 实现):
Q14: 满分回答 vs 及格回答
问题:“说说 RAG 的核心原理和质量优化策略”
及格回答(60-70分):“RAG 就是先检索文档,再让 LLM 根据文档回答。流程是文档切片、向量化、检索、生成。质量优化可以用更好的 Embedding 模型。”问题出在:知道流程但不理解瓶颈。 满分回答(90-100分):
“RAG 的核心是检索增强生成——先从知识库中检索相关文档,再把文档作为上下文注入 Prompt,让 LLM 基于真实文档回答,而不是依赖训练时记住的知识。完整流程分三个阶段:索引(文档加载 → 切片 → 向量化 → 存入向量数据库)、检索(问题向量化 → 相似度检索 → 返回 Top-K)、生成(拼接 Prompt → 调用 LLM → 生成答案)。[1]”
“RAG 的质量瓶颈不在 LLM,而在检索。检索不到正确的文档,LLM 再强也答不对。优化有四个维度:1) 切片策略——推荐递归切片,chunkSize 500-1500,overlap 10-20%;2) 检索策略——混合检索(向量 + BM25,权重 0.6:0.4)效果最好,加 Reranker(Cross-Encoder)精排通常能明显提升检索精度;3) 查询优化——查询改写、HyDE、多路召回;4) 上下文优化——上下文压缩减少噪声。[2]”
“实际项目中,我会先用 RAGAS 建立评估基线(Faithfulness、Answer Relevancy、Context Precision、Context Recall),然后逐步优化。优先级:切片策略 > 混合检索 + Reranker > 查询改写 > Embedding 模型升级。没有评估的优化就是盲人摸象。[3]”
“企业级部署还需要考虑多模态 RAG(用 MinerU/LlamaParse 解析 PDF 图文混排,用 GPT-4V 提取图片语义,用 CLIP/SigLIP 实现跨模态向量检索)、行业合规(金融要求每句话有法规出处,医疗要求病历脱敏)、以及离线/在线分离架构(离线批量预处理文档,在线低延迟检索生成)。前端集成关注流式渲染(SSE)和引用来源展示。[4]“
常见追问
题目来源于真实面经(字节/腾讯/阿里前端面试、牛客网、haizlin/fe-interview),按难度递进。每个模块 8 个 Accordion,覆盖 4 个难度层级。
RAG 的核心流程是什么?
RAG 的核心流程是什么?
答题要点:
说出索引、检索、生成三个阶段,以及每个阶段的关键步骤。高分回答:
“RAG 的核心流程分三个阶段:
- 索引阶段:文档加载 → 文档切片(RecursiveCharacterTextSplitter,chunkSize 500-1500,overlap 10-20%) → 向量化(Embedding 模型把文本转为高维向量) → 存入向量数据库。
- 检索阶段:用户提问 → 问题向量化 → 向量相似度检索(返回 Top-K 个最相似的切片) → 可选:Reranker 精排。
- 生成阶段:检索到的切片作为上下文 → 拼接 Prompt → 调用 LLM → 生成答案。
向量数据库怎么选?
向量数据库怎么选?
答题要点:
从规模、运维能力、检索场景三个维度分析,重点区分纯向量库、图数据库、搜索引擎的适用场景。高分回答:
“向量数据库选型取决于三个维度:
- 规模:小项目用 Chroma(零配置,嵌入式),中等规模用 Qdrant 或 Weaviate,大规模生产用 Milvus(支持亿级向量)。
- 运维能力:没有运维能力的团队用 Pinecone(全托管,开箱即用),有运维能力的团队自部署 Milvus 或 Qdrant。
- 检索场景:纯语义检索选专用向量库(Milvus/Pinecone);需要关键词 + 语义混合检索选 ElasticSearch(原生 BM25 + kNN RRF 融合);需要实体关系推理选 Neo4j(Graph RAG,结合图遍历和向量检索)。已有 PostgreSQL 的团队可以用 pgvector(零成本引入)。
RAG 的切片策略怎么选?
RAG 的切片策略怎么选?
答题要点:
从语义完整性、检索精确性、性能三个维度分析。高分回答:
“切片策略的选择取决于文档类型和检索需求:
- 递归切片(RecursiveCharacterTextSplitter):最通用,先按段落切,再按句子切,最后按字符切。chunkSize 推荐 500-1500 字符,overlap 10-20%。
- 语义切片(SemanticChunker):用 Embedding 计算相邻句子的相似度,在相似度低的地方切分。效果最好,但最慢(需要调用 Embedding API)。
- 按段落切(MarkdownHeaderTextSplitter):适合 Markdown 文档,保留文档结构。
混合检索为什么比纯向量检索好?
混合检索为什么比纯向量检索好?
答题要点:
说出向量检索和 BM25 各自的优缺点,以及混合检索如何互补。高分回答:
“纯向量检索的缺陷:当用户搜索’React 18 的 concurrent 模式’时,向量检索可能返回’Vue 3 的响应式’——因为它们在语义空间中距离很近(都是’前端框架的核心特性’),但关键词完全不同。BM25 的缺陷:当用户搜索’怎么优化首屏加载’时,BM25 无法匹配’如何提升 FCP 指标’——因为关键词完全不同,但语义完全一致。混合检索 = 向量检索(捕获语义)+ BM25(捕获关键词),两者的权重可以通过实验调优。LangChain 的 EnsembleRetriever 默认权重是 0.5:0.5,实际项目中推荐 0.6:0.4(偏向语义检索)。”
RAG 和 Fine-tuning 的区别?
RAG 和 Fine-tuning 的区别?
答题要点:
从知识注入和能力注入两个维度区分,结合实际场景说明。高分回答:
“RAG 和 Fine-tuning 解决的是完全不同类型的问题:RAG 解决的是’LLM 不知道’的问题——知识注入。典型场景:公司制度问答、产品文档查询。数据流:知识库 → 检索 → LLM 上下文 → 生成。成本低,实时更新。Fine-tuning 解决的是’LLM 不会做’的问题——能力注入。典型场景:特定语气写作、特定格式输出(SQL/JSON)。数据流:训练数据 → 微调模型 → 新的模型行为。成本高,需要重新训练。选择标准:大多数场景用 RAG 就够了。Fine-tuning 只在两种场景下考虑:1) 需要特定的输出风格;2) 需要理解领域专用术语。两者也可以组合:Fine-tuning 让模型理解领域术语,RAG 提供最新知识。”
n8n 和 Dify 的区别?
n8n 和 Dify 的区别?
答题要点:
从核心定位、RAG 能力、目标用户三个维度对比。高分回答:
“n8n 和 Dify 解决的问题不同:n8n 是通用的工作流自动化工具——把各种 API 和服务连接起来,AI 只是其中一个节点。适用于跨系统自动化、定时任务、数据同步。目标用户是运维和开发人员。与 LLM 集成需要通过 HTTP 请求节点调用 API。Dify 是 AI 专项的 LLM 应用开发平台——内置 RAG、Agent、工作流,专注于 LLM 应用的快速搭建。适用于企业知识库、AI 客服。目标用户包括产品经理和业务人员。两者可以组合:Dify 提供 RAG 和 Agent 能力,n8n 负责把 Dify 接入到更大的自动化工作流中。”
🔥 Reranking 的原理是什么?为什么需要两阶段检索?
🔥 Reranking 的原理是什么?为什么需要两阶段检索?
答题要点:
说出 Bi-Encoder 和 Cross-Encoder 的区别,以及两阶段检索架构的设计动机。高分回答:
“Reranking 的核心是两阶段检索架构:第一阶段用 Bi-Encoder 粗筛(快但不精确),第二阶段用 Cross-Encoder 精排(慢但精确)。Bi-Encoder 的工作方式:问题和文档分别编码为向量,再计算余弦相似度。速度快(向量可以预计算),但’分别编码’会丢失问题和文档之间的细粒度交互信息。Cross-Encoder 的工作方式:把问题和文档拼接在一起,输入同一个模型计算相关性分数。能捕获更细粒度的语义交互(比如否定词和肯定词的矛盾),但速度慢(每对都要单独计算,无法预计算)。实际架构:向量检索 Top-20(Bi-Encoder,毫秒级)→ Reranker 精排取 Top-3(Cross-Encoder,百毫秒级)。这是一个经典的’召回-精排’两阶段架构。2025 年的前沿方向是 VLM Re-ranking——用多模态大模型(GPT-4o)精排,能同时理解文本和图片的相关性,特别适合多模态 RAG 场景。”
🔥 如何搭建一个生产级的 RAG 系统?
🔥 如何搭建一个生产级的 RAG 系统?
答题要点:
从架构设计、向量数据库选型、质量优化、监控评估四个维度回答。高分回答:
“生产级 RAG 的架构设计需要考虑 5 个层面:
- 文档层:支持多种格式(PDF、Word、网页、数据库),用 MinerU 或 LlamaParse 解析。关键是处理好表格、图片、代码块等复杂格式——多模态 RAG 需要用 GPT-4V/Qwen-VL 提取图片语义,用 CLIP/SigLIP 做跨模态向量检索。
- 切片层:推荐递归切片(chunkSize 500-1500,overlap 10-20%)。Markdown 文档用 MarkdownHeaderTextSplitter 保留结构。
- 存储层:小项目用 Chroma,中等项目用 Pinecone,大规模生产用 Milvus 或 Qdrant。需要关键词 + 语义混合检索用 ElasticSearch 或 Easysearch(国产替代,兼容 ES API,内置中文分词,Apache 2.0 协议),需要知识图谱用 Neo4j。
- 检索层:混合检索(向量 + BM25,权重 0.6:0.4)+ Reranker 精排。加入查询改写和多路召回。
- 评估层:用 RAGAS 框架评估忠实度、相关性、准确性。建立自动化评估流水线,每次优化后回归测试。
📚 延伸阅读与引用参考
- 📖 Harrison Chase - RAG from Scratch (LangChain):LangChain 创始人 Harrison Chase 的 RAG 系列教程,从索引、检索、生成三阶段系统性讲解 RAG 架构设计,强调”检索质量决定最终质量”。 [1]
- 🔗 RAG 论文原文:Meta AI 在 2020 年发表的 RAG 原始论文,理解检索增强生成的理论基础。 [2]
- 📖 Lilian Weng - LLM Powered Autonomous Agents:对 LLM Agent 架构的系统梳理,其中讨论了检索、规划、记忆等组件在 RAG 类应用中的作用。 [3]
- 🔗 LangChain RAG 教程:LangChain 官方的 RAG 实战教程,包含从文档加载到检索生成的完整流程。 [4]
- 🟢 MTEB Leaderboard:Embedding 模型的权威评测排行榜,选型时的参考标准。 [5]
- 📖 Chip Huyen - AI Engineering (2025):系统性梳理 RAG 架构的工程化落地方法论,涵盖 Naive RAG、Advanced RAG、Agentic RAG 的演进路线。 [6]
- 🔗 RAGAS 评估框架:RAG 系统的权威评估框架,包含 Faithfulness、Relevancy 等核心指标的定义和使用方法。 [7]
- 🔗 Milvus 官方文档:大规模向量数据库 Milvus 的官方文档,理解 HNSW 索引、混合检索等底层原理。 [8]
- 🔗 n8n 官方文档:开源工作流自动化工具 n8n 的官方文档,了解节点、连接、触发器的核心概念。 [9]
- 🔗 Dify 官方文档:开源 LLM 应用开发平台 Dify 的官方文档,了解知识库、应用、工作流的核心能力。 [10]
- 🔗 Neo4j Vector Index 文档:Neo4j 原生向量索引的官方文档,理解图数据库如何支持向量检索和 Graph RAG。 [11]
- 🔗 ElasticSearch kNN Search 文档:ElasticSearch 向量检索和混合检索(RRF)的官方文档,理解 BM25 + 向量融合的实现原理。 [12]
- 🔗 Easysearch 官方文档(极限科技 INFINI Labs):ElasticSearch 的国产替代方案,兼容 ES API,内置中文分词和向量检索,Apache 2.0 开源协议,适合国内企业合规场景。 [21]
- 📖 Microsoft GraphRAG 论文:微软 2024 年发表的 GraphRAG 论文,提出基于知识图谱的 RAG 架构,解决传统 RAG 无法进行多跳推理的问题。 [13]
- 🔗 MinerU (OpenDataLab):开源 PDF 解析工具,支持版面分析、OCR、公式识别、表格提取,保留文档结构,是多模态 RAG 的核心组件。 [14]
- 🔗 LlamaParse (LlamaIndex):LlamaIndex 的托管文档解析服务,深度集成 LlamaIndex 生态,支持复杂 PDF/PPT 解析。 [15]
- 🔗 Docling (IBM Research):IBM 开源的文档转换库,支持 90+ 文件格式,提供文档级理解和多格式导出。 [16]
- 📖 OpenAI CLIP 论文:OpenAI 发表的对比语言-图像预训练模型,开创了图文对比学习范式,是多模态 RAG 嵌入层的基础。 [17]
- 📖 Anthropic Engineering Blog:Anthropic 的工程博客,讨论 MCP 等底层标准与 RAG 相关实践。 [20]
