RAG的完整处理链路是什么?
1 个回答
不必太张扬,是花自然香。ketty# RAG 的完整处理链路 ## 作用 - RAG(Retrieval-Augmented Generation,检索增强生成)将外部资料检索与大模型生成结合起来: - 检索系统负责从知识库中找到相关资料。 - 大模型负责理解这些资料,并据此生成回答。 - 它可以避免把整份文档直接塞给大模型,从而: - 适配模型的上下文长度限制。 - 降低 Token 成本和响应延迟。 - 减少无关信息干扰,提高答案的准确性和可追溯性。 - 适用于文档问答、论文笔记检索、法规合同查询、会议纪要和研究报告问答等场景。 ## 原理 RAG 的基础链路可以概括为: ```text 分片 → 索引 → 召回 → 重排 → 生成 ``` 按执行时间可分为两个阶段。 ### 1. 用户提问前:数据准备阶段 ```text 原始文档 → 文本解析和清洗 → 分片 Chunking → Embedding 向量化 → 写入向量数据库 ``` - **文本解析和清洗** - 从 PDF、Markdown、HTML、Word 等文档中提取文本。 - 清理无关格式、噪声和重复内容。 - **分片(Chunking)** - 将长文档切分成较小的文本块 Chunks。 - 后续向量化、检索和重排的基本单位都是这些 Chunk,而不是整篇文档。 - 分片的目的: - 控制输入长度。 - 让每个向量尽量表达集中、明确的主题。 - Chunk 过大容易混入无关内容,过小则可能割裂条件、结论等完整语义。 - 可通过 **Overlap(重叠)** 缓解边界截断问题,相邻 Chunk 保留一小段重复内容,但重叠过大会造成冗余。 - 常见分片方式包括: - 固定字符数分片。 - 按 Token 数分片。 - 按句子或段落分片。 - 递归分片。 - 按 Markdown、HTML、章节等结构分片。 - 根据语义变化进行语义分片。 - 父子分片:小块用于检索,大块用于提供完整上下文。 - **索引(Indexing)** - 使用 Embedding 模型将每个 Chunk 转换为向量。 - 将文本、向量以及标题、来源、章节、时间等元数据写入向量数据库。 - 最终形成可被快速检索的向量索引。 ### 2. 用户提问后:在线检索与回答阶段 ```text 用户问题 → 问题向量化 → 召回候选片段 → Reranker 重排 → 拼接问题与上下文 → 大模型生成回答 ``` - **召回(Retrieval)** - 先将用户问题通过 Embedding 模型转换为向量。 - 在向量数据库中快速查找与问题语义相近的 Chunk。 - 输出 Top K 个候选片段。 - **重排(Reranking)** - 使用更精细的 Reranker 模型对召回的候选片段重新判断相关性。 - 从较粗的 Top K 候选中筛出少量最相关片段。 - 作用是提高上下文质量,减少“召回得到但实际不相关”的内容进入提示词。 - **生成(Generation)** - 将用户问题和重排后的高相关上下文拼接到 Prompt 中。 - 大模型基于提供的证据组织最终答案。 - 可同时输出来源或引用,增强答案的可核验性。 ## 总结 RAG 的核心不是简单地“把资料发给大模型”,而是先在提问前完成文档解析、分片、向量化和索引,再在提问后执行问题向量化、候选召回、相关性重排和基于证据的答案生成。发布于 2026-10-28 08:10 •IP属地 云南举报评论收藏
公众号进入网站体验更佳

