图解【提示工程 VS 微调 VS RAG、全量微调 VS LoRA微调、TopK VS TopP】截图笔记


一、RAG流程

RAG实战中难以解决的问题点:

  1. 如何读取文档
  2. 如何分块
  3. 如何进行词嵌入编码成向量的形式
  4. 用户的问题的理解与词嵌入编码
  5. 如何在向量数据库中根据问题向量检索知识向量
  6. 检索到的结果排序
  7. 根据【结合问题和检索结果context】构建提示工程
  8. 将7给大模型,给多大的大模型?给哪个大模型?等等等。。。
  9. 产出的回答response给用户
    在这里插入图片描述

二、提示工程 VS 微调 VS RAG

在这里插入图片描述

三、全量微调 VS LoRA微调

  1. LoRA论文:LoRA: Low-Rank Adaptation of Large Language Models
    Rank对应到视频里的k, k越小需要训练的参数就越少。
  2. Transformer的参数主要由很多矩阵来构成,比如multi-head attention里的矩阵,还有FFN里的矩阵等; 当我们使用LoRA的时候,可以选择性地对某一些矩阵进行改变,这部分可以在config里面进行设置。
  3. 矩阵的乘法:要保证维度的一致性,比如一个矩阵W是M乘N的,那这时候A必须是M乘K, B是K成N,这样才能保证乘出来的大小为M乘N。
  4. 视频里的K我们也称之为rank(秩),像这种M=AB,low rank factorization方法经常也在推荐领域使用。
    在这里插入图片描述

四、微调 VS RAG 使用场景

在这里插入图片描述
在这里插入图片描述

四、GraphRAG

微软提出的GraphRAG项目备受关注。该项目的主要目的是通过改进信息检索和整理的方式,提升企业知识库的实用性和响应速度。GraphRAG的核心理念在于提前整理和构建知识图谱,并将信息关联起来,以便于快速回答具体或宏观的问题。

传统上,RAG(Retrieval-Augmented Answer Generation)方法在处理具体问题时表现良好,能够直接在知识库中检索出包含答案的段落,并进行融合生成回答。然而,对于宏观问题,如团队成就调查,RAG的效率和准确性则较差。这些问题要求获取散落在不同文档中的信息,并整合为连贯的答案。

GraphRAG通过构建知识图谱,将企业知识库中的相关信息进行分类和关联形成层次结构。这种结构使得回答问题时,可以依据信息的相关性和层次性快速定位答案。同时,GraphRAG还引入了社区挖掘算法,进一步优化信息关联和聚合的过程。

尽管GraphRAG具有显著的潜力,但其实际应用仍面临挑战。首先是知识图谱的构建,这一过程需要大量的人工干预以去除噪声和进行校正。其次是计算资源的消耗,特别是在处理大型知识图谱时,计算复杂度较高。最后,新数据的加入需要频繁更新知识图谱,这可能要求从零开始构建整个图谱,带来额外的计算负担。

综上所述,GraphRAG提供了一种将传统RAG与现代知识图谱相结合的新路径,有望大幅提升企业知识库的实用性和响应效率。尽管面临一些技术挑战,但该项目的潜力不容忽视。
在这里插入图片描述

五、TopK VS TopP

  • 🔢 TopK选取最高概率的前K项,减少不确定性。
  • ⭕️ TopP依据累计概率筛选出符合条件的所有选项,提供更大的灵活性。
  • 🔄 TopK固定预设值,而TopP则可根据需求动态调整范围。
    在这里插入图片描述

七、RLHF

技术原文:Training language models to follow instructions with human feedback

  • RLHF中对齐过程使用的是PPO,是强化学习方法,而且PPO过程依赖于奖励模型。这种训练方式其实很有挑战,一方面奖励模型很关键但又很难训练,另外在强化学习阶段很多参数需要调整,而且过程容易跑偏。
  • 所以也有一些替代技术,比如DPO,相比PPO 更容易训练,而且不需要奖励模型。
    在这里插入图片描述

八、自注意力机制(Self-Attention)

在这里插入图片描述

reference: https://space.bilibili.com/472543316

要将LLAMA 3.1微调模型整合到RAG(Retrieval-Augmented Generation)框架中,你需要做以下几个步骤: 1. **模型准备**: - 确保你已经下载并微调了一个适用于RAG的LLAMA 3.1模型。这通常涉及在大规模文本数据上训练一个Transformer模型,使之能够理解上下文并生成相关的回答。 2. **获取模型组件**: - 获取微调后的模型(可能是tokenizer, model, 或者是一个封装好的RAGModel),它们通常可以从Hugging Face Hub或者其他托管平台获取。 3. **模型集成**: - 如果你已经有了Hugging Face `transformers`库中的`RagTokenizer`和`RagModel`,你需要替换掉原来的生成器部分,将其与你的微调模型结合起来。这通常是通过传递自定义的`RagSequenceForGeneration`子类,并在其中设置合适的model和tokenizer属性。 ```python class CustomRagModel(RagSequenceForGeneration): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.model = YourTrainedLlama3_1Model # 替换为你的微调模型 rag_tokenizer = RagTokenizer.from_pretrained('path_to_your_trained_tokenizer') rag_model = CustomRagModel( model=YourTrainedLlama3_1Model, # 替换为微调后的模型实例 tokenizer=rag_tokenizer, generator_config=self.config.generator_config, ) ``` 4. **更新查询引擎**: - 如果之前使用的是HuggingFaceLLM,那么在查询引擎的部分,你可以直接用`CustomRagModel`替代。 5. **查询和生成**: - 在查询阶段,使用`rag_model.generate()`而不是之前的`query_engine.query()`,输入查询文本,然后从生成的结果中选择最相关的内容作为回答。 记得替换上述代码中的`YourTrainedLlama3_1Model`和`'path_to_your_trained_tokenizer'`为你实际训练和保存的微调模型和tokenizer的路径。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值