RAG 生成流程

image-20241022212827467

  1. 经过 RAG 索引流程(外部知识的解析向量化)和 RAG 检索流程(语义相似性的匹配及混合检索),进入到 RAG 生成流程
  2. 在 RAG 生成流程中,需要组合指令,即携带查询问题及检索到的相关信息输入的 LLM,由 LLM 理解并生成最终的回复
  3. RAG 的本质是通过 LLM 提供外部知识增强其理解和回答领域问题的能力
  4. LLM 在 RAG 系统中起到了大脑的作用
    • 在面对复杂多样化的 RAG 任务时,LLM 的性能直接决定了系统的整体效果
  5. 提示词工程是生成流程中的另一个关键环节
    • 通过有效的指令的设计和组合,可以帮助 LLM 更好地理解输入内容,从而生成更加精确和相关的回答
    • 精心设计的问题提示词,往往能提升生成效果

LLM

发展

image-20241022214256459

RAG 目前更关注通用大模型

image-20241022214741014

原理

  1. Google 于 2017 年发布论文 Attention Is All You Need,引入了 Transformer 模型
  2. Transformer 模型是深度学习领域的一个突破性架构,LLM 的成功得益于对 Transformer 模型的应用
  3. 与传统的 RNN(循环神经网络) 相比,Transformer 模型不依赖于序列顺序
    • 通过自注意力(Self-Attention)机制来捕捉序列中各元素之间的关系
  4. Transformer 由多个堆叠的编码层(Encoder)和解码层(Decoder)组成
    • 每一层包括自注意力层前馈层归一化层
    • 这些层协同工作,逐步捕捉输入数据信息特征,从而预测输出,实现强大的语言理解生成能力
  5. Transformer 模型的核心创新 - 位置编码 + 自注意力机制
    • 位置编码
      • 帮助模型理解输入数据的顺序信息
    • 自注意力机制
      • 允许模型根据输入的全局上下文,为每个 Token 分配不同的注意力权重
      • 从而更准确地理解词与词之间的关联性
  6. Transformer 特别适用于语言模型
    • 语言模型需要精确捕捉上下文中的细微差别,生成符合语义逻辑的文本

编码器负责理解输入信息的顺序语义,而解码器则输出概率最高Token

image-20241022220451857

  1. LLM 的突破始于 OpenAI 于 2022 年底发布的 ChatGPT
  2. 核心优势
    • 庞大的参数规模 + 基于 PB 级别数据的训练所带来的卓越语言理解和生成能力 + 显著的涌现能力
  3. LLM 不仅在传统的 NLP 处理任务中展现了卓越表现,还具备解决复杂问题和进行逻辑推理高级认知能力
  4. 基于 Transformer 模型预测下一个 Token 的原理
    • LLM 在分析海量的语料库后,能够在逻辑上精准补全不完整的句子,甚至生成新的句子
    • 赋予了 LLM 生成连贯且上下文相关的文本的能力,适用于文本生成翻译问答系统等多个领域

选型

测评

SuperCLUE:中文通用大模型综合性测评基准

image-20241022222230276

  1. 在 RAG 场景中,LLM 的检索能力表现是核心
  2. SuperCLUE 针对 RAG 应用场景进行了独立测试,具体评估了检索生成过程中的表现

维度

开源 vs 闭源

  1. 开源模型适用于数据敏感性高或者有严格合规要求的场景,通过自托管实现对数据的完全掌控,确保隐私安全
  2. 闭源模型适用于数据敏感度较低的应用场景,其维护和服务相对完善,降低运维复杂度

模型参数规模

  1. 大参数模型复杂任务中的推理生成能力较强,但并非所有应用场景都需要高精度模型
  2. 小参数模型(7B)在满足简单逻辑任务时,具备更优的响应速度成本控制资源利用效率

国内部署 vs 国外部署

  1. 稳定性、网络延迟、充值付费等
  2. 数据合规

推荐

闭源

  1. 通义千问、文心一言、腾讯混元、字节豆包、Kimi Chat
  2. 参数量较高,在 RAG 场景的实际表现差异较少,主要取决于成本

开源

系列 特点
Qwen 长上下文处理上表现出色,非常适合需要深度语义理解的 RAG 任务
Baichuan 数学编码任务中表现卓越,在安全性方面经过深入评估
ChatGLM 适用于长文本检索和生成

Prompt Engineering

概念

  1. Prompt Engineering 是为生成式 AI 模型设计输入以获得最佳输出的实践
  2. 输入即 Prompt,而编写 Prompt 的过程即 Prompt Engineering
  3. 核心理念 - 通过提供更优质的输入,让生成式 AI 模型(如 LLM)生成更符合需求的结果
  4. Prompt Engineering 通过开发优化 Prompt 来有效利用 LLM 的潜力
  5. Prompt 工程师的任务不仅仅是设计提示
    • 而是通深入理解模型的功能局限性,创造能够与模型输入产生最佳互动的 Prompt

元素

Prompt 组成元素

元素 描述
Instruction 指示模型要执行的特定任务或者操作
Context 为模型提供额外信息背景,帮助引导模型生成更准确的响应
Input Data 希望模型回答的问题或者感兴趣的输入内容
Output Indicator 指示模型的输出类型格式

image-20241022225548891

技巧

RAG 中的 Prompt Engineering 技巧 - 高效低成本提升输出质量

具体指令

  1. 向 LLM 提供具体清晰的指令,能够提高输出的准确性
  2. 模糊的指令往往导致模型生成不理想的结果
1
2
3
4
请根据上传的银行业报告,简洁总结当前的市场趋势,重点分析政策变化对行业的影响,输出为以下Markdown格式:
- **市场趋势**
- **政策影响**
- **竞争风险**

示例学习

  1. 通过给模型提供多个参考示例,模型可以进行模式识别,进而模仿思考生成类似的答案
  2. 无需对模型进行进一步训练,有效提升模型的输出质量
1
2
3
4
5
6
以下是两个关于银行业的分析示例,请按照这种格式对新的报告进行分析:
- 示例 1:**市场趋势**:由于政策放宽,银行贷款增长迅速。
- 示例 2:**政策影响**:新的利率政策可能会对中小企业贷款产生负面影响。


请对下面报告进行同样的分析。

默认回复

  1. 当模型无法从文档中获取足够信息时,通过设定默认回复策略,避免模型产生幻觉(虚假答案)
  2. 确保模型仅基于文档中的事实进行回答
1
如果文档中没有足够的事实回答问题,请返回{无法从文档中获得相关内容},而不是进行推测。

角色设定

  1. 为模型设定特定的角色身份,可以帮助模型更好地理解任务要求和角色责任,输出更加一致的内容
1
2
3
4
你的角色: 知识库专家
- 背景:分析银行业市场数据
- 目标:生成一份详细的行业趋势分析
- 限制:仅根据报告中的数据生成分析

解释理由

  1. 在编写 Prompt 时,向模型解释为什么某些任务需要特定的处理方式
  2. 可以帮助模型更好地理解任务背景,从而提高输出的质量相关性
1
请生成一份简明扼要的银行业报告摘要,不要逐字重复段落内容。原因:读者可以访问完整文档,如果需要可以详细阅读全文。

基础说明

  1. 为模型提供文档的背景信息文本来源可以奠定任务基础,让模型更好地进行任务推理回答
1
以下是关于银行业政策变化的相关规则,它们将用于回答有关政策对银行业影响的问题。