大语言模型基础

注:本文是作者阅读毛玉仁等老师所作《大模型基础》一书所作笔记,简短摘要以供大家阅读,以便快速对大模型有一个整体概念

一、语言模型基础(略,后续补充)

1、n-grams语言模型
1.计算语言符号出现概率
2.统计学原理
2、基于RNN的语言模型
3、基于Transformer的语言模型
4、模型采样方法
1. 概率最大化
2. 随机采样
5、语言模型的评测
  1. 外在评测
  2. 内在评测

二、大语言模型架构

基本术语:

1、扩展法则(Scaling Laws):

2、注意力矩阵(Attention Matrix)是 Transformer 中的核心组件,用于计算输入序列中各个 Token 之间的依赖关系。

2.1.1 大数据 + 大模型 能力增强

1. Kaplan-McCandlish 扩展法则

2. Chinchilla 扩展法则

2.1.2 大数据 + 大模型 能力扩展
2.2.1 主流模型架构的类别
1. Encoder-only 架构

​ a. 组成:

	1. 输入编码部分:**分词**、**向量化**以及**添加位置编码**
	1. **特征编码**部分:是由多个相同的**编码模块**(Encoder Block)堆叠而成,其中每个编码模块包含**自注意力模块**(Self-Attention)和**全连接前馈模块**
	1. **任务处理**部分:对任务需求专门设计的模块,其可以由用户针对任务需求自行设计

​ b.

2. Encoder-Decoder 架构
3. Decoder-only 架构

​ a.组成:

  1. 输入编码部分、
  2. 特征解码部分以及
  3. 输出生成部分
2.2.2 模型架构的功能对比
  1. 应用:

    1. Encoder-only 架构自然语言理解
    2. Encoder-Decode 架构:处理各种复杂的有条件生成任务
    3. Decoder-only 架构无条件文本生成任务
  2. 基于Encoder only 架构的大语言模型:

    1. Bert语言模型:
      1. 模型结构:都是由多个编码模块堆叠而成,每个编码模块包含一个多头自注意力模块和一个全连接前馈模块
      2. 预训练方式:掩码语言建模 和 下文预测
      3. 下游任务:应用于各种自然语言处理任务,包括但不限于文本分类(如情感分析)、问答系统、文本匹配(如自然语言推断)和语义相似度计算等。
      4. 衍生语言模型:
        1. ** RoBERTa(Robustly Optimized BERT Pretraining Approach)** 语言模型
        2. ** ALBERT** 语言模型
        3. ELECTRA 模型
  3. 基于 Encoder-Decoder 架构的大语言模型

    1. T5 语言模型:

      1. T5 模型结构:将多种 NLP 任务统一到一个文本转文本的生成式框架****中
    2. BART语言模型:

      1. 模型结构:BART 的模型结构同样与原始的 Transformer 架构完全相同,包括一个编码器和一个解码器。每个编码器和解码器分别由多个编码模块和解码模块堆叠而成。
      2. 五个文本破坏任务:
        1. Token 遮挡任务(Token Masking)
        2. Token 删除任务(Token Deletion)
        3. 连续文本填空任务(Text Infilling)
        4. 句子打乱任务(Sentence Permutation)
        5. 文档旋转任务(Document Rotation)
  4. 基于Decoder-only 架构的大语言模型
    1. GPT
    2. LLAMA 系列语言模型
      1. LLaMA1
      2. LLaMA2:首先,其使用了大规模且公开的指令微调数据集 [8] 对模型进行有监督的微调。然后,LLaMA2 还训练了 RLHF 奖励模型,并基于近似策略优****化(Proximal Policy Optimization, PPO)[33] 以及拒绝采样(Rejection Sampling)进行强化学习对模型进行更新
      3. LLaMA衍生模型:
        1. 性能改进类模型
        2. 垂域任务类模型
        3. 多模态任务类模型:通过整合视觉模态编码器和跨模态对齐组件,研究者们将 LLaMA 模型扩展到多模态任务上
  5. Transformer 架构

    1. 状态空间模型 SSM
      1. 范式可以有效处理长文本中存在的长程依赖性(Long-Range Dependencies, LRDs)问题,并且可以有效降低语言模型的计算和内存开销

      2. SSM 架构的系统方程具有三种形式,分别为连续形式、离散化的递归形式以及离散化的卷积形式,可应用于文本、视觉、音频和时间序列等任务,在应用时,需要根据具体情况选择合适的表示形式

      3. 基于SSM范式的经典架构:

        1. RWKV(Receptance Weighted Key Value):

          1. 核心模块:时间混合模块通道混合模块
        2. Mamba

      4. 训练时更新 TTT

        1. 原因:随着上下文长度的持续增长,基于 SSM 范式的模型可能会过早出现性能饱和。
        2. 过程:TTT 利用模型本身的参数来存储隐藏状态、记忆上文;并在每一步推理中,对模型参数进行梯度更新,已实现上文的不断循环流入

