核心内容摘要
新人采购怎么快速上手
本文为朋友 an_time 原创作品承蒙授权得以在本公众号发布。
想学 RAG这一篇干货就够你吃透。
RAG
1 简介RAG (Retrieval-Augmented Generation)即“检索增强生成”是目前大模型LLM落地应用中最主流的技术方案。
它解决了大模型知识更新慢、容易产生“幻觉”以及无法掌握私有数据的问题。
大模型虽然聪明但它的知识停留在他训练的那一刻。
如果问它昨天的新闻或公司的内部文件它就会胡编乱造。
RAG的做法是在模型回答之前先去外部知识库里“翻书”查阅资料把查到的内容喂给模型让它参考这些资料来写答案。
image.png参考文档https://datawhalechina.github.io/all-in-rag/#/
2 核心思想RAG 的核心思想可以理解为“开卷考试”。
传统生成闭卷考试全凭记忆记错或没学过就乱写。
RAG开卷考试遇到问题先在资料堆里找相关段落然后根据这些段落组织语言回答。
3
实现原理实现 RAG 通常分为两个阶段数据准备离线和检索生成在线。
A. 数据准备阶段把书存进库里文本分割 (Chunking)把长文档切成一小段一小段比如每段 500 字。
向量化 (Embedding)利用向量模型把这些文本片段向量化。
存入向量数据库把这些向量存到向量数据库方便以后进行快速的相似度搜索。
B. 检索生成阶段查书并回答问题向量化把用户的提问使用相同的向量模型转换成向量。
检索 (Retrieve)在数向量据库里检索和问题向量相似的文本片段欧氏距离或余弦距离。
增强 (Augment)把找出来的片段和原始问题拼接在一起组成一个提示词Prompt。
生成 (Generate)把这个提示词发给 LLM模型根据参考资料输出最终答案。
4 优势准确性高所有的回答都有据可查显著降低幻觉。
实时性强只要更新数据库模型就能掌握最新信息无需重新训练模型。
成本低相比于微调Fine-tuning模型RAG 的部署和维护成本极低。
隐私保护敏感数据可以留在本地数据库只在需要时提供给模型参考。
5 挑战虽然原理简单但在实际应用中仍面临难题检索不到数据库里有但没搜出来。
检索不准搜出来很多无关信息。
整合能力差模型拿到了资料但没理解好或者忽略了关键信息。
高级RAG当前RAG所存在的问题成为很多企业或开发者的痛点为了解决这些痛点于是出现了多种方式来优化RAG。
在优化的阶段主要包括预检索阶段、检索阶段、后检索阶段。
预检索优化Pre-Retrieval预检索优化是指在检索之前的环节进行优化在预检索优化中存在如下方法
1 摘要索引简介摘要索引 (Summary Index)是 RAG 架构中一种旨在优化检索效率和准确性的索引策略。
它不直接检索原始文本块而是通过对文档内容进行预处理生成“摘要”并以此为核心进行检索。
在标准 RAG 中如果文档非常长且细节繁琐直接检索原始切片Chunks容易导致信息支离破碎或检索不到位。
摘要索引的做法是先为每个文档或文档的大段落生成一段精炼的摘要并为摘要建立索引。
检索时系统先匹配摘要确定相关文档后再深入该文档获取细节。
image.png核心思想摘要索引的核心思想是“由简入繁层级定位”语义提炼原始文本可能包含大量噪音摘要保留了核心语义降低了向量检索的干扰。
全局映射摘要作为一个“锚点”代表了背后一整块或一整篇文档的含义解决了“只见树木不见森林”的问题。
多层级检索通过建立“摘要 - 原始文本”的映射关系实现从宏观意图到微观细节的精准导航。
实现原理实现摘要索引通常分为以下几个步骤A. 文档拆分与
总结 (Summarization)B. 构建索引 (Indexing)C. 检索流程 (Retrieval)D. 答案生成 (Generation)LLM 结合这些经过筛选的、高度相关的原始文本片段生成答案。
第一阶段摘要检索用户提问后系统在“摘要库”中寻找最匹配的摘要。
第二阶段上下文提取一旦命中某个摘要系统会自动提取出该摘要关联的所有原始文本片段或更细小的切片。
向量化摘要仅对生成的“摘要文本”进行 Embedding向量化并存入向量数据库。
建立链接在数据库中建立父子关系即摘要 ID - 原始文本块 IDs。
将长文档拆分为较大的语义单元如章节、页面组。
利用 LLM 为每个语义单元生成一段简短的摘要。
关键点摘要中通常会保留文档中的核心关键词、实体和主要观点。
优势摘要索引是构建层级化 RAG的基础。
它像是一本书的“详细目录”让 AI 能够先看目录确定位置再翻到具体页面读细节从而大大提升了处理长文档时的检索成功率而且信噪比极高。