当前位置: 首页 > news >正文

吹自己熟悉 RAG,结果被问完整链路,面试官冷冷一句:“你之前项目是怎么跑通的?”,我的小手已经无处安放

前段时间有个录友跟我复盘面试,他面了某国企的 RAG 开发岗。面试官也不跟你客气,直接问核心链路。 面试官:“你说你做了 RAG,那完整流程到底是什么?”

他:“就是把文档向量化,用户提问检索,然后给模型生成答案……”

面试官:“离线阶段你做了什么?在线阶段从查询到回答经过哪几步?”

他愣了:“就是加载文档、切片、存库…… 然后查。”

面试官:“清洗、元数据、混合检索、重排、上下文构建,这些在你链路里放在哪?”

他的小手开始无处安放了。。。

RAG 的完整链路是什么?今天我们就把它讲清楚。

一、RAG 完整链路总览

我们先用一张图把整条链路建立起来:整条链路分两阶段,离线侧负责"把知识存进去",在线侧负责"把相关知识找出来、组合出答案"。


二、离线阶段

  1. 原始文档

RAG 系统的知识来源可以多种多样:PDF 报告、Word 文档、网页、Markdown 文件、数据库记录、邮件……不同格式的文档需要不同的解析方式,这一步通常叫做文档加载(Document Loading)

值得注意的是,这一步的质量直接影响整个系统的上限。如果原始文档本身是扫描件或排版混乱的 PDF,解析出来的文本就会充满噪声,后续所有环节都会受损。"Garbage in, garbage out"在 RAG 里体现得非常明显。

  1. 文档处理(清洗与预处理)

解析出来的原始文本往往不能直接用,需要做一轮清洗:去掉页眉页脚、无意义的格式符号、重复内容;识别并保留文档的标题结构;过滤掉表格乱码、图片占位符等。

这一步看起来琐碎,但在实际项目里,文档预处理往往是工程量最大、最容易被低估的部分。

  1. 切片(Chunking)

清洗好的文档不能整篇塞进向量库,需要切成更小的片段(chunk)。这是 RAG 系统里设计决策最多的一个环节,直接影响后续检索的精准度。

为什么要切?原因很直接:一篇 20 页的文档,用户的问题可能只和其中的某一段相关。如果把整篇文档作为一个单元存储和检索,要么检索粒度太粗(命中了整篇但相关内容被淹没),要么上下文太长(放不进模型或者注意力被稀释)。

切多大合适?这没有通用答案,需要根据文档类型、模型的上下文窗口、业务问题的颗粒度来决定。文章9会专门深入讲 Chunking 的策略,这里先知道它是关键环节即可。

  1. 向量化(Embedding)

切好的每个 chunk,都需要通过 Embedding 模型转换成一个向量(一个高维浮点数数组),这个向量代表了这段文字的"语义"。

向量化的关键点是:用户问题和文档 chunk 必须用同一个 Embedding 模型来处理,这样两者的向量才处于同一个语义空间,相似度计算才有意义。

同时还需要存储对应的元数据:这个 chunk 来自哪份文档、原文在哪一页、文档的创建时间等。元数据在过滤检索结果时非常重要,比如"只看最近三个月的文档"这类需求,就需要依赖元数据来实现。

  1. 存入向量数据库

向量和元数据分别存入向量数据库(如 Milvus、Weaviate、Chroma、Pinecone 等)和普通数据库/文档存储。向量数据库的核心能力是近似最近邻搜索(ANN),能在数百万向量中毫秒级找到与查询向量最相似的 top-K 结果。


三、在线阶段

下面这张图单独展示在线检索链路的各个环节,以及常见的优化分叉点:

  1. Query 处理

用户的原始问题不一定适合直接用来检索。有几个常见的预处理手段:

Query 改写:把口语化的问题转成更适合检索的形式,或者把一个复杂问题拆解成几个子问题分别检索。比如"我们公司的报销流程和上限分别是什么",可以拆成两个独立的检索任务。

Query 扩展:对问题做同义词扩展,提高召回覆盖面,避免因为用词差异漏掉相关文档。

这些步骤都是可选的优化,基础实现可以先跳过。

  1. 检索(Retrieval)

Query 向量化之后,和向量库里存储的所有 chunk 向量做相似度计算(通常用余弦相似度),召回相似度最高的 top-K 个 chunk。K 的取值通常在 3-10 之间。