三、Prompt工程

基本术语

prompt:Prompt 是指用于指导生成式人工智能模型执行特定任务的输入指令,这些指令通常以自然语言文本的形式出现

Prompt 工程(Prompt Engineering):又称提示工程,是指设计和优化用于与生成式人工智能模型交互的 Prompt 的过程

Token承载语义的最小单元

分词: 将文本转化为 Token 的过程称之为分词(Tokenization)

上下文学习(In-Context Learning, ICL): 是一种通过构造特定的 Prompt,来使得语言模型理解并学习下游任务的范式,这些特定的 Prompt 中可以包含演示示例任务说明等元素。

思维链提示(Chain-of-Thought,CoT): 通过模拟人类解决复杂问题时的思考过程,引导大语言模型在生成答案的过程中引入一系列的中间推理步骤

智能体(Agent):是一种能够自主感知环境并采取行动以实现特定目标的实体

3.1
3.1.1.prompt分词向量化
  1. 过程:通过分词技术将文本分割成 Token,再将 Token 转化为特征向量,在高维空间中表征这些文本的处理流程,使得语言模型能够捕捉文本的深层语义结构,并有效地处理和学习各种语言结构,从简单的词汇到复杂的句式和语境
3.1.2 prompt工程的意义:垂域任务数据增强智能代理等多个领域发挥出卓越的性能。
3.2上下文学习
  1. 上下文学习的多种形式:

    1. 零样本(Zero-shot):仅需向模型提供任务说明,而无需

      提供任何示例。

    2. 单样本(One-shot):仅需为模型提供一个示例

    3. 少样本(Few-shot):提供少量的示例(通常为几个至十

      几个),显著提升模型在特定任务上的表现

  2. 演示示例的选择:

    1. 主要依靠:相似性,多样性
    2. 基于相似性和多样性的示例选择方法:
      1. 直接检索:(eg:KATE)给定一组候选示例,直接检索的方法依据候选示例与待解决问题间的相似性对候选示例进行排序,然后选取排名靠前的 K 个示例
      2. 聚类检索:(eg:Self-Prompting)其先把所有候选示例划分为 K 个簇,然后从每个簇中选取最为相似的一个示例。这样可以有效避免选择出多个相似的示例,从而保障了多样性
      3. 迭代检索:(eg:RetICL)迭代检索首先挑选与问题高度相似的示例,随后在迭代过程中,结合当前问题和已选示例,动态选择下一个示例,从而确保所选示例的相似性和多样性
  3. 性能影响因素:

    1. 预训练数据的影响
      1. 领域丰富度:预训练数据的所覆盖的领域的丰富度直接影响模型的领域泛化能力
      2. 任务多样性:多样化的任务类型有助于模型学习到更广泛的知识和技能
      3. 训练数据的分布特性:训练数据中存在突发性分布和罕见类别时,能够增强模型的上下文学习能力。
    2. 预训练模型的影响
      1. 预训练模型对上下文学习的性能影响主要体现在模型参数规模上。
      2. 模型的规模越大,其上下文学习性能也越强 。此外,模型的架构和训练策略也是影响上下文学习性能的重要因素
    3. 演示示例的影响
      1. 示例格式
      2. 输入-输出映射的正确性
      3. 演示示例的数量和顺序
    4. Prompt 中的任务说明的质量也直接影响上下文学习的效果
