Workflow
上下文学习
icon
搜索文档
万字长文!RAG实战全解析:一年探索之路
自动驾驶之心· 2025-08-07 17:52
背景介绍 - RAG(检索增强生成)方法结合了检索模型和生成模型的能力,以提高生成文本的质量和相关性 [1] - 该方法由Meta在2020年提出,让语言模型能够获取内化知识之外的信息,并以更准确的方式回答问题 [1] - 在大模型时代,RAG用于解决幻觉问题、知识时效问题和超长文本问题等大模型本身的制约或不足 [1] RAG的挑战 - 主要面临三个方面的挑战:检索质量、增强过程和生成质量 [2] - 检索质量方面存在语义歧义、用户输入变复杂、文档切分和多模内容提取等挑战 [5] - 增强过程面临上下文集成、冗余和重复、排名和优先级等挑战 [5] - 生成质量方面存在过度依赖检索内容、无关性、毒性或偏见等问题 [5] 整体架构 产品架构 - 包含模型层、离线理解层、在线问答层和场景层四层 [11] - 模型层支持自研序列猴子、开源大模型和第三方模型,并优化跨语言Embedding模型 [11] - 离线理解层包括智能知识库和搜索增强模块,负责非结构化文本处理和检索精准度 [11] - 在线问答层支持多文档、多轮次、多模态及安全性与拒识等功能 [11] - 场景层针对不同行业特点预制多种场景类角色 [11] 技术架构 - 分为query理解、检索模型和生成模型三个主要组成部分 [10] - query理解模块包括query改写、扩写和意图识别等,旨在提高召回率 [12] - 检索模型从文档集或知识库中检索相关信息,使用信息检索或语义搜索技术 [12] - 生成模型根据Prompt或上下文生成新内容,包括chat系统和Prompt优化等 [13] Query理解 - 引入query理解模块解决用户query措辞不利于检索和生成结构化查询的问题 [14] - 意图识别模块利用LLM实现决策功能,可应用于选择器模块或查询引擎 [15] - query改写模块利用LLM重新措辞用户query,提高检索效果 [16] - HyDE技术生成假设答案并转换为嵌入,从数据库中检索最接近的实际文档 [17] - query扩写模块将复杂问题拆解为子问题,采用分而治之的方法处理 [22] - Step-Back Prompting通过抽象和推理两步处理复杂任务 [23] - CoVe技术通过验证和完善回答提高大型语言模型答案的可靠性 [25] - RAG-Fusion生成多个query并行执行搜索,使用倒数排名融合重新排序 [27] - ReAct将复杂查询分解成更简单的子查询,结合思维链提示和Action计划生成 [29][31] - query重构模块通过一次请求实现改写、拆解和拓展用户输入 [32] 检索模型 挑战 - 依赖于Embedding模型的向量化是否准确 [33] - 相关信息出现在输入上下文开头或结尾时性能最高,中间性能明显下降 [34] 架构 - 包括文档加载器、文本转换器、文本嵌入模型、向量数据库和索引等组件 [35][37] 文档加载器 - 从配置源加载文档数据,支持懒加载和多种来源如txt文件、网页和YouTube视频 [38] 文本转换器 - 将大型文档分割成较小块,适应模型上下文窗口 [39] - 递归分割文本保持相关文本片段在一起 [40] - 常见类型包括HTML、Markdown、Code、Token和Character等 [43] - 使用Chunkviz工具评估文本转换器工作情况 [44] 文本嵌入模型 - 创建文本的向量表示,捕捉语义并支持语义搜索 [45] - 应具备跨语种检索、长原文和短摘要关联、不同表述相同语义关联等能力 [45] 向量数据库 - 支持嵌入式的高效存储和搜索,检索与嵌入查询最相似的嵌入向量 [47] 索引 - 摘要索引将节点存储为顺序链,支持顺序遍历或基于关键词过滤 [51] - 树索引构建层级树状结构,父节点是子节点的摘要 [53] - 关键词表索引提取关键词并构建多对多映射 [55] - 向量索引利用文本嵌入模型将文本块映射成向量并存储在向量数据库中 [57] 排序和后处理 - 基于相似度分数、关键词、LLM重新排序或时间进行过滤和排序 [59] 生成模型 - 回复生成策略包括依次结合相关文本块修正回复或在Prompt中填充多个文本块 [66] - prompt拼接策略包括字符串提示和聊天提示 [61] - 字符串提示连接模板,聊天提示由消息列表组成 [62][63] 插件 - 基于混合演示检索的上下文学习方法融合文本检索和语义检索进行多路召回 [64] - 检索模块包括文本检索和语义检索,分别采用BM25和双塔模型 [70] - 重排模块使用倒序排序融合算法和两端填充排序策略 [71] - 生成模块设计prompt组装模块,融入长期和短期对话记录 [72] 引用或归因生成 - 归因让模型生成内容与参考信息对齐,提供证据来源确保信息准确性 [73] - 模型生成方法直接让模型生成归因信息,依赖模型能力 [75] - 动态计算方法在流式生成时匹配语义单元和参考源 [76] 评估 - Faithfulness评测生成的回答是否忠实于contexts,避免幻觉 [79] - Answer Relevance评测生成的答案是否解决实际问题 [79] - Context Relevance评测检索的上下文是否重点突出且少含无关信息 [79] - RGB基准研究RAG对大型语言模型的影响,分析噪声鲁棒性、拒答等能力 [77] - RAGAS框架对RAG pipeline进行无参考评估,考虑检索系统和LLM能力 [81] - LlamaIndex提供衡量生成结果质量和检索质量的模块 [81] 总结 - RAG技术需要不断实践和研究才能打磨出符合企业应用的精品 [82] - 本文总结了过去一年在RAG实践的关键模块,属于大纲式技术普及文章 [82]
不靠海量数据,如何精准喂养大模型?上交Data Whisperer:免训练数据选择法,10%数据逼近全量效果
机器之心· 2025-07-29 14:38
核心观点 - 提出Data Whisperer框架 利用预训练模型的上下文学习能力实现免训练的数据选择 仅需10%数据即可达到接近全量数据的微调效果 [2][4][6] - 该方法通过注意力机制和ICL模拟参数更新 实现高效稳定的数据筛选 无需额外训练或人工标注 [6][10][36] - 在多个基准测试中显著超越传统方法 同时大幅降低计算成本和时间消耗 [15][18][35] 方法机制 - 基于ICL少样本构建和注意力感知权重 结合模型输出质量与注意力贡献进行综合打分 [7][8][10] - 理论支持显示ICL通过上下文样本调整注意力权重 等效于隐式参数更新 [13][14][36] - 支持弱选强训机制 小模型选题大模型微调 实现知识迁移并降低计算负担 [22][23][24] 性能表现 - GSM8K数学任务:使用10%数据达到72.46% 超过全量数据71.39%的表现 [15][19] - DialogSum摘要任务:在Qwen模型上达到43% 较SOTA方法提升2.5个百分点 [15][19] - 效率指标STR低至0.03-0.2 较传统方法提升8-20倍速度 [18][21] - 在1%/5%/10%低预算场景下均保持领先优势 [15][35] 技术细节 - 最优配置为n_d=10示范样本和n_q=5查询样本 增加样本数量效果饱和 [26][27][28] - 中间层注意力(如Layer13)提供最稳定的语义信息 优化选题效果 [30][31][32] - 倾向选择低困惑度样本 符合易例优先理论 [33][34] 对比优势 - 全面超越GraNd(基于梯度)/EL2N(预测误差)/CCS(多样性)/Nuggets(需训练打分器)等方法 [15][35][38] - 在准确率、效率、稳定性三个维度均领先 尤其擅长低预算场景 [18][35] - 实现结构感知和推理驱动的数据选择新范式 [39] 应用前景 - 可迁移至法律、医疗等复杂结构任务领域 [41] - 未来可结合人类反馈、提示工程或合成数据方法进一步优化 [41] - 揭示任务对齐可不依赖人类标签或大数据量 通过结构化推理机制引导学习 [42][43]
一个任务50次调用,成本狂砍90%?Manus首次公开上下文工程秘诀,一堆反复重写换来的教训
AI前线· 2025-07-21 15:04
核心观点 - 公司选择押注于上下文工程而非端到端训练模型 使产品迭代周期从几周缩短至几小时 并与底层模型进步保持正交关系 [1][2] - 上下文工程是实验科学 已四次重建Agent框架 通过"随机梯度下降"方法实现局部最优解 [2] - KV缓存命中率是生产阶段AI Agent最重要的单一指标 直接影响延迟和成本 缓存与非缓存token成本相差10倍 [4][5] - 文件系统被视为最终上下文 解决长上下文窗口痛点 实现无限大小、持久化存储和结构化外部记忆 [18][21] - 通过"背诵"机制操纵模型注意力 典型任务需50次工具调用 持续更新待办事项列表保持目标聚焦 [26][30] - 保留错误回合是改进Agent行为的有效方法 错误恢复是真正Agent行为的清晰指标 [32][35] - 少样本提示在Agent系统中可能适得其反 需增加多样性打破行为模式 [36][37] KV缓存设计 - 平均输入输出token比例达100:1 缓存显著降低生成第一个token时间和推理成本 [4][5] - 提高KV缓存命中率三原则:保持提示前缀稳定、上下文只追加内容、明确标记缓存断点 [8][9] - 时间戳等动态元素会破坏缓存 序列化稳定性是关键 某些框架需手动插入缓存断点 [9] 工具管理策略 - 工具数量激增导致模型选择低效 应避免迭代中动态添加/移除工具 [11] - 采用上下文感知状态机管理工具可用性 通过屏蔽token对数而非修改定义来约束动作选择 [11] - 工具定义位于上下文前端 变更会导致后续KV缓存失效 可能引发模式违规或幻觉动作 [14] - 设计一致前缀的动作名称(如browser_/shell_) 实现无状态对数处理器的工具组选择 [15] 文件系统应用 - 128K token上下文窗口在现实场景仍不足 存在观察数据过大、性能下降和成本高三大痛点 [18][20] - 压缩策略需保持可恢复性 如保留URL可恢复网页内容 文档路径可恢复文档内容 [24] - 文件系统操作实现结构化外部记忆 可能为状态空间模型(SSM)解锁新Agent类型 [24] 注意力管理 - 创建并持续更新todo.md文件是故意设计的注意力操纵机制 [26][27] - 通过重写待办事项将全局计划推入模型近期注意力范围 避免50次工具调用中的目标偏离 [30] 错误处理机制 - 保留错误回合使模型能隐式更新内部信念 减少重复错误概率 [35] - 错误恢复能力是真实Agent行为的指标 但被学术基准低估 [35] 少样本提示优化 - 语言模型会模仿上下文中行为模式 重复动作可能导致漂移和幻觉 [36] - 引入结构化变化(序列化模板/措辞/格式噪声)打破模式 增加多样性提升鲁棒性 [37][38]