大模型学习笔记

65 阅读6分钟

公司私有数据大模型应用方案

1. RAG(Retrieval Augmented Generation)

1)工作原理

  • RAG 通过从外部知识库中检索相关信息,并将其作为提示输入给大型语言模型(LLMs),以增强模型处理知识密集型任务的能力,可用于问答、文本摘要、内容生成等场景。

2)关键流程

  • 检索:从预先建立的知识库中检索与问题相关的信息,为后续生成过程提供上下文信息和知识支撑。
  • 增强:将检索到的信息用作生成模型的上下文输入,增强模型对特定问题的理解和回答能力,使生成的文本更丰富、准确且符合用户需求。
  • 生成:结合 LLM 生成符合用户需求的回答。生成器利用检索到的信息作为上下文输入,通过大语言模型生成文本内容。
graph TD
subgraph 初始化阶段
    A[构建知识库] --> A1[收集原始数据:文档/网页/数据库等等]
    A1 --> A2[数据预处理:清洗/去重/格式统一]
    A2 --> A3[文本切片-Chunk:按语义拆分段落/句子]
    A3 --> A4[向量转换:用Embedding模型生成向量]
    A4 --> A5[存储向量:存入向量数据库-Vector Database]
end
subgraph 运行阶段
    B[用户输入查询] --> B1[查询预处理:分词/纠错]
    B1 --> B2[查询向量转换:生成查询Embedding]
    B2 --> C[检索相关知识]
    A5 --> C
    C --> C1[向量相似度匹配如:余弦距离\余弦相似度]
    C1 --> C2[筛选Top N相关片段]
    C2 --> D[构建上下文]
    B --> D
    D --> D1[整合查询+检索结果]
    D1 --> D2[生成结构化Prompt]
    D2 --> E[大语言模型生成]
    E --> E1[基于上下文生成回答]
    E1 --> E2[附加知识来源标注]
    E2 --> F[输出最终结果给用户]
end

3)相较于微调和训练自有模型的优势

  • 知识更新便捷及时:RAG 只需更新外部知识库,就能快速引入最新知识和信息,成本低且效率高。而微调的知识更新依赖于训练集,训练完成后模型知识就固定了,若要更新需重新训练,耗时较长。自研大模型同样面临知识更新困难的问题,需要重新训练整个模型,成本高昂且周期长。
  • 知识掌控力强:RAG 对知识的管理和控制更灵活,不用担心模型遗忘或学不到某些知识的问题,只要知识库中有相关信息,就能准确检索并生成回答。微调后的模型可能会因为过度训练而丧失常识,自研大模型也可能存在对某些知识覆盖不全或遗忘的情况。
  • 生成答案更准确稳定:RAG 通过检索相关知识并与语言模型结合,能显著提升答案的准确性和稳定性,尤其在处理知识密集型任务时表现更优。比如专业领域的问答系统,RAG 可以更好地结合事实和数据,生成更可靠的答案。微调在一些简单任务上可能表现较好,但在复杂的知识密集型任务中,其准确性可能不如 RAG。自研大模型虽然理论上可以通过大量数据训练提高准确性,但实际应用中可能受限于训练数据的完整性和模型的泛化能力。
  • 避免模型幻觉:RAG 引入外部知识库的信息进行验证,能有效避免模型生成与事实不符或存在逻辑错误的内容,提高生成内容的真实性和可信度。微调模型生成的答案完全内生于参数中,难以验证来源,容易出现幻觉现象。自研大模型也需要花费大量精力和数据来解决幻觉问题,相比之下,RAG 在这方面具有天然的优势。
  • 可解释性强:RAG 生成的答案可以明确引用知识库中的来源,具有更高的透明度,用户可以清楚地了解答案的依据,增加对答案的信任度。微调后的模型和自研大模型通常被视为黑箱,用户难以知晓答案的具体生成依据。
  • 成本效益高:RAG 不需要重新训练模型,主要成本在于维护高质量的知识库系统,搭建 RAG 系统的成本可能只有微调的 1/5。自研大模型的研发成本更是极高,需要大量的算力、数据和专业人才,对于大多数企业和机构来说,门槛过高。

4)缺点

  • 对大模型依赖性强:RAG 对大模型的性能依赖程度较高,若大模型本身性能不佳,如在语言翻译任务中对某些专业领域的术语翻译不准确,整个 RAG 系统的效果就会大打折扣。
  • 处理复杂查询能力有限:对于模糊或不明确的查询,RAG 可能无法确定查询意图,导致结果不完整或不相关。对于复杂或多方面的查询,检索系统可能难以返回平衡的结果。例如,“AI 对就业和教育的影响” 这样的查询涉及多个主题,RAG 可能难以全面准确地回答。
  • 存在知识切片和整合问题:在知识切片、向量化并存入向量索引库的过程中,可能存在内容缺失的情况,导致大模型回答问题时没有对应的知识依据。在检索片段整合过程中,也可能因整合策略问题,出现内容缺失,影响回答的完整性和质量。

5)实现方式

  • FastGPT
  • LlamaIndex

2. 大模型微调(Fine-tuning)

  • 大模型微调(Fine-Tuning),简单说就是在预训练大模型(如 GPT-3.5、Llama 2)的基础上,用特定领域或任务的小数据集再次训练,让模型 “专项精进”,更贴合具体需求的技术过程。

1) 核心原理 “通用基础上补短板”

  • 预训练大模型已经通过海量通用数据(如全网文本、书籍)学会了语言逻辑、常识和基础能力,但面对垂直场景(如医疗术语、法律文书、企业内部流程)时,会存在 “知识不精准”“风格不匹配” 的问题。微调的本质就是:用少量目标场景数据,“微调” 模型的部分参数,让它在保留通用能力的同时,精准掌握特定场景的知识、规则或输出风格,避免 “从头训练” 的高成本。

2) 常见微调方式

  • 继续预训练(CPT/Continued Pre-Training): 用大量​​无标签领域文本​​继续自监督训练,增强领域语言与知识。

  • 监督微调(SFT, Supervised Fine-Tuning): 基于​​问答对/指令样本​​进行有监督训练,强化指令跟随与任务表现。

  • 偏好对齐(DPO, Direct Preference Optimization): 给出同一问题的​​好/坏答案​​对比,训练模型更符合​​人类偏好​​、减少幻觉与不当内容。

  • 参数高效微调(PEFT): ​​ LoRA/QLoRA/Prefix-tuning/Prompt-tuning​​仅训练少量新增或可训练参数,显著降低​​显存/算力​​需求,适合资源受限场景。

  • 全参数微调(Full Fine-tuning): 更新​​全部参数​​,效果通常最好,但​​资源消耗大​​,适合数据充足与追求极致性能的场景。

3) 实现方式

  • LlamaFactory

3. 训练自有模型

需要大量的算力和数据支持,适合对数据安全和隐私性要求高的场景。