第7章:大语言模型(LLM)

大语言模型(Large Language Model,LLM)是近年来人工智能领域最重要的突破之一。本章将深入探讨LLM的核心技术,包括预训练与微调、提示工程、RAG架构以及模型对齐技术。

7.1 预训练与微调

大语言模型的训练通常分为两个阶段:预训练(Pre-training)和微调(Fine-tuning)。理解这两个阶段的区别对于掌握LLM的工作原理至关重要。

7.1.1 主流大语言模型介绍

以下是当前主流的大语言模型:

模型 开发机构 参数量 特点
GPT-4 OpenAI 未公开(估计1.8T) 多模态能力强,推理能力优秀
LLaMA 2/3 Meta 7B-70B/400B 开源可商用,社区生态丰富
ChatGLM 智谱AI 6B-130B 中文优化好,支持长上下文
Claude Anthropic 未公开 安全性高,长文本处理能力强
文心一言 百度 未公开 中文理解能力强,知识图谱融合
通义千问 阿里巴巴 7B-110B 开源版本优秀,多语言能力

7.1.2 预训练阶段

预训练是在大规模无标注文本数据上进行的无监督学习过程。模型通过学习预测下一个词(Next Token Prediction)来掌握语言的基本规律和世界知识。

预训练的核心特点:
  • 数据规模:通常使用TB级别的文本数据(网页、书籍、代码等)
  • 计算资源:需要数千个GPU/TPU,训练成本高昂
  • 学习目标:自监督学习,无需人工标注
  • 输出能力:获得通用语言理解和生成能力

7.1.3 微调阶段

微调是在预训练模型的基础上,使用特定任务的标注数据进行进一步训练,使模型适应具体的应用场景。

预训练 vs 微调对比:
维度预训练微调
数据量TB级MB-GB级
数据类型无标注有标注/对话数据
训练成本数百万美元数千-数十万美元
训练时间数周-数月数小时-数天
目的通用能力特定任务/对齐

7.1.4 高效微调技术(PEFT)

由于全参数微调成本高昂,研究者提出了多种参数高效微调方法:

  • LoRA(Low-Rank Adaptation):只训练低秩矩阵,冻结原模型参数
  • Adapter:在Transformer层中插入小型适配器模块
  • Prefix Tuning:训练前缀嵌入向量
  • Prompt Tuning:优化软提示(Soft Prompts)

7.2 提示工程(Prompt Engineering)

提示工程是通过设计高质量的输入提示(Prompt),引导大语言模型产生期望输出的技术。掌握提示工程技巧可以显著提升模型的表现。

7.2.1 零样本提示(Zero-Shot)

零样本提示是指不给模型任何示例,直接描述任务要求。

零样本提示示例
请将以下中文翻译成英文:
"人工智能正在改变我们的生活方式。"
零样本提示技巧:
  • 使用明确的指令词(翻译、总结、分类等)
  • 指定输出格式(JSON、Markdown、列表等)
  • 设定角色或风格("你是一位资深翻译家")
  • 添加约束条件(字数限制、语气要求等)

7.2.2 少样本提示(Few-Shot)

少样本提示通过提供几个输入-输出示例,帮助模型理解任务模式。

少样本提示示例(情感分析)
请判断以下评论的情感倾向(正面/负面):

评论:这部电影太精彩了,值得二刷!
情感:正面

评论:剧情拖沓,演员演技一般。
情感:负面

评论:画面精美,但故事有些老套。
情感:
少样本提示最佳实践:
  • 提供3-5个高质量示例
  • 确保示例覆盖不同情况
  • 保持示例格式一致性
  • 示例应简洁明了,突出重点

7.2.3 Chain-of-Thought(思维链)

思维链提示是一种引导模型进行逐步推理的技术,通过在提示中展示推理过程,显著提升模型在复杂任务上的表现。

标准提示 vs 思维链提示
【标准提示】
问:一个果园有15棵苹果树,每棵树产40个苹果。如果其中3棵树
    因病减产一半,果园总共能收获多少苹果?
答:510

【思维链提示】
问:一个果园有15棵苹果树,每棵树产40个苹果。如果其中3棵树
    因病减产一半,果园总共能收获多少苹果?
答:让我逐步思考:
   - 正常产量的树:15-3=12棵,产12×40=480个苹果
   - 减产的一半:3棵,每棵产40÷2=20个,共3×20=60个
   - 总产量:480+60=540个苹果

思维链的变体包括:

  • Zero-Shot CoT:在问题后添加"Let's think step by step"
  • Self-Consistency:生成多条推理路径,投票选出最佳答案
  • Tree of Thoughts:构建思维树,探索多个推理分支

7.3 RAG(检索增强生成)

RAG(Retrieval-Augmented Generation,检索增强生成)是一种将外部知识检索与大语言模型生成相结合的技术,可以有效解决模型幻觉和知识时效性问题。

7.3.1 RAG架构和工作原理

RAG的基本流程包括三个步骤:

RAG处理流程:
  1. 索引(Indexing):将知识库文档切分并编码为向量,存储到向量数据库
  2. 检索(Retrieval):将用户查询编码为向量,检索最相关的文档片段
  3. 生成(Generation):将检索到的上下文与用户查询一起输入LLM生成答案