3.3思维链
  1. 思维链提示扩展方法
    1. 按部就班:模型一步接着一步地进行推理,推理路径形成了一条逻辑连贯的链条
    2. 三思后行:模型每一步都停下来估当前的情况,然后从多个推理方向中选择出下一步的行进方向
    3. 集思广益:模型同时生成多条推理路径并得到多个结果,然后整合这些结果,得到一个更为全面和准确的答案
  2. 按部就班:
    1. 侧重:逻辑的连贯性步骤的顺序性
    2. 变体:
      1. Zero-Shot CoT:通过简单的提示,如“Let’s think step by step”,引导模型自行生成一条推理链。
      2. Auto CoT:在 Zero-Shot CoT 的基础之上,Auto-CoT [46] 引入与待解决问题相关的问题及其推理链作为示例,以继续提升 CoT 的效果
  3. 三思而后行:
    1. 侧重:在决策过程中的融入审慎灵活性
    2. 变体:
      1. ToT:ToT 将推理过程构造为一棵思维树,从拆解、衍生、评估、搜索角度对思维树进行构造
        1. 拆解:将复杂问题拆分成多个简单子问题,每个子问题的解答过程对应一个思维过程。
        2. 衍生:模型需要根据当前子问题生成可能的下一步推理方向
        3. 评估:利用模型评估推理节点合理性
        4. 搜索:从一个或多个当前状态出发,搜索通往问题解决方案的路径
      2. GoT:GoT 将树扩展为有向图,以提供了每个思维自我评估修正以及思维聚合的操作
  4. 集思广益:
    1. 侧重:是通过汇集多种不同的观点和方法来优化决策过程
    2. 变体:
      1. Self-Consistency:
        1. 在随机采样策略下,使用 CoT 或 Zero-Shot CoT 的方式来引导大语言模型针对待解决问题生成一组多样化的推理路径
        2. 针对大语言模型生成的每个推理内容,收集其最终的答案,并统计每个答案在所有推理路径中出现的频率
        3. 选择出现频率最高的答案作为最终的、最一致的答案
3.4.Prompt技巧
  1. Prompt编写规范:

    1. 任务说明:它明确了模型需

      要完成的任务

    2. 上下文:上下文提供了帮助模型理解和回

      答问题的示例或背景信息

    3. 问题:是用户真正想要模型解决的问题

    4. 输出格式:它规范了模型的输出格式(JSON XML HTML Markdown CSV)。

    5. 排版清晰:使用合适的分隔符和格式化技巧

  2. 合理归纳提问:

    1. 分布引导
    2. 追问:
      1. 深度追问
      2. 扩展追问
      3. 反馈追问
  3. 适时使用CoT:

    1. 何时使用CoT:
      1. 任务类别:CoT 技术特别适用于需要复杂推理的任务,如算术、常识和符号推理。
      2. 模型规模:CoT 技术应用于参数量超过千亿的巨型模型时,能够显著提升其性能
      3. 模型能力:模型在没有 CoT 指令的条件下反而展现出更佳的性能
  4. 善用心理暗示,通过暗示大模型扮演的详尽角色来激发大模型的能力;

  5. 同时善用情景带入,将特定情境下所需的专业知识历史背景等信息嵌入到模型的响应中

3.5.Prompt工程的应用
  1. 基于大语言模型的 Agent

  2. 数据合成:Self-Instruct 通过 Prompt 工程技术构建 Prompt,通过多步骤调用大语言模型,并依据已有的少量指令数据,合成大量丰富且多样化的指令数据

  3. Text-to-SQL

    1. (eg:C3)组成:清晰提示(Clear Prompting)、提****示校准(Calibration with Hints)**和一致输出(Consistent Output),分别对应模型输入、模型偏差和模型输出
  4. GPTs

四、参数高效微调

