RAG有哪些好处生成内容更准确即时更新知识可解释性缓解幻觉问题本地数据的隐私性RAG对比模型微调更新知识不用重新训练专注于信息检索和整合定制化程度低解释性高幻觉减少RAG存在的问题1. 内容缺失知识库中缺失上下文rag只能提供不精确、甚至是错误的答案。解决方案可以通过数据清洗和prompt优化比如在prompt中加入“如果你不确定答案是什么就告诉我你不知道”的提示防止模型胡说八道缓解。2. 错过排名靠前的文档由于检索时缺乏上下文导致检索到的关键的文档排名靠后没有返回给用户。解决方案可以通过chunk_size 和 similarity_top_k平衡计算效率和质量以及采用Rerank算法。3. 不在上下文中无法将检索到的文档全部放在输入模型的上下文中尤其是检索到大量文档时。解决方案使用长上下文的方法例如需要对文档进行合并、插值等。4. 未提取LLM倾向于检索近似值而不是精确值导致包含很多不相关的甚至互相矛盾的信息可能因为这些噪音损害响应质量。解决方案数据清洗压缩prompt避免中部丢失问题模型对输入上下文开头和结尾的信息理解能力更强应避免将关键的信息放在中部。5. 格式错误 LLM 忽视了提取特定格式的信息如表格或列表的指令。解决方案prompt中给出示例简化清晰prompt对输出进行解析。6. 特异度不正确输出的粒度与输入不一致比如用户问题很具体模型回答很宏观或者用户问题包含详细的上下文模型生成简短的回复。解决方案改进检索策略如从小到大检索、句子窗口检索、递归检索在prompt中引导模型生成特定粒度的内同。7. 不完整输出只回答了输入的部分问题。解决方案之前RAG的文章中提到的一些方法如routing到最相关的文档库用户查询重写和分解成子问题。RAG的基本步骤indexing将各种数据源的数据统一成纯文本格式数据分割或chunking-free使用预训练模型embedding将向量存储在专门的数据库中并构建索引结构retrieval使用相同的预训练模型将查询embedding计算查询向量和索引中向量的相似度排序与选择 topk重新排序或过滤 rerankgeneration上下文整合成prompt送入LLM生成回答输出优化后处理步骤模块化检索增强生成架构 modular RAG通过拆分系统功能将复杂性分解为可独立管理的模块从而提升系统的可扩展性和可维护性。1. 索引模块将文档划分为可管理的片段较小的片段噪声较少更容易匹配较大的片段处理时间长计算成本高。块优化滑动窗口方法在相邻的片段之间引入重叠区域局限性是信息冗余要精确设置片段的大小和重叠比例语义块切分方法将文档划分为基于语义的块局限性在于如何设定相似度的阈值优势在于能更有效地提高检索精度小到大方法优势在于既可以提高准确性也可以提供丰富的上下文结构优化层次化索引通过建立父节点和子节点之间的关联关系将文档内容分解为不同层次的片段包括 结构感知内容感知语义感知知识图谱索引将文档组织为图结构明确概念和实体之间的关系G{V,E,X} V表示文档的结构单元E表示节点之间语义或词汇相似性关系X表示存储文档内容2. 检索前优化1查询扩展将单一查询扩展为多查询的方法丰富查询内容弥补缺乏的细节和语义多查询使用提示工程利用大语言模型将单一查询扩展为多个查询并支持并行执行为了防止稀释可以对原始查询赋予更高的权重。子查询对复杂问题进行分解和规划将其转化为多个子问题为了确保结果的准确性可以引入验证机制如“验证链”让LLM对扩展生成的子查询和结果逐步验证检索生成内容和真实情况不符的问题。2查询转换查询改写对用户的原始查询进行改写或重构将其转换为更适合检索和生成的形式利用大语言模型通过提示工程对查询进行改写HyDE构建假设文档反向HyDE 查询到查询3查询结构化将用户的查询重新构建为适应不同数据类型比如结构化数据的查询3. 检索1稀疏检索如TF-IDF BM25高效但是复杂语义不好捕捉2稠密检索转化成稠密向量强大的语义表达能力3混合检索结合稀疏检索和稠密检索的方法用于提升检索系统的效率和效果4. 检索后优化因为存在诸多挑战比如中间遗忘噪声上下文窗口长度有限常见组成部分包括重排内容压缩内容选择等1重排将更重要的内容优先呈现包括基于规则和基于模型两类基于规则的重排通过计算特定的指标对数据块进行排序常见指标包括多样性、相关性、最大边际相关性基于模型的重排计算数据块和查询之间的相关性来完成2内容压缩通过内容压缩减少噪声同时保留信息完整性提高语言模型的推理效率包括使用小型语言模型对检索内容进行对齐和预训练利用大语言模型对检索内容进行评估3内容选择优化上下文的重要方法核心目标是通过识别和移除冗余信息保留最为关键的内容关键在于计算输入内容的自信息量用于衡量内容信息价值的指标5. 生成生成内容与检索阶段获得的信息一致确保知识的整合和输出的准确性6. 编排1路由元数据路由匹配预设关键词语义路由匹配预定义意图混合路由引入权重因子混合元数据路由和语义路由2调度识别关键节点管理和协调系统的各个流程规则判定根据预设的阈值判断答案的质量决定是否继续或终止生成过程大语言模型判断利用LLM的上下文学习能力对LLM进行微调生成特定的触发标记知识引导调度通过知识图谱引导信息检索与生成过程从知识图谱中提取与问题相关的信息并构建推理链将问题拆解成一系列逻辑互联的节点。每个节点包含解决问题所需的关键信息并据此进行信息检索和内容生成。3融合大语言模型融合对每个分支的答案进行摘要提取再输入LLM从而解决上下文窗口限制加权集成基于多分支生成结果的加权选择方法倒数排名融合将多个检索结果的排名整合为一个统一的列表是一种定制的加权平均方法核心优势在于动态的权重分配机制rag系统设计模式1. 线性模式预检索阶段可以引入重写或HyDE操作符在向量空间中“答案”与“答案”之间的距离远比“问题”与“答案”之间的距离要近。HyDE 通过让大语言模型LLM先生成一个“假设性的答案”再用这个假设答案去检索真实文档从而极大地提升了召回的准确率。后检索阶段可以使用排序模块来优化检索结果Query rewriting for retrieval-augmented large language models 提出了 重写-检索-阅读RRR 方法2. 条件模式使用路由模块根据预设条件切换到不同的处理流程不同分支差异点在于检索来源、流程、模型配置和提示设计3. 分支模式特点在于同时运行多个并行分支一般有两种一种是预检索分支模式以应对多样化需求一种是后检索分支模式以生成多样化的结果4. 循环模式迭代型通过多次循环执行检索和生成操作在每次迭代中逐步优化结果递归型检索每一步都依赖于前一步的输出并通过不断加深检索过程逐步挖掘更深层次的信息。自适应型主动决定何时检索以及何时终止流程并生成结果rag系统训练和优化1. 文本嵌入模型以数学形式捕捉语言的语义信息微调计数式嵌入词袋模型TF-IDF用词频和逆文档频率来表示文本但忽略了词语的语义和上下文信息静态词嵌入word2vecglovefasttext通过上下文生成固定的词向量上下文嵌入gptbert引入上下文敏感的动态嵌入模型通用文本嵌入比如GTE模型引入了多阶段对比学习策略并采用多样化的训练数据混合方式预训练阶段使用大量raw数据无监督对比学习第二阶段利用有监督微调使用小而精的数据对比学习下面先介绍一下infoNCE损失再介绍GTE损失简单地说GTE损失是infoNCE损失的加强版都属于 in-batch 的对比学习负样本通常来自同一个批次内的其他数据。infoNCE损失只采用单向的负样本策略对于当前的query将同批次中其他的document视为负样本。GTE损失采用了双向扩充不仅保留了原始负样本还增加了qi vs qj; qj vs di; dj vs di。负样本越多模型区分语义的能力就越强。接下来介绍一下对预训练嵌入模型进行微调的REMED框架中的EM-FT模型核心构成包括两个部分第一个部分是embedding backbone根据是中文还是英文选择了两个嵌入模型一个是m3e-base一个是e5-base-v2第二个部分是trainable em head包含三个组件层归一化两个线性层激活函数从而接受第一个部分的向量表示后对其进行进一步的优化和调整。损失函数也是对比损失函数目标是让锚点和正样本的相似度远高于与负样本的相似度另外还加入了L2正则化项增强模型泛化能力和标准infoNCE的区别是标准infoNCE假设每个锚点只有一个对应的正样本而EM-FT论文中的损失函数考虑了所有正样本的相似度之和。2. 查询优化RQ-RAG算法基于7B规模的Llama2模型采用端到端训练使其能够通过重写、分解和消歧来动态优化搜索查询。任务类型包括 单跳问答任务多跳问答任务歧义问答任务指令跟随任务。第一步数据构造整体流程1任务分类将问题分为三大类需要上下文检索的非信息性回复需要查询分解的复杂多跳问题需要查询消歧的模糊问题2生成细化查询为三类问题根据预定义的提示模板生成重写后的查询、分解后的查询和消歧后的查询3信息检索为细化查询从外部数据源检索相关信息4基于检索的上下文和细化后的查询生成新的上下文感知答案5重复进行直到积累大约40k个训练实例第二步使用生成的训练实例进行训练目标函数如下L试图最大化的对数似然模型学习到的参数能以更高的概率生成真实数据M正在优化的模型参数对训练数据集D中所有样本的期望平均给定输入x多步迭代第i步生成的细化查询qi和检索到的文档di的条件下模型M生成目标答案y的对数概率第三步采用树形解码策略进行推理1输入初始查询2根据初始查询和之前迭代获取的信息动态生成新查询重写分解消歧3根据新查询检索上下文成为生成后续答案或进一步细化查询的基础4根据所有检索到的上下文生成一个最终答案5在树形结构中选择最佳路径和答案有三种采样策略基于路径上所有生成的输出的总困惑度不确定性基于最终答案的置信度基于集成3. 幻觉感知的生成模型优化大模型幻觉指的是大语言模型生成的内容中出现与事实不符、缺乏依据或与输入信息相矛盾的表述。rag-hat训练幻觉检测模型识别出幻觉并给出易于理解的解释说明幻觉产生的位置和原因并提供防御性建议。基于选择性采样的训练数据构建策略借鉴了自举式训练bootstrapping-style training和拒绝采样rejection sampling的策略对GPT-4的输出进行多轮评估和再生成以确保生成数据的质量和准确性选择性采样selective sampling是一种数据生成和质量控制策略旨在通过迭代评估和重新生成的方式确保由LLM生成的训练数据具有高质量和高正确性在检测模型的训练过程中采用了两阶段策略第一阶段专注于训练模型输出幻觉的预测标签完成基础的幻觉检测任务第二阶段通过使用lora微调使模型能够基于标签生成详细解释。在推理时两阶段模型以级联方式应用先检测幻觉再生成解释性描述。原始输出和修正后输出构建偏好数据集通过直接偏好优化DPO的方法训练从而降低模型生成幻觉的概率提升回答质量。DPO背景仅仅通过预测下一个词的传统方式自回归预训练往往无法完全捕捉到人类对回答质量的复杂偏好因此开发了基于人类反馈的强化学习RLHF方法传统RLHF的步骤1预训练一个LLM 2收集人类对模型输出的偏好数据训练一个预测人类对给定文本偏好分数的奖励模型RM 3使用RM作为奖励函数通过强化学习算法PPO对LLM进行微调传统RLHF的挑战1复杂性 2计算开销 3不稳定性和超参数调优DPO原理最优的RM和最优的策略之间存在一个分析上的闭式解这意味着可以将偏好数据直接转化为一个策略优化问题而不需要显式训练RM。具体来说1收集成对的偏好数据集preferred, dislikedDPO从一个逻辑回归模型出发建模人类偏好的概率并将其与奖励模型的差异联系起来 2将奖励函数替换成策略比率最优策略和最优奖励函数存在一个特定的关系由KL散度惩罚项来平衡与原始策略即基础模型的偏差3DPO推导出一个损失函数这个损失函数是基于当前策略和基础策略生成preferred和disliked的对数概率可以直接通过反向传播优化类似于监督微调SFT。DPO的优势1简单 2稳定 3计算效率 4性能 5直接对齐人类偏好利用这些检测结果借助GPT-4 Turbo对包含幻觉的RAG输出重写以去除幻觉内容如发现仍存在幻觉则重复重写过程直到生成高质量样本。对于判定为优质的回答则通过防御性建议限定重写范围避免引入新的幻觉内容。过于谨慎惩罚overly cautious penalization是一种在构建偏好数据集DPO训练时采用的数据增强策略。核心思想是对于被认为是更好的回答随机删除其中一个句子从而生成被拒绝回答这种策略旨在防止模型仅仅通过缩短回答来降低幻觉率。4. 重排模型优化judgerank一种零样本点式重排序方法专为需要深入推理的文本检索任务设计。利用高度通用的提示引导经过指令微调的大语言模型通过显式的推理步骤来得到最终的相关性判断。指令微调InstructionTuning是指通过构建带有指令提示和相应输出的标记数据集对预训练的大语言模型进行微调。其核心思想是让模型能够理解并执行自然语言指令而不仅仅依赖于预训练阶段的文本补全能力。judgerank的工作流程包括三个步骤1问题分析识别核心问题从而专注于关键问题并过滤掉无关的上下文2文档摘要对每个候选文档生成抽取式摘要并解释文档如何回应查询3相关性判断文档评分的合成方法离散版本连续版本和混合版本离散版本文档划分为相关和不相关每一类保留相对顺序相关始终排在不相关之前连续版本模型输出是概率和否概率对文档进行更细粒度的评分混合版本加权求和连续版本的概率评分和第一阶段检索中的BM25分数5. 检索和生成联合优化RankRAG训练过程两阶段指令微调阶段一监督微调LLM被训练以遵循通用指令并具备基础的对话能力阶段二进一步指令微调LLM使其同时具备上下文排序和答案生成能力数据构成少量第一阶段SFT数据上下文丰富型问答数据检索增强型问答数据包括不相关上下文上下文排序数据检索增强型排序数据LLM被训练明确识别所有相关的上下文统一格式问题上下文目标输出推理过程检索-重排-生成检索使用独立的检索器检索出top-N个最可能相关的上下文块重排使用RANKRAG模型计算N个上下文之间的相关性分数然后重排序保留top-K个相关的上下文生成top-K个相关的上下文与原始问题拼接后再次送入同一个RANKRAG模型作为生成器生成最终答案。rag效果评估1. 面临的挑战检索模块1知识库的广度和动态性使得评估复杂化2检索内容的质量直接关系到生成组件的表现生成模块1生成内容必须具有真实性和一致性。生成的回答既需要忠实于检索到的信息同时要满足用户的查询需求。2开放式任务的主观性增加了评估难度。此外系统的响应能力同样重要。2. 评估目标检索模块1相关性返回的文档和用户查询高度相关2准确性信息上是否是可靠的3覆盖率与多样性全面覆盖查询的不同维度4动态适应性及时检索到最新的相关信息5排序能力将最相关的文档排在前面生成模块1相关性生成内容与用户查询高度相关2真实性与忠实度减少生成“幻觉”3正确性与参考答案一致4连贯性和流畅性逻辑通顺符合自然语言的语法和用法5生成内容的多维度要求6开放性任务的适应能力整体目标1协作效果2任务完成度3用户体验4鲁棒性和容错能力3. 评估指标检索模块平均倒数排名Mean Reciprocal Rank, MRR是一组查询中第一个正确答案的倒数排名的平均值平均精确率均值Mean Average Precision, MAP是每个查询的平均精确率得分的平均值准确率Accuracy是指在检查的所有案例中真实结果包括真阳性和真阴性所占的比例。精确率Precision是检索到的实例中相关实例的比例召回率 kRecallk是在仅考虑前k个结果的情况下已检索到的相关实例占总相关实例的比例生成模块1准确性与忠实度BLEU生成内容和参考答案之间的n-gram重叠程度其中BP 为长度惩罚因子防止生成内容过短wn表示 n-gram 的权重pn表示生成文本与参考文本中 n-gram 的匹配概率。BLEU 适合评估结构化任务如机器翻译但对开放性任务的灵活性有限。ROUGE衡量生成内容与参考答案的文本片段重叠程度。常用的 ROUGE 指标有 ROUGE-N基于 n-gram、ROUGE-L基于最长公共子序列LCS。两者最根本的区别在于BLEU 侧重于精确率Precision而 ROUGE 侧重于召回率Recall。如果你在做一个机器翻译或者指令跟随的任务希望模型输出的内容严丝合缝、准确无误请优先参考BLEU。如果你在做一个新闻摘要或者会议纪要生成的任务希望模型尽可能把原文的关键要素都提炼出来请优先参考ROUGE。EMexact math用于评估生成回答与参考答案的完全一致性2连贯性和流畅性人工评分基于语言模型的自动评分3生成内容的多维度质量可读性RE 206.835−1.015∗ASL−84.6∗ASWRE 表示易读性分数ASL 是平均句子长度即单词数除以句子数ASW 是每个单词的平均音节数即音节数除以单词数。分值越高文本越容易阅读。结构化生成内容是否符合特定任务的格式要求丰富性衡量生成内容的全面性和细节程度4开放性任务的多样性语义差异性SDS 1−cos(Embedding1,Embedding2 )其中 Embedding1 和 Embedding2 表示生成内容不同部分的语义嵌入。该指标通过评估生成内容中各部分的语义相似性来计算其多样性分值越高表明生成内容在语义表达上越具有差异性从而更具创造性和多样性。冗余度5真实性检测FEVER评分误导率错误检测率参考书籍大规模语言模型理论与实践__第二版