更完整的实现会做混合检索(Hybrid Search):同时跑向量检索(语义相似)和关键词检索(精确匹配,如 BM25),然后把两路结果合并。这样能兼顾"语义理解"和"关键词精准匹配"两种优势。

  1. Rerank(精排)

初步召回的 top-K 结果,相关性不一定都高。Rerank 是在召回之后加一道精排:用一个专门的 Cross-Encoder 模型对(Query, Chunk)对打分,按新分数重新排序,只保留最相关的几条。

Rerank 是 RAG 优化里最常见也最有效的手段之一,代价是多一次模型推理的延迟。

  1. 上下文构建(Context)

把最终筛选出来的 chunk,加上元数据(来源文档、页码等),按一定格式拼装成上下文,连同用户的原始问题一起构建出最终的 Prompt,送给生成模型。

Prompt 的结构通常是:

你是一个企业知识库助手。请根据以下资料回答问题,如果资料中没有相关信息,请明确说明。

参考资料:

[来源:产品手册第3页]

…(chunk 内容)…

用户问题:我们的退款政策是什么?

  1. 生成(Generation)

生成模型(LLM)接收完整 Prompt,基于提供的上下文生成回答。关键点是 Prompt 里要有明确的引导指令——让模型优先依据资料回答,而不是依赖自身参数知识,并要求在答案里标注来源。


四、这条链路的核心认知

理解了完整链路,可以归纳几个关键认知:

每个环节都影响最终质量,但影响方式不同。Chunking 决定了"能不能检索到相关内容",Embedding 模型决定了"语义理解是否准确",Rerank 决定了"召回的 top 结果是否真的最相关",Prompt 设计决定了"模型是否能正确利用上下文"。优化 RAG 本质上是找到当前系统的薄弱环节,而不是无差别地调参。

离线和在线必须保持一致。Embedding 模型、文本清洗方式,离线建索引时怎么做,在线检索时就必须一样。如果索引是用 A 模型建的,检索时用 B 模型,两边的向量空间不同,相似度计算完全失效。

检索的目标是精准,不是全面。召回 top-3 的高质量 chunk,通常比召回 top-20 的混杂结果更好。上下文越长,模型注意力越分散,信噪比越低。


五、常见误区

误区 1:“RAG = 向量检索”

向量检索只是在线侧的一个步骤。完整的 RAG 系统还包括文档解析、Chunking 策略、Embedding 选型、元数据管理、Rerank、Prompt 设计等一系列工程工作,缺少任何一环都会拖累整体效果。

误区 2:“只要模型够强,Chunking 随便切就行”

Chunking 是 RAG 里最底层的基础设施,模型再强,如果检索到的 chunk 要么太短(语义不完整)要么太长(相关信息被稀释),生成质量都会大打折扣。模型能力无法弥补检索质量的缺陷。

误区 3:“Rerank 一定要加”

Rerank 是有代价的:多一次模型调用意味着更高的延迟和成本。对于对实时性要求高、或者文档量较小的场景,精准的 Embedding + 合理的 top-K 往往已经足够。先评估是否真的需要,再决定是否加。


六、面试可能怎么问

Q:请描述一个完整的 RAG 链路。

参考思路:分两段回答。

离线侧:文档加载 → 清洗预处理 → Chunking → Embedding 向量化 → 存入向量数据库(同时存元数据)。

在线侧:用户 Query →(可选 Query 改写)→ Query 向量化→向量检索召回 top-K →(可选混合检索、Rerank 精排)→ 拼装 Context + Prompt → LLM 生成 → 输出带来源引用的答案。

Q:RAG 里哪些环节最影响效果?

参考思路:

离线侧最关键的是 Chunking 策略(决定检索粒度)和 Embedding 模型选型(决定语义理解质量)。

在线侧最关键的是 Prompt 设计(引导模型正确利用上下文)。其中文档质量是前提,再好的系统也处理不好乱码和结构混乱的输入。

Q:Embedding 模型在离线和在线需要保持一致吗?为什么?

参考思路:必须一致。

Embedding 模型把文本映射到一个高维向量空间,不同模型的向量空间是不同的。离线用 A 模型建的索引,在线用 B 模型生成 Query 向量,两者处于不同空间,余弦相似度计算完全失去意义,检索结果会非常混乱。


七、结语

RAG 不是一个算法,而是一条工程流水线。离线侧解决"知识怎么进去",在线侧解决"知识怎么找出来、怎么用起来"。把这条链路想清楚了,后续讨论任何一个具体的优化点——Chunking 怎么切、Embedding 怎么选、Rerank 怎么用——都有了明确的落脚位置。