基本术语

  1. 主流下游任务适配方法:
    1. 上下文学习**(In-context learning)**:
      1.
    2. 指令微调**(Instruction Tuning)**:
      1. 指令数据构建
      2. 监督微调
  2. 主流PEFT方法:
    1. 参数附加法(Additional Parameters Methods):
      1. 步骤:在模型结构中附加新的、较小的可训练模块。在进行微调时,将原始模型参数冻结,仅微调这些新加入的模块,从而来实现高效微调。
      2. 典型方法包括:适配器微调 **(Adapter-tuning)、**提示微调(Prompt-tuning)、**前缀微调(Prefix-tuning) 和 代理微调(Proxy-tuning
    2. 参数选择法(Parameter Selection Methods)
      1. 步骤:仅选择模型的一部分参数进行微调,而冻结其余参数
      2. 常见方法:BitFitChild-tuning 以及 FishMask
    3. 低秩适配法(Low-Rank Adaptation Methods)
      1. 步骤:通过低秩矩阵来近似原始权重更新矩阵,并冻结原始参数矩阵,仅微调低秩更新矩阵
      2. LoRA 是经典的低秩适配方法,后续有 AdaLoRA [52]、DyLoRA [42] 以及 DoRA [29] 等变体被提出,进一步改进了 LoRA 性能
  3. 参数附加法:
    1. 加在输入:
      1. 经典方法:Prompt-tuning
    2. 加在模型:
      1. Prefix-tuning
      2. Adapter-tuning
        1.
      3. AdapterFusion
        1. 先学习多个任务,对每个任务进行知识提取;再 “融合”(Fusion)来自多个任务的知识
    3. 加在输出:
      1. 代理微调(Proxy-tuning) [27] 提供了一种轻量级的解码时(Decoding-time)算法
  4. 参数选择法:
    1. 基于规则的方法(eg:Child-tuning )
      1. 法根据人类专家的经验,确定哪些参数应该被更新
    2. 基于学习的方法(eg:)
      1. 法在模型训练过程中自动地选择可训练的参数子集
  5. 低秩适配法:
    1. LoRA(Low-rank Adaptation, LoRA)
      1. 变体:
        1. 打破低秩瓶颈:ReLoRA [25] 提出了一种合并和重置(merge-and-reinit)的方法
        2. 动态秩分配:AdaLoRA [52] 通过将参数更新矩阵参数化为奇异值分解(SVD)的形式,再通过奇异值剪枝动态调整不同层中 LoRA 模块的秩
        3. 训练过程优化:DoRA (权重分解低秩适应) [29] 提出约束梯度更新,侧重于更新参数的方向变化。
  6. 基于LoRA插件的任务泛化:
    1. 在 LoRA 微调结束后,我们可以将参数更新模块 BA 从模型上分离出来,并封装成参数插件
  7. 实践与应用:
    1. PEFT 主流框架:目前最流行的 PEFT 框架是由Hugging Face 开发的开源库 HF-PEFT 2,它旨在提供最先进的参数高效微调方法
    2. HF-PEFT 框架使用
      1. 安装与配置:首先,在环境中安装 HF-PEFT 框架及其依赖项,主要是 Hugging Face 的 Transformers 库
      2. 选择模型与数据:根据任务需求,挑选合适的预训练模型,并准备相应的训练数据集
      3. 确定微调策略:选择适合任务的微调方法,例如 LoRA 或适配器技术
      4. 模型准备:加载预训练模型并为选定的微调方法进行配置,包括任务类型、推理模式、参数值等
      5. 模型训练:定义完整的训练流程,包括损失函数、优化器设置,并执行训练,同时可应用数据增强和学习率调度等技术
    3. PEFT相关技巧
      1. Prompt Tuning:
        1. num_virtual_tokens:表示为每个任务添加的 virtual tokens 的数量,也就是软提示的长度,该长度通常设置在 10-20 之间,可根据输入长度进行适当调节
        2. prompt_tuning_init:
        3. 表示 prompt 参数的初始化方式。可以选择随机初始化(RANDOM)、文本初始化(TEXT),或者其他方式。文本初始化方式下,可以使用特定文本对 prompt embeddings 进行初始化以加速收敛
      2. Prefix Tuning
        1. num_virtual_tokens:与 Prompt Tuning 中相同,表示构造的 virtual tokens 的数量,设置和 Prompt Tuning 类似
        2. encoder_hidden_size: 表示用于 Prefix 编码的多层感知机(MLP)层的大小,通常与模型的隐藏层大小相匹配。
      3. LoRA
        1. r: 秩的大小,用于控制更新矩阵的复杂度。通常可以选择较小的值如 4、8、16,对于小数据集,可能需要设置更小的 r 值。
        2. lora_alpha: 缩放因子,用于控制 LoRA 权重的大小,通常与 r 成反比,以保持权重更新的一致性
        3. lora_dropout: LoRA 层的 dropout 比率,用于正则化以防止过拟合,可以设置为一个较小的值,比如 0.01。
        4. target_modules: 指定模型中 LoRA 中要应用的模块,如注意力机制中的 query、key、value 矩阵。可以选择特定的模块进行微调,或者微调所有线性层。
    4. PEFT应用:
      1. 表格数据查询
      2. 表格数据分析

五、模型编辑

基本术语:

偏见:是指模型生成的内容中包含刻板印象和社会偏见等不公正的观点,

毒性:是指模型生成的内容中包含有害成分,

知识错误:则是指模型提供的信息与事实不符

重新预训练:是指使用矫正了偏见、祛除了毒性、纠正了知识错误的清洗后的数据对模型进行重新预训练

微调:则是在预训练模型的基础上,针对其错误进一步调整模型参数

模型编辑:基于知识的模型编辑(KME, Knowledge Model Editing)[25] 和知识编辑(KE, Knowledge Editing)[28] 等概念统一为模型编辑(ME, Model Editing)

知识点:有些研究用“编辑”(edit)[27] 或“事实”(fact)[17, 18] 来表示具体的编辑对象,本书将这些概念统一为“知识点”

元知识:是模型在进行编辑前可以利用的知识,包括优化器参数 [24]、超网络 [2, 19] 等多种形式。

元训练:元知识的训练过程被称为元训练,其目标是获得一个较好的元知识 ω,使得后续的每次编辑只需少量样本即可快速收敛

**被遗忘权(**RTBF,**Right to be forgotten)**3:是指在某些情况下,将某人的私人信息从互联网搜索和其他目录中删除的权利

  1. 模型编辑的性质:

    1. **准确性(****Accuracy):准确性衡量对某个知识点 k 的直接修改是否有效
    2. 泛化性(Generality):泛化性用来衡量编辑后模型能否适应目标问题 x**k 的其他表达形式,即判断模型在面对与 x**k 具有语义相似性的问题时,能否给出统一的目标答案 y**k
    3. 可迁移性(Portability):可迁移性是指编辑后模型将特定知识点 k 迁移到其它相关问题上的能力
    4. 局部性(Locality):局部性要求编辑后的模型不影响其他不相关问题的输出
    5. 高效性(Efficiency):高效性直接影响到模型编辑的可行性和实用性
  2. 常用数据集:

    1. zsRE 数据集

      1. 用于检查模型能否准确识别文本中的关系,以及能否根据新输入更新相关知识,从而评估模型编辑方法的准确性
    2. COUNTERFACT 数据集

      1. COUNTERFACT 能够评估模型对

        编辑后知识的理解和反应,进而衡量模型的泛化性局部性

  3. 模型编辑经典方法:

    1. 外部拓展法
      1. 知识缓存法附加参数法
    2. 内部修改法
      1. 元学习法定位编辑法
  4. 外部拓展法:

    1. 外部拓展法的核心思想是将新知识存储在附加的外部参数或外部知识库中,将其和原始模型一起作为编辑后模型
    2. 分类:
      1. 知识缓存法
        1. 组成:门控单元(判断输入问题与编辑缓存中的知识的相关程度)、编辑缓存(知识存储库)和推理模块(预测用户期望的结果)
      2. 附加参数法:
        1. 与参数高效微调中的参数附加方法类似,都是将外部参数插入到模型中的特定位置,冻结原始模型,只训练新引入的参数以修正模型输出
  5. 内部修改法:

    1. 内部修改法旨在通过更新原始模型的内部参

      数来为模型注入新知识

    2. 分类:

      1. 元学习法:
        1. 不足:该方法训练过程较为复杂,应用于大型模型时常常面临训练成本高的问题
      2. 定位编辑法:
  6. T-Patcher

    1. 其在模型最后一个 Transformer 层的全连接前馈层中添加额外参数(称为“补丁”),然后对补丁进行训练来完成特定知识的编辑
    2. 补丁的位置:
    3. 补丁的实现:
      1. 准确性
      2. 局部性
    4. 局限性:在不同模型架构上,其性能会有所波动;在批量编辑时,对内存的需求较高,可能限制其在资源受限环境下的应用
  7. ROME

    1. 因果跟踪实验
      1. 正常推理
      2. 干扰推理
      3. 恢复推理
    2. 阻断实验
      1. 确定键向量
      2. 优化值向量
      3. 插入知识
  8. 模型编辑的应用:

    1. 精准模型更新
    2. 保护被遗忘权
    3. 提升模型安全
      1. 祛毒
      2. 减弱偏见

六、检索增强生成

术语解析:

检索增强生成:这种从外部数据库中检索出相关信息来辅助改善大语言模型生成质量的系统被称之为检索增强生成(Retrieval-Augmented Generation,RAG)

检索增强生成(RAG)系统;是一个集成了外部知识库、检索器、生成器等多个功能模块的软件系统

  1. 组成:其通常集成了外部知识库Corpus)、信息检索器Retriever)、生成器Generator,即大语言模型)等多功能模块

  2. 优化:

    1. 检索器与大语言模型的协作:
      1. 黑盒增强
      2. 白盒增强
    2. 优化检索过程:
      1. 知识库构建
      2. 查询增强
      3. 检索起
      4. 检索效率
      5. 重排优化
    3. 优化增强过程:
      1. 何时增强
      2. 何处增强
      3. 多次增强
      4. 降本增效
  3. 检索增强生成框架:

    1. 黑盒增强模型
      1. 无微调架构:
        1. 检索器和语言模型经过分别独立的预训练后参数不再更新直接组合使用
        2. 这种架构对计算资源需求较低,方便实现且易于部署,适合于对部署速度和灵活性有较高要求的场景
      2. 检索器微调:
        1. 在检索器微调架构中,大语言模型的参数保持不变,仅用其输出指导检索器的微调
    2. 白盒增强模型
      1. 仅微调语言模型
        1. 仅微调语言模型指的是检索器作为一个预先训练好的组件其参数保持不变,大语言模型根据检索器提供的上下文信息,对自身参数进行微调
      2. 检索器和语言模型协同微调
        1. 在检索器和语言模型协同微调的架构中,检索器和语言模型的参数更新同步进行
        2. 优势:这种微调的方式使得检索器能够在检索的同时学习如何更有效地支持语言模型的需求,而语言模型则可以更好地适应并利用检索到的信息,以进一步提升 RAG 的性能。
  4. 知识检索

    1. 知识库构建:

      1. 数据采集及预处理
      2. 知识库增强:知识库增强是通过改进和丰富知识库的内容和结构,以提升其质量和实用性
        1. 查询生成:利用大语言模型生成与文档内容紧密相关的伪查询
        2. 标题生成:利用大语言模型为没有标题的文档生成合适的标题
    2. 查询增强:

      1. 查询语意增强

        1. 查询语义增强旨在通过同义改写多视角分解等方法来扩展、丰富用户查询的语义,以提高检索的准确性和全面性

          同义改写:通过将原始查询改写成相同语义下不同的表达方式,来解决用户查询单一的表达形式可能无法全面覆盖到知识库中多样化表达的知识

          多视角分解:多视角分解采用分而治之的方法来处理复杂查询,将复杂查询分解为来自不同视角的子查询,以检索到查询相关的不同角度的信息

      2. 查询内容增强

        1. 在通过生成与原始查询相关的背景信息和上下文,从而丰富查询内容,提高检索的准确性和全面性
  5. 检索器:

    1. 给定知识库和用户查询,检索器旨在找到知识库中与用户查询相关的知识文本
    2. 判别式检索器
      1. 判别式检索器通过判别模型对查询和文档是否相关进行打分
      2. 稀疏检索器:使用稀疏表示方法来匹配文本的模型
      3. 稠密检索器:利用预训练语言模型对文本生成低维密集的向量表示,通过计算向量间的相似度进行检索
        1. 交叉编码类(Cross-Encoder)、双编码器类(Bi-Encoder)
    3. 生成式检索器
      1. 通过生成模型对输入查询直接生成相关文档的标识符
  6. 检索效率增强:

    1. 相似度索引算法

      1. 基于空间划分的方法:将搜索空间划分为多个区域来实现索引,主要包括基于树的索引方法和基于哈希的方法两类
      2. 基于量化方法:过将高维向量空间划分为多个子空间,并在每个子空间中进行聚类得到码本和码字,以此作为构建索引的基础
      3. 基于图的方法:通过构建一个邻近图,将向量检索转化为图的遍历问题
    2. 常用软件库的介绍:

      1. Faiss4:由 Meta AI Research 开发,是一个专门优化密集向量相似性搜索和聚类的库

      2. 向量数据库是一种更全面的解决方案,它不仅包括相似度索引算法,还整合了数据存储、管理、分布式支持和安全性措施等多方面的功能

        向量数据库URLGitHub Star
        milvushttps://github.com/milvus-io/milvus28.4K
        typesensehttps://github.com/typesense/typesense19.0K
        qdranthttps://github.com/qdrant/qdrant18.9K
        chromahttps://github.com/chroma-core/chroma13.7K
        weaviatehttps://github.com/weaviate/weaviate10.4K
        pineconehttps://www.pinecone.io/×
  7. 检索结果重排

    1. 基于交叉编码的方法
      1. 基于交叉编码的重排方法利用交叉编码器(Cross-Encoders)来评估文档与查询之间的语义相关性
    2. 基于上下文学习的重排方法
      1. 基于上下文学习的方法是指通过设计精巧的 Prompt,使用大语言模型来执行重排任务
  8. 生成增强:

    1. 何时增强:判断大语言模型是否具有内部知识
      1. 外部观测法:直接询问/应用统计(反复询问)/构造伪训练数据统计量
      2. 内部观测法:检测模型内部神经元的状态信息
    2. 何处增强:
      1. 在输入端增强:
        1. 法直接将检索到的外部知识文本与用户查询拼接到 Prompt中,然后输入给大语言模型
      2. 在中间层增强
        1. 减少对模型输入长度****的依赖
        2. 这种方法需要对模型的结构进行复杂的设计和调整,无法应用于黑盒模型
      3. 在输出端增强
        1. 在输出端增强的方法利用检索到的外部知识对大语言模型生成的文本进行准**,是一种后处理的方法
    3. 多次增强
      1. 该方案将复杂问题分解为多个子问题,子问题间进行迭代检索增强,最终得到正确答案
      2. 分解式增强
        1. 分解式增强将复杂问题化整为零,降低了单次检索增强的难度。其性能很大程度上取决于子问题分解的质量
      3. 渐进式增强
        1. 这种渐进式的检索方法能够显著改善大语言模型对模糊问题的生成效果。然而,其需要进行多轮检索并生成多个答案路径,整个系统的计算量会随着问题复杂度呈指数级增长。此外,多轮的检索与生成不仅会带来显著的时间延迟,多个推理路径还为推理带来不稳定性,容易引发错误
    4. 降本增效
      1. 去除冗余文本
        1. Token 级别的方法,
        2. 子文本级别的方法以及
        3. 全文本级别的方法
      2. 复用计算结果
        1. 输入 Prompt 压缩KV-cache 机制
    5. 搭建简单的RAG系统:LangChain和LlamaIndex
    6. RAG典型应用:
      1. 智能体
      2. 垂域多模态模型增强
Logo

中国智能体开发者社区,聚焦智能体与大模型开发,提供前沿资讯、实用工具链、开源项目及行业案例。通过技术沙龙、开发者大赛等活动,促进经验交流与协作,助力开发者快速构建创新智能应用。

更多推荐