资讯动态

04.大模型是如何“查资料”并回答的:RAG 检索与生成原理详解

发布时间:2026/10/27 10:31:14 来源:尧图企业网站定制
摘要本文系统拆解大模型“根据用户问题查资料并回答”的完整链路离线阶段完成文档解析、文本切分、Embedding 向量化与向量库入库在线阶段完成问题改写、向量检索、混合检索与重排再把候选资料拼装进 Prompt由大模型自回归逐 token 生成答案最后经引用校验与后处理返回。文章同时说明余弦相似度只是向量召回环节的一种度量方式内积、L2 距离、BM25、RRF 融合与 Cross-Encoder 重排等机制共同决定最终回答质量。目录一、先厘清一个常见误解二、整体链路一次问答到底发生了什么三、离线阶段资料是怎么变成“可检索”的3.1 文档解析与清洗3.2 文本切分Chunking3.3 向量化Embedding3.4 写入向量数据库四、在线阶段用户提问后发生了什么4.1 问题理解与改写4.2 向量检索4.3 混合检索不止向量一种4.4 重排Rerank五、上下文组装模型看到的到底是什么六、生成阶段模型如何“组装文字”6.1 自回归逐 token 生成6.2 注意力机制如何利用资料6.3 解码策略的影响七、后处理与质量保障八、回答“是不是只有余弦相似度”九、常见误区与工程建议9.1 三个常见误区9.2 提升效果的实践方向十、小结一、先厘清一个常见误解很多人以为模型“根据用户问题去查资料”是模型自己主动上网搜索、自己判断哪段资料有用、自己把答案拼起来。实际上在绝大多数企业级应用里这套流程是由外部工程系统编排完成的模型本身只负责其中“理解问题”和“组织语言”两个环节。换句话说模型并不具备“打开数据库翻页”的能力。真正做检索的是向量数据库、搜索引擎或关键词索引真正决定“用哪几段资料”的是检索与重排模块模型拿到的是被塞进上下文窗口的一段文本然后基于这段文本生成回答。这套“先检索、再生成”的范式通常被称为RAGRetrieval-Augmented Generation检索增强生成。二、整体链路一次问答到底发生了什么把一次完整的 RAG 问答拆开大致可以分为离线建库和在线问答两个阶段。flowchart TD A[原始文档 PDF/Word/网页] -- B[解析与清洗] B -- C[文本切分 Chunking] C -- D[Embedding 模型编码] D -- E[(向量数据库)] Q[用户问题] -- F[问题改写/扩展] F -- G[Embedding 编码] G -- H[向量检索 Top-K] E -- H H -- I[重排 Rerank] I -- J[上下文组装 Prompt] J -- K[大模型生成回答] K -- L[引用标注与后处理]下面按顺序说明每个环节的原理。三、离线阶段资料是怎么变成“可检索”的3.1 文档解析与清洗原始资料往往是 PDF、Word、HTML 或数据库记录需要先抽取纯文本去掉页眉页脚、导航栏、乱码等噪声。表格和图片通常还要单独处理比如把表格转成结构化文本或用多模态模型生成图片描述。3.2 文本切分Chunking模型上下文窗口有限不能把整本书塞进去所以要把长文档切成几百字一段的“块”。切分策略直接影响检索质量固定长度切分按 token 数或字符数硬切简单但容易把一句话切断。按语义边界切分优先在段落、标题、句号处断开保留语义完整性。重叠切分相邻块保留一定重叠如 10%~20%避免关键信息正好落在边界上被割裂。结构化切分按 Markdown 标题层级、代码函数、表格行等结构单元切分。3.3 向量化Embedding每个文本块会被一个 Embedding 模型编码成一个高维向量例如 768 维或 1024 维的浮点数数组。这个向量的含义是语义相近的文本其向量在空间中的距离也相近。注意这里用的 Embedding 模型和生成回答的大模型通常是两个不同的模型。前者负责“把语义压缩成坐标”后者负责“读懂上下文并写答案”。3.4 写入向量数据库向量连同原始文本、来源、章节、时间等元数据一起写入向量数据库如 Milvus、Qdrant、pgvector、FAISS 等。数据库会建立近似最近邻ANN索引例如 HNSW、IVF用来在百万级向量中快速找到最相近的若干条。四、在线阶段用户提问后发生了什么4.1 问题理解与改写用户的原始问题往往很短、有指代、有省略。系统通常会先做一轮处理指代消解把“它”“这个方案”替换成前文中的具体对象。查询扩展补充同义词、专业术语或让模型生成多个不同角度的子查询。意图识别判断这是知识问答、闲聊还是需要调用工具从而决定走不走检索。4.2 向量检索把改写后的问题同样用 Embedding 模型编码成向量然后在向量库中做相似度搜索取回 Top-K常见 K5~50个候选块。这一步的核心是相似度度量。常见的有度量方式计算含义特点余弦相似度两向量夹角的余弦值只看向量方向不受长度影响最常用内积Dot Product向量逐元素相乘再求和向量已归一化时等价于余弦相似度欧氏距离L2空间中两点的直线距离距离越小越相似对向量模长敏感所以余弦相似度只是其中一种度量并不是唯一方式。很多向量库默认用内积因为归一化后计算更快也有系统用 L2 距离。选哪种更多取决于 Embedding 模型的训练方式而不是“必须用余弦”。4.3 混合检索不止向量一种纯向量检索擅长语义匹配但对精确关键词、编号、人名、代码符号不敏感。比如用户问“错误码 E1024 是什么”向量检索可能召回一堆语义相近但编号不同的内容。因此工业界普遍采用混合检索稀疏检索BM25、TF-IDF 等关键词算法擅长精确匹配。稠密检索向量相似度擅长语义泛化。融合排序用 RRFReciprocal Rank Fusion或加权分数把两路结果合并。此外还有基于知识图谱的检索、基于 SQL 的结构化查询、基于规则的过滤按时间、权限、文档类型等。检索从来不是单一手段。4.4 重排Rerank向量检索用的是“双塔”结构问题和文档分别编码速度快但精度有限。取回 Top-K 后通常再用一个 Cross-Encoder 重排模型把“问题 候选块”拼在一起打分精度更高但计算更贵所以只对少量候选做。重排之后往往还会做去重、按来源多样性筛选、按时间新鲜度加权最终留下 3~10 个真正要喂给模型的块。五、上下文组装模型看到的到底是什么检索完成后系统会把选中的文本块按模板拼成一段 Prompt大致结构如下你是一个严谨的知识助手请仅依据以下资料回答问题。 如果资料中没有答案请明确说明“资料中未提及”不要编造。 【资料 1】来源产品手册 第 3 章 ……文本内容…… 【资料 2】来源运维文档 第 7 节 ……文本内容…… 【用户问题】 如何配置超时重试 【回答要求】 先给结论再给步骤 引用资料时标注编号 不要输出资料之外的内容。这里有几个关键点资料是“贴”进去的不是模型“查”出来的。模型看到的只是这段拼接好的文本。顺序和编号很重要方便模型引用也方便前端做溯源高亮。约束指令决定行为边界比如“资料中没有就说没有”这是抑制幻觉的主要手段之一。六、生成阶段模型如何“组装文字”6.1 自回归逐 token 生成大模型本质是一个“下一个 token 预测器”。它把整段 Prompt系统指令 资料 问题编码成内部表示然后一个 token 一个 token 地往外吐。每生成一个 token就把它接到输入后面再预测下一个直到遇到结束符或达到长度上限。所以“组装文字”并不是模型先在脑子里写好整篇再输出而是边想边写、逐步展开的过程。6.2 注意力机制如何利用资料Transformer 的自注意力机制让每个输出位置都能“回看”输入中的所有位置。生成答案时模型会根据当前要写的内容动态地把注意力分配到资料中的相关句子上。这就是为什么它能把分散在多个块里的信息整合成一段连贯回答。但要注意注意力是软对齐不是数据库查询。模型可能关注错位置也可能把两段资料的内容混在一起这正是幻觉的来源之一。6.3 解码策略的影响同样的上下文不同的解码参数会得到不同风格的回答Temperature越低越确定、越保守越高越发散、越有创造性也越容易跑偏。Top-p / Top-k控制候选词范围影响用词的多样性和稳定性。重复惩罚抑制复读机式的重复输出。知识问答场景通常用较低温度保证答案稳定、忠于资料。七、后处理与质量保障模型输出之后系统通常还会做几件事引用校验检查回答中标注的编号是否真实存在于资料中防止“编造引用”。事实一致性检查用另一个模型或规则判断回答是否与资料矛盾。格式规范化把输出整理成 Markdown、JSON 或前端需要的结构。敏感内容过滤按合规要求拦截不当内容。反馈闭环记录用户点赞/点踩用于优化切分策略、检索权重和 Prompt 模板。八、回答“是不是只有余弦相似度”结论很明确不是。余弦相似度只是向量检索环节中的一种相似度度量而整个问答链路里还有大量非相似度的机制在起作用。环节是否依赖余弦相似度实际使用的方法文本切分否规则、语义边界、结构解析关键词召回否BM25、TF-IDF、倒排索引向量召回可能是余弦、内积、L2 距离、ANN 索引结果融合否RRF、加权打分、规则过滤重排否Cross-Encoder 打分模型上下文组装否模板拼接、长度截断、去重答案生成否自注意力、自回归解码后处理否引用校验、一致性检查、规则过滤可以这样理解余弦相似度负责“从海量资料里粗筛出一小撮可能相关的”而“判断哪条真正相关”“怎么组织成通顺答案”靠的是重排模型和生成模型的能力。九、常见误区与工程建议9.1 三个常见误区误区一模型自己会上网查。除非显式接入搜索工具Tool Calling否则模型只能看到 Prompt 里的内容。误区二向量检索越相似越正确。语义相似不等于事实正确编号、否定词、时间条件都可能被相似度忽略。误区三检索到就一定答对。资料进了上下文模型仍可能理解错、漏读、或过度概括。9.2 提升效果的实践方向切分要贴合业务结构FAQ 按问答对切手册按章节切代码按函数切。混合检索优先向量 关键词再加重排通常比单一向量检索稳定得多。元数据过滤前置按权限、时间、产品线先过滤再算相似度能显著减少噪声。Prompt 明确边界要求“仅依据资料回答”“无答案时说明”并给出引用格式。建立评测集用真实问题构造召回率、准确率、引用正确率的评测避免凭感觉调参。保留溯源链路前端展示引用来源既提升可信度也方便排查错误。十、小结模型“根据用户问题查资料并回答正确”本质是一条由多个模块协作的工程链路文档被切分、编码、入库问题被改写、编码、检索候选被重排、筛选、拼进 Prompt模型基于这段上下文逐 token 生成答案最后经过校验与后处理返回给用户。余弦相似度只是这条链路中向量召回环节的一种度量方式既不是唯一手段也不是决定答案正确性的关键。真正决定效果的是切分质量、检索策略、重排精度、上下文组织和生成约束的共同作用。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