学AI大模型的正确顺序,千万不要搞错了

🤔2026年AI风口已来!各行各业的AI渗透肉眼可见,超多公司要么转型做AI相关产品,要么高薪挖AI技术人才,机遇直接摆在眼前!

有往AI方向发展,或者本身有后端编程基础的朋友,直接冲AI大模型应用开发转岗超合适!

就算暂时不打算转岗,了解大模型、RAG、Prompt、Agent这些热门概念,能上手做简单项目,也绝对是求职加分王🔋

📝给大家整理了超全最新的AI大模型应用开发学习清单和资料,手把手帮你快速入门!👇👇

学习路线:

✅大模型基础认知—大模型核心原理、发展历程、主流模型(GPT、文心一言等)特点解析
✅核心技术模块—RAG检索增强生成、Prompt工程实战、Agent智能体开发逻辑
✅开发基础能力—Python进阶、API接口调用、大模型开发框架(LangChain等)实操
✅应用场景开发—智能问答系统、企业知识库、AIGC内容生成工具、行业定制化大模型应用
✅项目落地流程—需求拆解、技术选型、模型调优、测试上线、运维迭代
✅面试求职冲刺—岗位JD解析、简历AI项目包装、高频面试题汇总、模拟面经

以上6大模块,看似清晰好上手,实则每个部分都有扎实的核心内容需要吃透!

我把大模型的学习全流程已经整理📚好了!抓住AI时代风口,轻松解锁职业新可能,希望大家都能把握机遇,实现薪资/职业跃迁~

这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

http://www.jsqmd.com/news/728590/

相关文章:

  • 非科班,我转大模型成功了吗
  • 从触摸开关到声光报警:拆解NE555单稳态电路的两种经典接法(附稳定性实测对比)
  • Vivado HLS 提供了 C++ 模板类 hls::stream<>
  • Flutter for OpenHarmony跨平台技术5
  • ScienceDecrypting:终极CAJ文档解密指南,3步实现科学文库文档永久保存
  • 压力测试工具wrk安装、使用
  • Docker 27调度器如何用轻量级推理模型替代K8s Scheduler?——基于eBPF+ONNX Runtime的毫秒级决策架构
  • DeepSeek V4:推理成本致胜
  • Unity游戏开发实战:手把手教你用C#实现一个简单的反向运动学(IK)控制器
  • HPH构造解析:三大系统协同,驱动智能制造革新
  • 从本地开发到云服务器:手把手教你用宝塔面板部署JeecgBoot(含域名绑定和SSL证书)
  • CVE-2026-31431 Copy Fail:Linux 本地提权漏洞原理、影响面与排查修复建议
  • taotoken 助力初创团队实现多模型 api 成本精细化管理
  • springboot+vue3的旅游民宿预定管理系统的设计与实现
  • Spark NLP:工业级分布式自然语言处理框架实战指南
  • 别再死记硬背了!用Multisim仿真带你5分钟搞懂负反馈四种组态
  • ARM SIMD与向量运算指令深度解析
  • 为什么92%的智能制造项目卡在Docker 27集群验收?——来自17家头部车企的集群CI/CD流水线审计报告(含3份脱敏YAML模板)
  • 手把手教你为ESP32开发板移植AC101音频Codec驱动(基于ESP-ADF框架)
  • NoFences:免费开源桌面分区工具终极指南
  • Windows Server 2019上为Tesla T4配置CUDA 11.0和CUDNN 8.0.5的完整避坑指南
  • 双口RAM和单口RAM的综合设计
  • 半导体产业的经济逻辑、技术瓶颈与AI芯片格局:一份学习笔记
  • Cursor/VS Code多项目工作区效率优化:钉选插件使用指南
  • 2026年至今,广安市优质饮用水厂家如何选?深度解析龙霄饮品 - 2026年企业推荐榜
  • 自动恢复骚扰信息——硅基接待过滤(6)—东方仙盟
  • 高新企业水钻材料技术解析与合规生产实践 - 优质品牌商家
  • 2026年4月广东印刷版采购指南:为何衡阳市慧诚柔印制版有限公司成口碑首选? - 2026年企业推荐榜
  • 2026年4月沈阳及周边高档礼品回收机构排行一览 - 优质品牌商家
  • 对比使用Taotoken前后在模型选型与切换上的效率提升