收藏必备!小白程序员轻松上手大模型:RAG技术实战指南(含评测体系)
本文深入浅出地解析了RAG检索增强生成技术在大模型开发中的应用覆盖了从文档加载、智能切分到索引构建、检索优化、生成调优的全链路实战指南并介绍了进阶的Graph RAG和多跳推理。特别强调了“可测、可调、可信赖”的RAG工程化实践以及Ragas自动化评估体系的应用旨在帮助读者构建出低幻觉、具备业务确定性的Agent应用。1、写在前面在Agent的开发过程中RAG技术的应用水平直接决定了Agent的业务上限。在跟进品牌行业AI运营战役时架构组发现部分团队在RAG落地中面临共性挑战知识库构建缺乏标准、检索召回精度达不到预期以及缺乏量化评测体系。因此我们梳理了这篇技术指南期望从实战角度拆解RAG的全链路核心能力从底层原理出发深入探讨如何构建索引、如何通过技术手段优化召回以及如何建立科学的评测闭环。希望通过这篇文章大家能看清RAG背后的技术细节。不仅能把Agent做出来更能通过调优和评测构建出低幻觉、具备业务确定性的Agent应用。2、为什么需要RAG?大型语言模型LLMs已经取得了显著的成就尽管它们仍然面临着很大的局限性尤其是在特定领域或知识密集型任务中特别是在处理超出其训练数据或需要当前信息的查询时会产生 “幻觉”。为了克服这些挑战检索增强生成RAG通过语义相似性计算从外部知识库中检索相关文档块从而增强了 LLM。通过引用外部知识RAG 可有效减少生成与事实不符内容的问题。3、RAG的工作原理RAG全称Retrieval Augmented Generation检索增强生成其工作原理为当用户提问时系统先从海量知识库中检索出与问题相关的实时或私有信息并将这些信息作为参考背景与问题一起提供给大模型让模型像做开卷考试一样基于提供的可靠证据生成更准确、实时且可溯源的回答。4、RAG核心技术点▐文档加载文档加载是RAG的“入口”它的质量直接决定了后续检索的准确性。简单来说它的工作就是将各种格式的非结构化数据转化为系统可处理的统一文本格式。文档加载的主要工作如下多格式适配 兼容各种文件格式如 PDF、Word、Markdown、HTML、JSON、TXT 甚至 Excel。内容提取 从原始文件中剥离出“净文本”。如果是 PDF需要解析文字层如果是扫描件则需要 OCR。如果是 HTML需要剔除脚本、样式表只保留正文。元数据Metadata提取 在提取文本的同时记录文档的属性如文件名、页码、标题、作者、创建时间、章节层级等。初步清洗 去除文档中的冗余信息如乱码、过多的空格、特殊的非打印字符等。▐文档切分文档切分的主要方式如下按语义切块的实现Meta-ChunkingMeta-Chunking: Learning Text Segmentation and Semantic Completion via Logical Perception该论文给出了一个基于逻辑和语义的chunking的方法有完整的效果评测可参考。原理计算文章中各句子sentence的PPL困惑度以此判断哪些句子应该被划分在一个文档块trunk中。PPLPerplexity困惑度源于信息论是衡量语言模型预测序列好坏的核心指标。在该论文中PPL 被巧妙地用作一种感知语义边界和逻辑完整性的度量工具。直观理解 PPL 反映了语言模型在看到一段文本时有多“困惑”。低 PPL 模型觉得这段话很通顺、逻辑连贯、符合语言规律高 PPL 模型觉得这段话很突兀、逻辑断层或不符合语境。实现步骤对文档进行切分将原始长文档按照标点符号切分成一个个句子Sentences。切分好的句子表示为(x1, x2, …, xn)。使用一个轻量化的大模型论文中常用 Qwen2“计算”每个句子与他前面句子的PPL困惑度。其中K表示xi中的token数。tik表示xi中的第k个tokent i表示所有位于xi之前的token。通过这种方式得到一条随文本流动的 PPL 曲线。寻找 PPL 曲线上的局部极大值Local Maximum。当模型处理到某一句时如果 PPL 突然大幅升高说明这一句与前面的内容在逻辑上“脱节”了。这个 PPL 飙升的点就被标记为潜在的切分边界。对每个切块trunk进行语义补全解决因文本分块导致上下文信息丢失而引发的语义鸿沟问题。全局增强的文本块重写Globally Augmented Text Chunk Rewritingfor生成质量预处理可选针对 LLM 难以一次性完全处理的极长文档采用embedding模型对每个trunk进行向量化识别出与当前trunk相近的trunk。推理是否丢失信息 利用 LLM 并结合预处理阶段识别出的潜在相关信息对每个文本块判断是否丢失信息。核心任务是明确识别当前文本块中缺失的前提、背景信息、相关事实或结论性陈述。LLL 应全面列出信息缺失的领域并具体说明需要补充的信息。丢失信息提炼对上一阶段检测到的潜在丢失信息进行打分和筛选。我们旨在防止引入无关或错误的补充内容从而确保增强过程的精确性。丢失信息补全基于前一阶段确认的必要信息引导 LLM 生成这些信息片段并与当前文本块进行整合。目标是生成一个在上下文中无缝衔接、语义自然且能有效实现跨块信息融合的新文本块。摘要生成Context-Aware Summary Generation每个文本块生成一个富含全局信息的简明摘要从而进一步增强该文本块的语境感知能力。for检索全局补充模型利用全局信息为目标文本块生成一份补充摘要。这一过程旨在补偿由于切分Segmentation而可能缺失的话语背景Discourse Background和外部关联信息。局部融合针对文本块本身的内容模型会独立生成一个局部摘要Local Summary以概括其核心观点。随后将前述的“补充摘要”与“局部摘要”进行融合与精炼最终形成一句话的增强摘要Enhanced Summary Sentence。该句子能够从全局视角清晰地表达该文本块的内容。▐索引构建embedding基本原理索引构建是为了将一段文档根据其语义去生成向量。与传统embedding通过“预测”任务把文档转换成向量不同现代embedding模型千问 text-embedding-v4等基于Transformer架构将文档通过深度学习模型映射到连续的向量空间。下面以“苹果手机很好用”为例来详细看下映射过程分词与编号Tokenization将“苹果手机很好用”切分为[苹果, 手机, 很好用]。在头尾增加特殊字符[CLS]放在句首代表“分类/全句汇总”信息[SEP]放在句尾代表句子结束。将token转换为id根据embedding模型中预设好的词表将token转换为数字索引。[CLS, 苹果, 手机, 很, 好用, SEP] - [101, 512, 678, 321, 102]。映射初始向量在进入复杂的计算层之前将数字索引变成一个基础向量。查表 查阅embedding模型中预定义的表格每个ID拿到一个例如1536维的初始向量。转换模型有三个权重矩阵WQWKWV。这三个矩阵是模型训练好后固定不变的参数。每个token都会通过数学变换变成三个角色向量我们称之为 Q、K、V。其中Query (Q) —— “提问者”我想找什么样的主体Key (K) —— “被索引者”我能提供什么样的特征Value (V) —— “内容本身”我实际代表的含义。注入位置信息Positional Encoding给每个向量额外加上一组代表位置的数字。这样模型就知道“苹果”在第1位“很好用”在第3位。其中X是与位置相关的矩阵。自注意机制Self-Attention计算每个token与其他token的相关性“苹果”的 Q × “苹果”的 K 分数很高自关联“苹果”的 Q × “苹果”的 K 分数很高语义强相关“苹果”的 Q × “很好用”的 K 分数一般分配权重归一化刚才计算的分数转化成百分比“苹果”的 Q × “苹果”的 K 100%“苹果”的 Q × “苹果”的 K 50%“苹果”的 Q × “很好用”的 K 10%重新计算每个token的向量模型把所有词的 V内容本身 按照刚才的百分比“混合”在一起“苹果”的新向量 100% * “苹果”的V 50% * “手机”的V 10% * “很好用”的V。“苹果”的向量会吸收“手机”的特征。“苹果”向量里的“水果/红色”特征被抑制而“电子产品/科技”特征被放大。逐层深化以上过程通常会重复 12 层或 24 层。随着层数增加每个 Token 的向量都不再是原来的意思而是包含了整句话信息的“超级词向量”。比如“好用”的向量里现在也包含了“手机”的信息。优池处理Pooling将每个token的向量合并成一个向量。CLS 方式 直接取第一个[CLS]句首位置对应的向量。模型认为这个位置的向量已经吸收了全句的精华。Mean Pooling平均池化 把 5 个向量相加取平均值这是目前 BGE 等 RAG 模型最常用的方式因为它能最平稳地代表全句含义。Max Pooling最大池化 提取 5 个向量中每一维度的最大值保留最强烈的语义特征。向量归一化L2 Normalization将池化后生成的向量进行归一化即使其模长长度等于 1。归一化后两个向量的点积Dot Product就直接等于它们的余弦相似度。这大大加快了在向量数据库中搜索的速度。常用的embedding模型备注部分数据来自大模型仅供参考。▐检索检索阶段会召回与问题最相关的文本段。通过embedding模型对问题进行文本向量化并与向量数据库的段落进行语义相似度的比较找出最相关的段落。为大模型提供高质量、强相关的参考证据直接决定了生成答案的准确性、相关性以及消除幻觉的上限。Query改写Query优化核心目标对用户原始查询进行优化纠正原始问题中的偏差、模糊或不完整信息以提高检索效果。解决的问题指代消解Coreference Resolution 处理多轮对话。例如用户问“它的价格是多少”改写器会根据上下文将其改写为“华为 Mate 60 Pro 的价格是多少”。纠错与去噪 修正错别字剔除无意义的口语助词如“那个…我想问一下…”。术语对齐 将口语化的表达转化为专业术语。例如将“肚子疼怎么办”改写为“腹痛的治疗建议”。结构转换 将复杂的长难句拆解或简化提取出核心语义特征。多查询生成将单一查询转化为多查询通过“广撒网”和“多维视角”来提升检索质量的技术。这种方法通常利用大模型针对用户的原始问题从不同角度生成 3-5 个意思相近但表达不同的问题然后分别进行检索。核心是提升召回率。例子用户问“如何提高睡眠质量”。扩展成Query 1侧重生活习惯“睡前哪些习惯有助于入睡”Query 2侧重环境因素“什么样的卧室环境适合深度睡眠”Query 3侧重医学建议“改善失眠的科学方法有哪些”效果 相当于在向量空间里投下了多枚“探测器”。只要其中一个探测器接近目标就能抓回正确答案。防止因为用户提问太片面而漏掉关键资料。HyDE用假设文档增强检索HyDEHypothetical Document Embeddings不是直接用“问题”去搜“答案”而是先让 AI 瞎编一个“假答案”再用这个“假答案”去搜“真内容”。本质是将“问题-文档匹配”转换成了“文档-文档匹配”。解决的问题在传统的向量检索中我们面临一个“非对称检索“的问题。用户的问题 通常很短带有疑问语气例如“为什么天空是蓝色的”。知识库里的文档 通常很长是陈述性的例如“瑞利散射是指……导致波长较短的蓝色光散射更强……”。在向量空间里“问题”和“答案”的语义特征其实并不完全对等。有时候系统很难仅凭一个短小的问题就精准捕捉到长篇大论的答案。HyDE 的工作流程接收提问 用户输入一个问题Query。生成虚构文档Hypothetical Document系统调用大模型LLM给它一个指令“请写一段话来回答这个问题”。注意此时模型并不去查资料它只是凭自己的“直觉”或内部知识编一个答案。即便这个答案里包含错误的信息也没关系。向量化Embedding 将这个虚构的答案转化成向量。匹配检索 用这个“虚构答案的向量”去数据库里找最相似的真实文档。例子用户问为什么面团放一会儿会变大知识库中的内容包含的是“酵母发酵”、“二氧化碳释放”、“面筋网络”或“厌氧呼吸”等专业原理。LLM写一个伪答案面团之所以会体积膨胀是因为其中的酵母菌在适宜的温度下通过发酵作用分解糖分。这个过程产生了大量的二氧化碳CO2气体气体被面粉中的面筋蛋白结构包裹形成无数微小气泡。随着气泡增多和膨胀整体面团的体积就会增大。根据伪答案去知识库做向量检索。知识库中有一篇深奥的论文题目叫《真菌代谢对谷物蛋白弹性的影响》。论文中包含“二氧化碳”、“酵母代谢”、“面筋网络弹性”等词汇。因为伪答案里也有这些词两者的向量在空间中高度重合。模型总结最终回答根据生物学原理参考《真菌代谢…》论文面团变大是因为酵母发酵产生了二氧化碳。这些气体被面筋蛋白锁定导致体积扩张……反向HyDEDoc2Query针对chunk生成这块chunk可能的question然后针对这些question进行索引构建关联到具体的chunk内容反向HyDE相比HyDE的优势是可以离线处理不影响实时调用的rt例子数据准备原始文本 “根据公司差旅管理办法第四条员工在非一线城市出差时每日住宿补贴上限为 350 元人民币。申请人需在差旅结束后 15 个工作日内通过 ERP 系统提交正规增值税专用发票进行报销逾期将不予受理。”让大语言模型针对这段话生成 3-5 个“虚构问题”①出差去二线城市住酒店一天能报销多少钱②出差回来后最晚什么时候报销③报销差旅费需要什么类型的发票在知识库中将这段“原始文本”和这3个“虚构问题”关联在一起并建立索引。用户提问阶段真实提问 “我想报销上周去西安出差的房费该怎么办”匹配过程如果直接比对原始文本①用户说“房费”文档说“住宿补贴”②用户说“上周”文档说“15 个工作日”③用户说“该怎么办”文档是陈述句。结果向量匹配度可能只有 0.6容易被其他包含“报销”二字的干扰文档带跑。如果比对“虚构问题”匹配虚构问题 1“出差去二线城市住酒店一天能报销多少钱”西安是二线城市语义高度重合匹配虚构问题 2“出差回来后最晚什么时候报销”对应用户想报销的动作。结果向量匹配度可能高达 0.9因为提问方式、口吻、关注点完全一致。生成回答AI 回答 “您去西安非一线城市出差每日房费报销上限是 350 元。请记得在出差结束后 15 个工作日内通过公司 ERP 系统提交增值税专用发票进行申请哦。”提取标签是一种将“非结构化数据”向“半结构化数据”转化的过程。它通过在语义向量检索的基础上引入标签过滤来提升检索精度。例子用户搜“iPhone 15 Pro Max”。向量可能会把它和“iPhone 14”放在一起因为语义很像但标签匹配能通过iphone15这种硬标签精准锚定目标。效果 过滤掉大量“语义接近但事实不符”的噪音解决了“看着像但不是同一个东西”的问题增加了检索的确定性。重排序ReRank检索的优点是可以在海量的知识里面快速找到和用户query相关的内容块docs但是检索所返回出来的docs实际上可能部分和用户query关联度并不大这个时候就需要通过ReRank这一步对于检索返回出来的docs做关联度排序最终选取最相关的top k个doc做后续的上下文补充。原理在文档的索引阶段文档的向量是预先计算并存好的与Query无关这导致它只能表达文档的平均含义。所以召回的文档仅能说明与Query相关但不能保证精确匹配。比如用户提问“推荐一款2000元以下、续航好的华为手机”。Embedding可能会搜回一大堆“华为手机”或“2000元以下手机”因为这些词的语义权重很大。但它很难平衡这三个条件同时满足的逻辑。所以在重排序阶段利用交叉编码器Cross-Encoder把问题Query和“候选文档”拼在一起作为一个长句子塞进模型比如gte-rerank。模型可以同时看到问题和文档的每一个字。通过自注意力机制Self-Attention在 Transformer 的每一层中Query 中的每一个token都可以直接通过 Attention 机制观察到文档中的每一个词。这种交叉注意力Cross-Attention能够捕捉到极细微的匹配关系判定问题与文档的匹配程度。针对华为手机的例子强行检查是不是华为是不是低于2000有没有提到续航如果缺了一项它的得分会大幅跳水。重排序优点精度飞跃它是解决“检索回来的资料看着挺像但就是答非所问”的最佳方案。多源融合 如果你同时使用了“向量搜索”和“关键词搜索BM25”两者搜出来的结果排序标准不一样。重排序可以作为统一的裁判给它们打出公平的分数。降低大模型负担 给大模型的内容更少、更准不仅节省 Token 成本还能显著提高生成答案的质量。同时能够解决“中间丢失”现象。重排序缺点增加延时。有算力开销。重排序模型有上下文长度限制。对查询扩写不友好如果系统使用了“多查询Multi-Query”技术生成了5个变体问题。那么重排序的计算量会直接乘以 5 倍。▐生成答案在检索到相关的文本段后RAG应用会将问题与文本段通过提示词模板生成最终的提示词由大模型生成回复这个阶段更多是利用大模型的总结能力而不是大模型本身具有的知识。该阶段可能遇到的问题没有检索到相关信息大模型捏造答案。检索到了相关信息但是大模型没有按照要求生成答案。知识冲突检索回来的 5 个文档块里文档 A 说“可以办”文档 B 说“禁止办”。模型陷入困惑。丢失中间信息。研究表明LLM 对长上下文的开头和结尾敏感如果关键答案中间位置模型很可能视而不见。模型忽略参考资料。跳过提供的文档直接用它训练时学到的陈旧知识来回答导致回答不准确。检索到了相关信息大模型也给出了答案但是你希望 AI 给出更全面的答案。优化方式选择合适的大模型如果只是简单的信息查询总结小参数量的模型足以满足需求。如果你希望答疑机器人能完成较为复杂的逻辑推理建议选择参数量更大、推理能力更强的大模型。如果你的问题需要查阅大量的文档片段建议选择上下文长度更大的模型。如果你构建的 RAG 应用面向一些非通用领域如法律领域建议使用面向特定领域训练的模型。优化prompt明确要求不编造答案。一方面可通过强约束指令在提示词中明确“禁止”模型使用外部知识另一方面可通过强制引用手段要求模型在句末标注信息来源。添加内容分隔标记检索召回的文档切片如果随意混杂在提示词里人也很难看清整个提示词的结构大模型也会受到干扰。建议将提示词和检索切片明确地分开以便大模型能够正确地理解你的意图。根据问题类型调整模板不同问题的回答范式可能是不同的你可以借助大模型识别问题类型然后映射使用不同的提示词模板。比如有些问题你希望大模型先输出整体框架然后再输出细节有些问题你可能希望大模型言简意赅的给出结论。模型调参如果你希望大模型输出在相同的问题下输出的内容尽可能相同你可以在每次模型调用时传入相同的seed值。如果你希望大模型在回答用户问题时不要总是用重复的句子你可以适当调高 presence_penalty 值。如果你希望查询事实性的内容可以适当降低temperature 或 top_p 值反之查询创造性的内容时可以适当增加它们的值。如果你需要限制字数如生成摘要、关键词、控制成本或减少响应时间的场景可以适当降低max_tokens的值但是若max_tokens过小可能会导致输出截断反之需要生成大段文本时可以提高它的值。模型微调如果提示词优化到了极限效果仍不理想就需要考虑微调。SFT指令微调 准备一批“问题 - 参考资料 - 标准答案”的语料对大模型进行微调。训练目标 专门训练模型学会“根据参考资料回答”以及“当资料不足时学会拒绝回答”。▐进阶Graph RAG通过结合知识图谱Knowledge Graph, KG和大语言模型LLM解决传统 RAG 在处理复杂问题时的局限性。它不仅存储文本向量还通过 NLP 技术从文本块trunk中提取实体Entity、关系Relationship和属性Property构建成一张复杂的知识网图。在检索时可将相连的节点文本块一起召回。Graph RAG解决的问题多跳问题问题的解决需要多个文本块trunk问题如果问题是“A的导师的导师是谁”。文档1 提到了 A 的导师是 B文档2提到了 B 的导师是 C。传统 RAG 局限向量检索可能只找回包含“A 的导师”的片段由于语义距离不一定能找回“B 的导师”的片段导致模型无法回答。Graph RAG 优势通过图路径 文档1 [实体A、B] - 文档2 [实体B、C] 可以轻松通过路径追踪找到答案。全局理解问题这部小说的主旨是什么传统 RAG 局限它擅长“局部搜索”寻找具体的某段话但不擅长总结全书因为它很难一次性把所有文本块都塞进 Prompt。Graph RAG 优势通过社区检测Community Detection算法可以将图谱划分为不同的层级和簇对每个簇预先生成摘要从而实现对全文本的全局概括。工作原理第一阶段索引构建如何建图文本切分将长文档切成小块。提取实体与关系利用 LLM 识别每个文本块中的实体人、地、事、概念及其关系属于、位于、工作于生成三元组。图构建将提取出的三元组汇聚去重、消歧构建全局知识图谱。社区检测关键步骤如微软 GraphRAG利用图算法如 Leiden 算法将紧密相关的实体聚合在一起形成“社区”并用 LLM 为每个社区生成总结。第二阶段查询检索如何找答案局部检索Local Search识别问题中的关键词在图中定位到具体的实体提取该实体及其邻居节点n跳关联的信息将这些结构化数据喂给 LLM 生成答案。全局检索Global Search当问题涉及宏观主题时不找具体实体检索预先生成的“社区摘要”。汇总多个社区的结论给出全局性回答。代表性框架Microsoft GraphRAGLlamaIndexLightRAG5、RAG的评估▐Ragas评估框架RagasRetrieval Augmented Generation Assessment是一款广受欢迎的用于 RAGRetrieval Augmented Generation 框架效果评估的自动化工具。它提供了上下文contexts维度和答案answer维度的效果指标计算实验显示其指标结果的准确性已经非常接近人工评测结果。Ragas的核心理念是使用 LLM 来评估LLMLLM-as-a-Judge通过一系列自动化的指标来衡量RAG系统的性能。评估指标Rag MetricRagas将 RAG 的评估拆解为两个维度检索Retrieval和生成Generation。从这两个维度进行评测。检索相关指标上下文精度Context Precision评估在针对给定查询Query所检索到的上下文中检索器是否能够将相关的文本块Chunks排在比不相关文本块更高的位置。具体而言它衡量的是检索出的内容中相关文本块被放置在排序列表顶部的程度。重点关注检索到的内容对不对需要标注准确答案。输入user_input、reference参考答案、retrieved_contexts上下文召回率Context Recall衡量的是在所有相关的文档中有多少被成功检索了出来。它的核心关注点在于“不遗漏”重要结果。Ragas 中基于 LLM 的上下文召回率指标将“参考答案Reference Answer”作为“参考上下文Reference Contexts”的替代方案这使得该指标更易于使用因为手动标注参考上下文通常极其耗时。为了根据参考答案估算上下文召回率参考答案会被拆解为若干个事实点Claims随后系统会分析每一个事实点判断其是否能从检索到的上下文中找到出处。在理想情况下参考答案中的所有事实点都应该能够溯源至检索到的上下文。输入user_input、reference参考答案、retrieved_contexts生成相关忠实度Faithfulness用于衡量生成的回答与检索到的上下文在事实逻辑上的一致性。其分值范围为 0 到 1得分越高说明一致性越好。如果一个回答中所包含的所有陈述点Claims都能被检索到的上下文所支撑则该回答被视为“忠实的”。输入user_inputresponseretrieved_contexts。答案相关性Answer Relevancy用于衡量生成的回答与用户输入之间的相关程度。其分值范围为 0 到 1得分越高表示回答与用户输入的匹配度越高。该指标的核心在于衡量回答与问题意图的匹配程度而不评估事实的准确性。它会对信息不完整或包含冗余细节的回答进行扣分。输入user_input、response计算方式①生成问题基于生成的回答构建一组人工合成的问题默认为 3 个。可通过LLM构造。这些问题的设计旨在反映回答中所包含的核心内容②计算相似度分别计算用户原始输入的embedding向量与每一个生成的合成问题的embedding向量之间的余弦相似度③取平均值 对这些余弦相似度分数取平均值从而得到最终的“回答相关性”得分。噪声敏感度Noise Sensitivity用于衡量系统在利用检索到的文档无论该文档是相关的还是不相关的时因提供错误回答而产生失误的频率。该分数范围在 0 到 1 之间数值越低表示性能越好。噪声敏感度分类相关上下文的噪声敏感度 (Noise Sensitivity - Relevant)虽然文档相关但里面包含了一些“参考答案reference不需要”的额外信息、背景说明或冗余事实。考察LLM 能否精准提炼。如果得分高表现差说明模型比较“贪婪”看到相关的文档就想把里面的所有细节都搬进答案里即使参考答案没要求。不相关上下文的噪声敏感度 (Noise Sensitivity - Irrelevant)检索出来的文档是完全不相关的。这些文档里提到的任何信息对回答当前问题都是干扰。考察LLM能否有效过滤。如果得分高表现差说明模型很容易被“带偏”。它把不相干文档里的东西当成了知识点编进了答案里。计算造成敏感度的输入user_input、reference参考答案、response、retrieved_contexts。计算方式系统会审查生成回答中的每一个陈述点Claim以判断其基于标准答案Ground Truth是否正确以及该陈述是否可以归因于检索到的相关或不相关上下文。在理想情况下回答中的所有陈述都应当由检索到的相关上下文提供支撑。评测集生成Testset Generation for RAG在实际开发中开发者往往缺乏高质量的“问题”数据集。Ragas 提供了一个强大的工具可以自动生成测试集。如何基于Ragas生成评测集不同模式的查询分类Query types in RAG单跳查询 (Single-Hop Query)仅需从单个文档或来源中检索信息即可提供相关的回答。具体查询Specific Query“阿尔伯特·爱因斯坦是在哪一年发表相对论的”。这是一个具体的、基于事实的问题通过从包含该信息的文档中进行一次检索即可回答。抽象查询Abstract Query“爱因斯坦的理论是如何改变我们对时间和空间的理解的”。虽然该查询仍指向单一概念相对论但它需要从源材料中提取出更具抽象性或解释性的说明。多跳查询 (Multi-Hop Query)多跳查询涉及多个推理步骤需要来自两个或更多来源的信息。系统必须从不同的文档中检索信息并将这些信息点串联起来才能生成准确的回答。具体查询Specific Query“哪位科学家影响了爱因斯坦关于相对论的研究他们提出了什么理论”。这要求系统同时检索出影响爱因斯坦的科学家以及该科学家的具体理论这些信息可能分布在两个不同的来源中。抽象查询Abstract Query“自爱因斯坦最初发表论文以来关于相对论的科学理论是如何演变的”。这种抽象查询需要检索跨越不同时间、不同来源的多条信息以形成一个关于理论演变的广泛且具解读性的回答。Specific Query VS Abstract Query具体查询 (Specific Query) 侧重于清晰的、基于事实的检索。在 RAG 中其目标是从一个或多个文档中检索出能直接回答该特定问题的高度相关信息。侧重于精确性检索出来的知识直接就能用个人理解。抽象查询 (Abstract Query) 需要更宽泛、更具解释性的回答。在 RAG 中抽象查询对检索系统提出了挑战要求其能够从包含高层推理、解释或观点的文档中提取信息而非简单的客观事实。侧重于整合广泛的思想需要对检索出来的知识进行抽象总结个人理解。Single-Hop Query VS Multi-Hop Query单跳查询 (Single-Hop Query)单条查询的问题生成相对简单。随便找一个文档块让 LLM 根据这个块提个问题就行。多跳查询 (Multi-Hop Query)问题生成困难。如果你想生成一个需要跨越两个知识点的问题比如A 影响了 BB 发明了 C问谁影响了 C 的发明者你必须先找到包含 A、B 关系的文档块 1以及包含 B、C 关系的文档块 2需要知道各文档块chunk间的关系。知识图谱Knowledge Graph Creation文档切分Document Splitter信息提取Extractors系统使用不同的提取器从每个节点中提取信息这些信息随后被用于构建节点之间的关联。Ragas定义了两类提取器①基于LLM大语言模型的提取器另一类是基于规则的提取器比如NERExtractor。关系构建Relationship builder基于提取出的信息构建各节点间的关系。支持使用者自定义关系提取器。Ragas内置的Relationship builder基于语义相似度的关联利用指定的 Embedding 模型将每个 Node 转化为向量计算其余弦相似度。基于实体的关联如果两个 Node 包含相同的实体Relationship Builder 就会在它们之间建立关联。基于层级/结构的关联在文档切分时记录各trunk间的关系相邻段落、主子关系。通过层级/结构构建关系。基于关键词/关键短语的关联利用 Keyphrase Extractor 提取节点中的高频词或核心短语。适合于在没有明确命名实体的情况下比如纯技术文档或理论说明通过共同的关键术语建立连接。场景生成Scenario Generation知识图谱构建完成后可以使用他来构造任何类型的问题。当不同背景的用户群体与 RAG 系统交互时他们表达查询的方式会大不相同这取决于他们的人设(Persona)、查询长度以及查询风格。为了生成能够覆盖所有这些真实情况的问题Ragas 在测试集生成中采用了一种基于场景 (Scenario-based) 的方法。测试集生成中的每个“场景”都是以下参数的组合节点 (Nodes) 用于生成该查询的特定知识图谱节点。查询长度 (Query Length) 期望生成的查询长度可以是短、中、长等。查询风格 (Query Style) 查询的表达风格可以是网络搜索式Web search、聊天对话式Chat等。人设 (Persona) 提出问题的用户角色例如高级工程师、初级工程师等。实操可通过内置的Query Synthesizer或自定义Query Synthesizer来完成场景生成以及评测集的产出。from dataclasses import dataclass from ragas.testset.synthesizers.base_query import QuerySynthesizer dataclass class EntityQuerySynthesizer(QuerySynthesizer): async def _generate_scenarios( self, n, knowledge_graph, callbacks): 这个方法不调用大模型去写问题它只是在查地图KG。 1. 输入你想要几道题n以及知识图谱KG。 2. 它做的事 在 KG 中寻找有关系的节点。 决定这n道题分别用哪些节点作为素材。 给每道题贴上标签如这道题用“正式”风格由“经理”身份提问。 3. 输出一组 Scenario方案列表。 return scenarios async def _generate_sample( self, scenario, callbacks ): 1. 输入一个 Scenario包含节点文本、人设、风格等。 2. 它做的事 把文本和要求塞进 Prompt。 调用 LLM。 让 LLM 返回问题是什么标准答案是什么。 3. 输出一个 TestsetSample一道完整的题目。 return SingleTurnSample(user_inputquery, reference_contexscontexts, referencereference)最后2026年技术圈的分化愈发明显降薪裁员潮持续蔓延传统开发、测试等岗位大批缩水不少从业者陷入职业焦虑与之形成鲜明对比的是AI大模型相关岗位迎来疯狂扩招薪资逆势飙升150%大厂更是直接开出70-100W年薪疯抢具备实战能力的大模型人才甚至放宽年龄限制只求能快速落地技术、创造价值很多程序员、职场新人纷纷入局大模型领域绝非盲目跟风而是实实在在看到了不可替代的价值优势这也是2026年最值得抓住的职业风口1、窗口期红利入门门槛友好不同于成熟赛道的“内卷式招聘”2026年大模型人才缺口巨大简历只要达标掌握基础AI应用具备简单项目经验年龄、学历均非硬性要求小白可快速入门转行程序员也能无缝衔接2、技术可复用上手速度翻倍如果你有前后端开发、测试、数据分析等基础在大模型落地、系统部署、Prompt工程等环节会更具优势无需从零开始复用原有技术能力就能快速进阶3、懂业务更吃香竞争力翻倍单纯懂技术已不够2026年大厂更看重“技术业务”的复合型人才有垂直领域金融、医疗、工业等经验者能精准定位模型落地痛点薪资比纯技术岗高出30%以上更重要的是即便没有转型需求用AI大模型工具为工作赋能、提升效率也已经成为80%企业的硬性要求——不会用大模型提效未来很可能被行业淘汰那么2026年小白/程序员该如何高效学习大模型很多人想入门大模型却陷入两大困境要么到处搜集零散资料不成体系越学越懵要么被收费高昂的课程割韭菜花了钱却学不到实战技能白白浪费时间走弯路。今天就给大家精心整理了一份2026年最新、免费、系统化的AI大模型学习资源包覆盖从零基础入门到商业实战、从理论沉淀到面试通关的全流程所有资料均已整理归档无需拼凑直接领取就能上手学习小白可照做程序员可进阶扫码免费领取全部内容1、大模型系统化学习路线这份学习路线结合2026年行业趋势和新手学习规律由行业专家精心设计从零基础到精通每一步都有明确指引帮你节省80%的无效学习时间少走弯路、高效进阶避免踩坑。2、从0到进阶大模型学习视频教程从入门到进阶这里都有跟着老师学习事半功倍。3、大模型学习书籍电子文档涵盖2026年最新技术要点包括基础入门、Transformer核心原理、Prompt工程、RAG实战、模型微调与部署等内容4、AI大模型最新行业报告报告包含腾讯、阿里、甲子光年等权威机构发布的核心内容还有2026年中文大模型基准测评报告、AI Agent行业研究报告等帮你站在行业前沿把握技术风口。5、大模型项目实战配套源码项目包含Deepseek R1、GPT项目、MCP项目、RAG实战等热门方向还有视频配套代码手把手教你从0到1完成项目开发既能练手提升技术又能丰富简历为求职和职业发展加分。6、2026大模型大厂面试真题2026年大模型面试已全面升级不再单纯考察基础原理而是转向侧重技术落地和业务结合的综合考察很多程序员和新手因为缺乏针对性准备明明技术不错却在面试中失利。适用人群四阶段学习规划共90天可落地执行第一阶段10天初阶应用该阶段让大家对大模型 AI有一个最前沿的认识对大模型 AI 的理解超过 95% 的人可以在相关讨论时发表高级、不跟风、又接地气的见解别人只会和 AI 聊天而你能调教 AI并能用代码将大模型和业务衔接。大模型 AI 能干什么大模型是怎样获得「智能」的用好 AI 的核心心法大模型应用业务架构大模型应用技术架构代码示例向 GPT-3.5 灌入新知识提示工程的意义和核心思想Prompt 典型构成指令调优方法论思维链和思维树Prompt 攻击和防范…第二阶段30天高阶应用该阶段我们正式进入大模型 AI 进阶实战学习学会构造私有知识库扩展 AI 的能力。快速开发一个完整的基于 agent 对话机器人。掌握功能最强的大模型开发框架抓住最新的技术进展适合 Python 和 JavaScript 程序员。为什么要做 RAG搭建一个简单的 ChatPDF检索的基础概念什么是向量表示Embeddings向量数据库与向量检索基于向量检索的 RAG搭建 RAG 系统的扩展知识混合检索与 RAG-Fusion 简介向量模型本地部署…第三阶段30天模型训练恭喜你如果学到这里你基本可以找到一份大模型 AI相关的工作自己也能训练 GPT 了通过微调训练自己的垂直大模型能独立训练开源多模态大模型掌握更多技术方案。到此为止大概2个月的时间。你已经成为了一名“AI小子”。那么你还想往下探索吗为什么要做 RAG什么是模型什么是模型训练求解器 损失函数简介小实验2手写一个简单的神经网络并训练它什么是训练/预训练/微调/轻量化微调Transformer结构简介轻量化微调实验数据集的构建…第四阶段20天商业闭环对全球大模型从性能、吞吐量、成本等方面有一定的认知可以在云端和本地等多种环境下部署大模型找到适合自己的项目/创业方向做一名被 AI 武装的产品经理。硬件选型带你了解全球大模型使用国产大模型服务搭建 OpenAI 代理热身基于阿里云 PAI 部署 Stable Diffusion在本地计算机运行大模型大模型的私有化部署基于 vLLM 部署大模型案例如何优雅地在阿里云私有部署开源大模型部署一套开源 LLM 项目内容安全互联网信息服务算法备案…扫码免费领取全部内容7、这些资料真的有用吗这份资料由我和鲁为民博士(北京清华大学学士和美国加州理工学院博士)共同整理现任上海殷泊信息科技CEO其创立的MoPaaS云平台获Forrester全球’强劲表现者’认证服务航天科工、国家电网等1000企业以第一作者在IEEE Transactions发表论文50篇获NASA JPL火星探测系统强化学习专利等35项中美专利。本套AI大模型课程由清华大学-加州理工双料博士、吴文俊人工智能奖得主鲁为民教授领衔研发。资料内容涵盖了从入门到进阶的各类视频教程和实战项目无论你是小白还是有些技术基础的技术人员这份资料都绝对能帮助你提升薪资待遇转行大模型岗位。这份完整版的大模型 AI 学习资料已经上传CSDN朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2632979.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!