当前位置: 首页 > article >正文

【AIGC】大模型面试高频考点-RAG篇

【AIGC】大模型面试高频考点-RAG篇

    • (1)RAG的基本原理
    • (2)RAG有哪些评估方法?
    • (3)RAG有哪些评估框架?
    • (4)RAG各模块有哪些优化策略?

(1)RAG的基本原理

RAG 检索增强生成由2部分构成:一是离线对异构的数据进行数据工程处理成知识,并存储在知识库中,二是基于用户的提问进行知识库的检索增强。详细步骤如下:

  • 加载文件
  • 读取文本
  • 文本分割
  • 文本向量化
  • 问句向量化
  • 在文本向量中匹配出与问句向量最相似的top k个
  • 匹配出的文本作为上下文和问题一起添加到 prompt中
  • 提交给LLM生成回答

原理如下图所示:

RAG Prompt模版

已知信息:{context}
根据上述已知信息,简洁和专业的来回答用户的问题。如果无法从中得到答案,请说 “根据已知信息无法回答该 问
题” 或 “没有提供足够的相关信息”,不允许在答案中添加编造成分,答案请使用中文。
问题是:{question}

(2)RAG有哪些评估方法?

主要有两种方法来评估 RAG 的有效性:独立评估和端到端评估。

(一)独立评估

介绍: 独立评估涉及对检索模块和生成模块(即阅读和合成信息)的评估。

(1)检索模块:

介绍: 评估 RAG 检索模块的性能通常使用一系列指标,这些指标用于衡量系统(如搜 索引擎、推荐系统或信 息检索系统)在根据查询或任务排名项目的有效性。

评估指标: 命中率 (Hit Rate)、平均排名倒数 (MRR)、归一化折扣累积增益 (NDCG) 、**精确度 (Precision) **等。

(2)生成模块:

介绍: 生成模块指的是将检索到的文档与查询相结合,形成增强或合成的输入。这与最 终答案或响应的生成不

同,后者通常采用端到端的评估方式。

评估指标: 关注上下文相关性,即检索到的文档与查询问题的关联度。

(二)端到端评估

介绍: 对 RAG 模型对特定输入生成的最终响应进行评估,涉及模型生成的答案与输入 查询的相关性和一致性。

无标签的内容评估:

评价指标:答案的准确性、相关性和无害性

有标签的内容评估:

评价指标:准确率 (Accuracy) 和精确匹配 (EM)

(3)RAG有哪些评估框架?

在 RAG 评估框架领域,RAGAS 和 ARES 是较新的方法。

1.RAGAS

RAGAS 是一个基于简单手写提示的评估框架,通过这些提示全自动地衡量答案的准确性、 相关性和上下文相关 性。

算法原理:

  • 答案忠实度评估: 利用大语言模型 (LLM) 分解答案为多个陈述,检验每个陈述与上下文 的一致性。最终,根 据支持的陈述数量与总陈述数量的比例,计算出一个“忠实度得分”。
  • 答案相关性评估: 使用大语言模型 (LLM) 创造可能的问题,并分析这些问题与原始问题 的相似度。答案相关性得分是通过计算所有生成问题与原始问题相 似度的平均值来得出的。
  • 上下文相关性评估: 运用大语言模型 (LLM) 筛选出直接与问题相关的句子,以这些 句子 占上下文总句子数量的比例来确定上下文相关性得分。

2.ARES

ARES 的目标是自动化评价 RAG 系统在上下文相关性、答案忠实度和答案相关性三个方 面的性能。ARES 减少了评估成本,通过使用少量的手动标注数据和合成数据,并应用预测 驱动推理 (PDR) 提供统计置信区间,提 高了评估的准确性。

算法原理:

  • 生成合成数据集: ARES 首先使用语言模型从目标语料库中的文档生成合成问题和答案,创 建正负两种样本。
  • 训练大语言模型 (LLM) 裁判: 然后,ARES 对轻量级语言模型进行微调,利用合成数据集 训练它们以评估上下 文相关性、答案忠实度和答案相关性。
  • 基于置信区间对RAG 系统排名: 最后,ARES 使用这些裁判模型为 RAG 系统打分,并结 合手动标注的验证集 ,采用 PPI 方法生成置信区间,从而可靠地评估 RAG 系统的性能。

(4)RAG各模块有哪些优化策略?

  • 文档块切分: 设置适当的块间重叠、多粒度文档块切分、基于语义的文档切分、文档块摘要。
  • 文本嵌入模型: 基于新语料微调嵌入模型、动态表征。
  • 提示工程优化: 优化模板增加提示词约束、提示词改写。
  • 大模型迭代: 基于正反馈微调模型、量化感知训练、提供大context window 的推理模型。此外,还可对query召回的文档块集合进行处理,如:元数据过滤、重排序减少文档块数量。

http://www.kler.cn/a/407245.html

相关文章:

  • React (三)
  • C++ASCII码表和字符操作
  • AWTK fscript 中的 大端小端扩展函数
  • 使用 Java Stream 优雅实现List 转化为Map<key,Map<key,value>>
  • 数据结构-8.Java. 七大排序算法(上篇)
  • nvm安装node遇到的若干问题(vscode找不到npm文件、环境变量配置混乱、npm安装包到D盘)
  • 深度学习:神经网络的搭建
  • Python实现随机分布式延迟PSO优化算法(RODDPSO)优化CNN回归模型项目实战
  • Android学生信息管理APP的设计与开发
  • Webpack 热更新(HMR)详解:原理与实现
  • 学习嵩山版《Java 开发手册》:编程规约 - 命名风格(P1 ~ P2)
  • 如何进行Apache的配置与调试?
  • Centos环境安装Docker
  • 谈谈法律专业留学dissertation的写作原则与要求
  • 基于Java Springboot高校奖助学金系统
  • el-table表格展示和传值分隔写法
  • SpringCloud Gateway转发请求到同一个服务的不同端口
  • 大模型(LLMs)增量预训练篇
  • Rust 智能指针
  • AI大模型开发架构设计(19)——大模型向量数据库企业级应用实践
  • 插排快排
  • Leetcode169. 多数元素(HOT100)
  • Apple Vision Pro开发002-新建项目配置
  • Python的3D可视化库 - vedo (2)visual子模块 基本可视化行为
  • vue3+echarts+ant design vue实现进度环形图
  • uniapp input限制输入负数,以及保留小数点两位.