RAG简单实现示例(Python)
from langchain import OpenAI, VectorDBQA
from langchain.embeddings import OpenAIEmbeddings
from langchain.vectorstores import Chroma
from langchain.text_splitter import CharacterTextSplitter
from langchain.document_loaders import TextLoader

# 1. 加载和切分文档
loader = TextLoader("knowledge_base.txt")
documents = loader.load()
text_splitter = CharacterTextSplitter(chunk_size=1000, chunk_overlap=0)
texts = text_splitter.split_documents(documents)

# 2. 创建向量数据库
embeddings = OpenAIEmbeddings()
vectordb = Chroma.from_documents(texts, embeddings)

# 3. 构建RAG问答链
qa = VectorDBQA.from_chain_type(
    llm=OpenAI(),
    chain_type="stuff",
    vectorstore=vectordb
)

# 4. 查询
query = "公司的年假政策是什么?"
result = qa.run(query)
print(result)

7.3.2 向量数据库

向量数据库是RAG系统的核心组件,用于高效存储和检索高维向量。主流向量数据库包括:

数据库 特点 适用场景
Chroma 轻量级、易用、开源 原型开发、小型项目
Pinecone 托管服务、高性能 生产环境、大规模数据
Milvus 云原生、分布式 企业级应用
Weaviate GraphQL接口、模块化 复杂查询场景
Qdrant Rust编写、高性能过滤 需要过滤条件的场景

7.3.3 Embedding模型

Embedding模型将文本转换为向量表示,是RAG系统的关键。选择合适的Embedding模型对检索质量至关重要。

常用Embedding模型推荐:
  • OpenAI text-embedding-3:综合性能优秀,支持多语言
  • BGE(BAAI):开源中文效果最佳
  • M3E:专为中文设计的开源模型
  • E5:微软开源,英文效果优秀
  • GTE:阿里巴巴开源,多语言支持好
RAG优化技巧:
  • 文档切分策略:根据语义段落切分,保持上下文完整
  • 重排序(Rerank):使用交叉编码器提升检索精度
  • 混合检索:结合向量检索和关键词检索
  • 查询重写:扩展或改写用户查询以提高召回率

7.4 模型对齐技术

模型对齐(Alignment)是指使大语言模型的行为符合人类价值观和意图的技术。这是确保AI安全性和实用性的关键环节。

7.4.1 RLHF(基于人类反馈的强化学习)

RLHF是目前最主流的对齐技术,ChatGPT等模型都采用了这种方法。

RLHF三阶段流程:
  1. 监督微调(SFT):使用高质量对话数据对预训练模型进行微调
  2. 奖励模型训练:收集人类偏好数据,训练一个奖励模型来预测人类偏好
  3. 强化学习优化:使用PPO等算法,根据奖励模型的反馈优化策略
RLHF概念示意(简化版)
# 阶段1:监督微调(SFT)
sft_model = pretrain_model.fine_tune(dialogue_data)

# 阶段2:训练奖励模型
# 收集人类偏好数据:(prompt, chosen_response, rejected_response)
reward_model = train_reward_model(preference_data)

# 阶段3:RL优化(PPO)
for prompt in prompts:
    response = sft_model.generate(prompt)
    reward = reward_model(prompt, response)
    # 使用PPO算法更新模型,最大化奖励
    sft_model.update_ppo(reward)

7.4.2 SFT(监督微调)

SFT是RLHF的第一阶段,也是许多开源模型(如LLaMA-2-Chat)采用的主要对齐方法。

SFT数据构建要点:
  • 多样性:覆盖各种任务类型和领域
  • 质量:人工编写高质量回复
  • 格式:统一对话格式(如ChatML、Alpaca格式)
  • 长度:平衡长短对话样本

7.4.3 新兴对齐技术

除了RLHF,研究者还提出了多种新的对齐方法:

技术 核心思想 优势
DPO 直接偏好优化,无需奖励模型 更简单、训练更稳定
KTO 从二元反馈中学习 数据收集成本更低
Constitutional AI 用AI自我批评和修正 减少对人类标注的依赖
RLAIF 用AI替代人类进行反馈 可扩展性更强
ORPO 将SFT和偏好学习合二为一 训练效率更高
模型对齐的挑战:
  • 对齐税:过度对齐可能导致模型能力下降
  • 价值观冲突:不同文化背景的价值观差异
  • 越狱攻击:用户可能通过精心设计的提示绕过安全限制
  • 可解释性:难以理解模型为何会做出特定决策

7.5 本章小结

本章深入探讨了大语言模型的核心技术:

  • 预训练与微调:理解两阶段训练范式,掌握LoRA等高效微调技术
  • 提示工程:熟练运用零样本、少样本和思维链提示技巧
  • RAG:构建检索增强生成系统,解决知识时效性问题
  • 模型对齐:了解RLHF、DPO等技术,确保AI安全可控
实践建议:

建议读者动手实践RAG系统的搭建,尝试使用LangChain或LlamaIndex框架,结合开源Embedding模型和向量数据库,构建一个个人知识库问答系统。这将帮助你深入理解本章的理论知识。