RAGRetrieval-Augmented Generation检索增强生成是一种结合了信息检索Retrieval和文本生成Generation的自然语言处理技术。它旨在通过从外部知识源如数据库、文档或互联网检索相关信息辅助大型语言模型LLM生成更准确、更丰富且更具上下文相关性的文本内容。一、RAG要解决的核心问题RAG主要为了解决大型语言模型LLM在实际应用中面临的几个核心挑战知识局限性LLM的知识受限于其预训练数据无法获取训练时未包含的最新信息或特定领域的私有知识。信息过时LLM通常是离线训练的难以理解和响应训练数据之后出现的新信息。“幻觉”问题LLM在缺乏相关知识或需要最新信息时可能会生成看似合理但实际错误或编造的内容。可解释性差传统LLM的答案生成过程像一个“黑箱”用户难以核实其依据。二、RAG流程RAG通过一个系统性的流程将外部知识动态注入LLM的生成过程从而解决上述问题。数据处理知识库构建这是RAG系统的“基建”环节目的是将原始数据转化为可供高效检索的知识库。数据准备从各种来源如PDF、Word文档、数据库、网页收集和提取文本内容。文本分割将长文档切割成较小的文本块Chunk以适应模型的上下文窗口并提高检索粒度。常用策略包括按固定长度、段落或语义边界切分并可能设置重叠部分以保持语义连贯。向量化使用嵌入模型将文本块转换为高维向量Embedding使语义相似的文本在向量空间中距离更近。存储与索引将向量及其对应的原始文本、元数据如来源、时间存储到向量数据库中并建立索引以支持快速相似性搜索。检索召回当用户提出查询时系统从知识库中查找最相关的信息。查询编码将用户查询通过同样的嵌入模型转换为查询向量。相似性搜索在向量数据库中进行近似最近邻搜索找出与查询向量最相似的文本块。重排序为提高精度许多系统会使用重排序模型对初步检索到的结果进行精排过滤噪声并确保最相关的内容优先。模型生成将检索到的相关信息与用户原始问题结合交给LLM生成最终答案。提示构建将检索到的相关文本块作为上下文与用户问题一同填入预设的提示模板中构成增强后的提示。答案生成LLM基于这个包含了外部知识的增强提示生成更准确、有据可依的回答并减少幻觉。三、RAG处理方法经验整理以下整理平时工作学习过程中在RAG中可能比较有用的方法和经验1.数据准备在对文本进行切片的时候目前主要有按照滑动窗口切片和语义切片两种方法滑动窗口切片方法设置固定chunk_size阈值按照chunk_size对原始文本进行token或者字数的切片。当然为了保证文本预计的完整性可以根据切片位置将当前位置的句子给完整切进来。同时为了一定程度上保证切片后前后语义的完整性因为直接切的话很可能将原本前后描述一个事情的两个句子切开破坏原本语义会设置chunk_overlap让前后两个切片片段有一定的重叠覆盖这样可以一定程度上让前后描述一个事情的两个句子依旧会放在一起稍有缓解但不能很好杜绝优点文本片段大小可控通过chunk_size的设置能够大致控制切片下来的文本片段的大小对上下文窗口有限的LLM来说比较友好速度快处理方式基本是按照规则处理不依赖语义embedding处理速度快缺点可能破快语义虽然可以使用overlap但这也会在没有理解语义的情况下overlap还是会破坏原有语义存储有冗余由于使用了overlap导致在存储中会有部分内容其实是重复的不仅增加了存储成本也增加了检索时候的计算量基于语义切片方法大致流程如下将原有文本按照句子切分对每个句子生成embedding向量用于表示语义计算相邻句子之间的语义相似度当在某处的语义相似性比较差低于某个阈值那么就可以在这里进行切分这样就能保证每个切分后的文本语义连贯性优点语义完整连贯因为是按照语义切分的。当然这里的语义相似度阈值比较重要。信噪比高切分后的文本段比较干净很少含有无关的信息缺点切片大小不可控有可能某个语义片段非常长超出了LLM处理上下文的长度速度慢因为需要用到embedding计算相似度因此速度稍慢但一般离线处理的话只要不是太慢基本不是问题语义切片和滑动窗口结合为了能够更好的切片可以线按照语义进行切片然后在按照滑动窗口合并或拆分可以一定程度上结合两者的优点。但是具体使用的时候还是得根据业务数据而定。2.检索召回检索引擎的选择从简单到复杂可以有以下几种检索召回方法关键词这个就特别简单了直接按照query关键词从数据库中匹配即可。速度快占用内存/显存低可解释性强。BM25BM25是按照文本统计信息进行相似度匹配召回没有基于语义。但是在传统的方法中还是很有用的速度快一些场景下效果也还不错。速度快占用内存/显存低可解释性强。语义embedding: 可以通过bge等语义向量进行query和doc等语义相似度匹配检索。速度慢需要占用一定的内存/显存可解释性差图索引根据doc的主题或实体关系构建图索引。比如HNSW以上方法各有优缺点但是一般混合使用会比较好。query expansion为什么要query expansion首先解释一下为什么要进行query expansion。因为用户输入的query往往会存在以下几个问题query表达模糊、不完整或者口语化不太容易理解query中缺乏上下文难以准确命中知识库中的文档如果直接使用用户输入的query的话可能会出现以下几个问题召回结果不足召回无关内容最终生成的答案不够准确和不够全面因此需要通过query expansion来扩展和改写来缓解以上几个问题。如何query expansion将query以及对话上下文给到LLM让LLM进行改写。主要有以下几个地方需要改写指代词的改写结合上下文将当前query中出现的“他”、“那个”等指代词进行还原专有名词或歧义词的解释比如CNN可以表示卷积神经网络也可以表示美国有线电视新闻网。因此为了让检索模型以及后续的生成模型更好的理解需要将一些专有名词缩写或歧义词进行扩写或解释。比如“CNN的原理” → “卷积神经网络的原理”复杂问题拆解将复杂问题拆解为多个步骤然后多步检索后整合答案扩召方法HyDE策略对于给定的query先用LLM生成一个假设的答案这个直接生成的答案有可能是有幻觉的然后用这个假设的答案去数据库中检索相关的doc然后用这个检索到的doc进行答案生成。但是缺点是在rag流程中多了一步生成假设答案的流程耗时增加标签召回给doc和query都打上一个标签按照标签进行匹配召回3.模型生成为了保证模型生成结果更加可信可以有以下几个方法在prompt中对专有名词进行强调说明增加回复模型的注意力在输出过程中让模型输出答案的时候也输出当前内容对应的参考文档方便溯源验证机制先用query进行检索用LLM生成回复然后用另一个LLM判断回复是否出现幻觉或是否与召回文档一致等如果有幻觉则重新检索生成四、RAG仍面临的问题与挑战尽管RAG优势明显但在实际落地中仍面临一些挑战检索质量依赖性强答案的质量高度依赖于检索阶段的效果。如果检索不到相关信息或召回内容不准确后续生成的结果必然出错。复杂文档处理困难对于包含复杂格式如多栏PDF、表格、图表的文档传统的文本解析和切分方法可能导致信息丢失或错乱影响问答精度。多模态与复杂问答支持有限传统RAG主要以非结构化文本问答为主在处理需要结合图像、表格进行推理或需要进行统计计算等复杂问题时能力不足。系统延迟与成本完整的RAG流程涉及检索和生成两个步骤可能比直接调用LLM产生更高的延迟和计算成本。为了应对这些挑战业界也在不断优化例如采用级联切分、多路检索融合、融合代码模型处理统计问题等技术。最近两年大模型发展很迅速在理论研究方面得到很大的拓展基础模型的能力也取得重大突破大模型现在正在积极探索落地的方向如果与各行各业结合起来是未来落地的一个重大研究方向大模型应用工程师年包50w属于中等水平如果想要入门大模型那现在正是最佳时机2025年Agent的元年2026年将会百花齐放相应的应用将覆盖文本视频语音图像等全模态如果你对AI大模型入门感兴趣那么你需要的话可以点击这里大模型重磅福利入门进阶全套104G学习资源包免费分享扫描下方csdn官方合作二维码获取哦给大家推荐一个大模型应用学习路线这个学习路线的具体内容如下第一节提示词工程提示词是用于与AI模型沟通交流的这一部分主要介绍基本概念和相应的实践高级的提示词工程来实现模型最佳效果以现实案例为基础进行案例讲解在企业中除了微调之外最喜欢的就是用提示词工程技术来实现模型性能的提升第二节检索增强生成RAG可能大家经常会看见RAG这个名词这个就是将向量数据库与大模型结合的技术通过外部知识来增强改进提升大模型的回答结果这一部分主要介绍RAG架构与组件从零开始搭建RAG系统生成部署RAG性能优化等第三节微调预训练之后的模型想要在具体任务上进行适配那就需要通过微调来提升模型的性能能满足定制化的需求这一部分主要介绍微调的基础模型适配技术最佳实践的案例以及资源优化等内容第四节模型部署想要把预训练或者微调之后的模型应用于生产实践那就需要部署模型部署分为云端部署和本地部署部署的过程中需要考虑硬件支持服务器性能以及对性能进行优化使用过程中的监控维护等第五节人工智能系统和项目这一部分主要介绍自主人工智能系统包括代理框架决策框架多智能体系统以及实际应用然后通过实践项目应用前面学习到的知识包括端到端的实现行业相关情景等学完上面的大模型应用技术就可以去做一些开源的项目大模型领域现在非常注重项目的落地后续可以学习一些Agent框架等内容上面的资料做了一些整理有需要的同学可以下方添加二维码获取仅供学习使用
RAG实战指南:如何让AI知识库实时更新,告别幻觉,提升生成式AI的可靠性与准确性!
RAGRetrieval-Augmented Generation检索增强生成是一种结合了信息检索Retrieval和文本生成Generation的自然语言处理技术。它旨在通过从外部知识源如数据库、文档或互联网检索相关信息辅助大型语言模型LLM生成更准确、更丰富且更具上下文相关性的文本内容。一、RAG要解决的核心问题RAG主要为了解决大型语言模型LLM在实际应用中面临的几个核心挑战知识局限性LLM的知识受限于其预训练数据无法获取训练时未包含的最新信息或特定领域的私有知识。信息过时LLM通常是离线训练的难以理解和响应训练数据之后出现的新信息。“幻觉”问题LLM在缺乏相关知识或需要最新信息时可能会生成看似合理但实际错误或编造的内容。可解释性差传统LLM的答案生成过程像一个“黑箱”用户难以核实其依据。二、RAG流程RAG通过一个系统性的流程将外部知识动态注入LLM的生成过程从而解决上述问题。数据处理知识库构建这是RAG系统的“基建”环节目的是将原始数据转化为可供高效检索的知识库。数据准备从各种来源如PDF、Word文档、数据库、网页收集和提取文本内容。文本分割将长文档切割成较小的文本块Chunk以适应模型的上下文窗口并提高检索粒度。常用策略包括按固定长度、段落或语义边界切分并可能设置重叠部分以保持语义连贯。向量化使用嵌入模型将文本块转换为高维向量Embedding使语义相似的文本在向量空间中距离更近。存储与索引将向量及其对应的原始文本、元数据如来源、时间存储到向量数据库中并建立索引以支持快速相似性搜索。检索召回当用户提出查询时系统从知识库中查找最相关的信息。查询编码将用户查询通过同样的嵌入模型转换为查询向量。相似性搜索在向量数据库中进行近似最近邻搜索找出与查询向量最相似的文本块。重排序为提高精度许多系统会使用重排序模型对初步检索到的结果进行精排过滤噪声并确保最相关的内容优先。模型生成将检索到的相关信息与用户原始问题结合交给LLM生成最终答案。提示构建将检索到的相关文本块作为上下文与用户问题一同填入预设的提示模板中构成增强后的提示。答案生成LLM基于这个包含了外部知识的增强提示生成更准确、有据可依的回答并减少幻觉。三、RAG处理方法经验整理以下整理平时工作学习过程中在RAG中可能比较有用的方法和经验1.数据准备在对文本进行切片的时候目前主要有按照滑动窗口切片和语义切片两种方法滑动窗口切片方法设置固定chunk_size阈值按照chunk_size对原始文本进行token或者字数的切片。当然为了保证文本预计的完整性可以根据切片位置将当前位置的句子给完整切进来。同时为了一定程度上保证切片后前后语义的完整性因为直接切的话很可能将原本前后描述一个事情的两个句子切开破坏原本语义会设置chunk_overlap让前后两个切片片段有一定的重叠覆盖这样可以一定程度上让前后描述一个事情的两个句子依旧会放在一起稍有缓解但不能很好杜绝优点文本片段大小可控通过chunk_size的设置能够大致控制切片下来的文本片段的大小对上下文窗口有限的LLM来说比较友好速度快处理方式基本是按照规则处理不依赖语义embedding处理速度快缺点可能破快语义虽然可以使用overlap但这也会在没有理解语义的情况下overlap还是会破坏原有语义存储有冗余由于使用了overlap导致在存储中会有部分内容其实是重复的不仅增加了存储成本也增加了检索时候的计算量基于语义切片方法大致流程如下将原有文本按照句子切分对每个句子生成embedding向量用于表示语义计算相邻句子之间的语义相似度当在某处的语义相似性比较差低于某个阈值那么就可以在这里进行切分这样就能保证每个切分后的文本语义连贯性优点语义完整连贯因为是按照语义切分的。当然这里的语义相似度阈值比较重要。信噪比高切分后的文本段比较干净很少含有无关的信息缺点切片大小不可控有可能某个语义片段非常长超出了LLM处理上下文的长度速度慢因为需要用到embedding计算相似度因此速度稍慢但一般离线处理的话只要不是太慢基本不是问题语义切片和滑动窗口结合为了能够更好的切片可以线按照语义进行切片然后在按照滑动窗口合并或拆分可以一定程度上结合两者的优点。但是具体使用的时候还是得根据业务数据而定。2.检索召回检索引擎的选择从简单到复杂可以有以下几种检索召回方法关键词这个就特别简单了直接按照query关键词从数据库中匹配即可。速度快占用内存/显存低可解释性强。BM25BM25是按照文本统计信息进行相似度匹配召回没有基于语义。但是在传统的方法中还是很有用的速度快一些场景下效果也还不错。速度快占用内存/显存低可解释性强。语义embedding: 可以通过bge等语义向量进行query和doc等语义相似度匹配检索。速度慢需要占用一定的内存/显存可解释性差图索引根据doc的主题或实体关系构建图索引。比如HNSW以上方法各有优缺点但是一般混合使用会比较好。query expansion为什么要query expansion首先解释一下为什么要进行query expansion。因为用户输入的query往往会存在以下几个问题query表达模糊、不完整或者口语化不太容易理解query中缺乏上下文难以准确命中知识库中的文档如果直接使用用户输入的query的话可能会出现以下几个问题召回结果不足召回无关内容最终生成的答案不够准确和不够全面因此需要通过query expansion来扩展和改写来缓解以上几个问题。如何query expansion将query以及对话上下文给到LLM让LLM进行改写。主要有以下几个地方需要改写指代词的改写结合上下文将当前query中出现的“他”、“那个”等指代词进行还原专有名词或歧义词的解释比如CNN可以表示卷积神经网络也可以表示美国有线电视新闻网。因此为了让检索模型以及后续的生成模型更好的理解需要将一些专有名词缩写或歧义词进行扩写或解释。比如“CNN的原理” → “卷积神经网络的原理”复杂问题拆解将复杂问题拆解为多个步骤然后多步检索后整合答案扩召方法HyDE策略对于给定的query先用LLM生成一个假设的答案这个直接生成的答案有可能是有幻觉的然后用这个假设的答案去数据库中检索相关的doc然后用这个检索到的doc进行答案生成。但是缺点是在rag流程中多了一步生成假设答案的流程耗时增加标签召回给doc和query都打上一个标签按照标签进行匹配召回3.模型生成为了保证模型生成结果更加可信可以有以下几个方法在prompt中对专有名词进行强调说明增加回复模型的注意力在输出过程中让模型输出答案的时候也输出当前内容对应的参考文档方便溯源验证机制先用query进行检索用LLM生成回复然后用另一个LLM判断回复是否出现幻觉或是否与召回文档一致等如果有幻觉则重新检索生成四、RAG仍面临的问题与挑战尽管RAG优势明显但在实际落地中仍面临一些挑战检索质量依赖性强答案的质量高度依赖于检索阶段的效果。如果检索不到相关信息或召回内容不准确后续生成的结果必然出错。复杂文档处理困难对于包含复杂格式如多栏PDF、表格、图表的文档传统的文本解析和切分方法可能导致信息丢失或错乱影响问答精度。多模态与复杂问答支持有限传统RAG主要以非结构化文本问答为主在处理需要结合图像、表格进行推理或需要进行统计计算等复杂问题时能力不足。系统延迟与成本完整的RAG流程涉及检索和生成两个步骤可能比直接调用LLM产生更高的延迟和计算成本。为了应对这些挑战业界也在不断优化例如采用级联切分、多路检索融合、融合代码模型处理统计问题等技术。最近两年大模型发展很迅速在理论研究方面得到很大的拓展基础模型的能力也取得重大突破大模型现在正在积极探索落地的方向如果与各行各业结合起来是未来落地的一个重大研究方向大模型应用工程师年包50w属于中等水平如果想要入门大模型那现在正是最佳时机2025年Agent的元年2026年将会百花齐放相应的应用将覆盖文本视频语音图像等全模态如果你对AI大模型入门感兴趣那么你需要的话可以点击这里大模型重磅福利入门进阶全套104G学习资源包免费分享扫描下方csdn官方合作二维码获取哦给大家推荐一个大模型应用学习路线这个学习路线的具体内容如下第一节提示词工程提示词是用于与AI模型沟通交流的这一部分主要介绍基本概念和相应的实践高级的提示词工程来实现模型最佳效果以现实案例为基础进行案例讲解在企业中除了微调之外最喜欢的就是用提示词工程技术来实现模型性能的提升第二节检索增强生成RAG可能大家经常会看见RAG这个名词这个就是将向量数据库与大模型结合的技术通过外部知识来增强改进提升大模型的回答结果这一部分主要介绍RAG架构与组件从零开始搭建RAG系统生成部署RAG性能优化等第三节微调预训练之后的模型想要在具体任务上进行适配那就需要通过微调来提升模型的性能能满足定制化的需求这一部分主要介绍微调的基础模型适配技术最佳实践的案例以及资源优化等内容第四节模型部署想要把预训练或者微调之后的模型应用于生产实践那就需要部署模型部署分为云端部署和本地部署部署的过程中需要考虑硬件支持服务器性能以及对性能进行优化使用过程中的监控维护等第五节人工智能系统和项目这一部分主要介绍自主人工智能系统包括代理框架决策框架多智能体系统以及实际应用然后通过实践项目应用前面学习到的知识包括端到端的实现行业相关情景等学完上面的大模型应用技术就可以去做一些开源的项目大模型领域现在非常注重项目的落地后续可以学习一些Agent框架等内容上面的资料做了一些整理有需要的同学可以下方添加二维码获取仅供学习使用