欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 科技 > 名人名企 > LLM 核心技术说明(PROMPT/RAG/FineTuning)

LLM 核心技术说明(PROMPT/RAG/FineTuning)

2025/4/19 2:30:34 来源:https://blog.csdn.net/weixin_44714085/article/details/147066047  浏览:    关键词:LLM 核心技术说明(PROMPT/RAG/FineTuning)

LLM 核心技术说明

1. 提示词(Prompt)的应用

核心元素与设计方法
提示词是用户与 LLM 交互的核心媒介,其核心元素包括:

  1. 指令(Instruction):明确任务目标(如“生成摘要”、“分类情感”)。
  2. 上下文(Context):提供背景信息(如“根据以下法律条款回答”)。
  3. 示例(Examples):通过少量示例(Few-Shot)引导模型输出格式。
  4. 约束(Constraints):限制输出长度、格式或内容(如“输出 JSON 格式”)。

高效提示词设计案例

  • 场景:智能客服
    你是一名客服助手,根据用户问题提供专业回复。  
    用户问题:{query}  
    知识库上下文:{context}  
    要求:回答不超过 100 字,分点列出解决方案。  
    示例:  
    用户问:“订单未送达怎么办?”  
    回答:“1. 检查物流信息。2. 联系客服补发。3. 申请退款。”  
    
  • 优化技巧
    • 角色设定:明确模型身份(如“你是一名医生”)。
    • 格式约束:强制 JSON/XML 输出,便于后续解析。
    • 温度调节:高温度(如 0.8)用于创造性任务,低温度(如 0.2)用于确定性任务。
2. 检索增强生成(RAG)的应用

RAG 的定义与原理
RAG 通过外部知识库动态检索相关信息,将其作为上下文输入生成模型,解决 LLM 的静态知识局限。
实现步骤与场景案例

  1. 数据准备:构建领域知识库(如企业文档、最新新闻)。
  2. 检索器选择
    • 稠密检索:使用 Sentence-BERT 生成向量,存入向量数据库(如 Pinecone)。
    • 混合检索:结合 BM25(关键词匹配)和向量检索提升召回率。
  3. 生成器集成:将检索结果输入 LLM 生成最终答案。

场景案例:法律文档问答

  • 实现代码
    from langchain.retrievers import BM25Retriever, EnsembleRetriever  
    from langchain.vectorstores import FAISS  # 混合检索  
    bm25_retriever = BM25Retriever.from_texts(legal_docs)  
    vector_retriever = FAISS.from_texts(legal_docs, embeddings).as_retriever()  
    ensemble_retriever = EnsembleRetriever(  retrievers=[bm25_retriever, vector_retriever],  weights=[0.4, 0.6]  
    )  # RAG 生成  
    qa_chain = RetrievalQA.from_chain_type(  llm=Llama-2-13b,  retriever=ensemble_retriever,  chain_type="stuff"  
    )  
    answer = qa_chain.run("劳动合同解除的赔偿标准是什么?")  
    
3. 微调(Fine-Tuning)的应用

微调的定义与价值
微调通过在领域数据上继续训练预训练模型,使其适应特定任务(如医疗诊断、法律咨询)。
实现方法与场景案例

  1. 数据要求:数百至数千条标注数据(如问答对、分类标签)。
  2. 微调方法
    • 全量微调:更新所有参数,适合数据充足场景。
    • 参数高效微调(PEFT):如 LoRA(低秩适配),仅训练少量参数。

场景案例:医疗诊断辅助

  • 数据:脱敏的医患对话记录,标注疾病标签。
  • LoRA 微调代码
    from peft import LoraConfig, get_peft_model  
    from transformers import AutoModelForCausalLM  # 加载模型  
    model = AutoModelForCausalLM.from_pretrained("meta-llama/Llama-2-7b")  # 添加 LoRA 适配器  
    lora_config = LoraConfig(  r=8,  lora_alpha=32,  target_modules=["q_proj", "v_proj"]  
    )  
    model = get_peft_model(model, lora_config)  # 微调训练  
    trainer = Trainer(model, args, train_dataset=medical_data)  
    trainer.train()  
    
4. 预训练(Pre-training)的应用

预训练的定义与流程
预训练通过自监督学习(如掩码语言建模、下一句预测)在大规模无标注数据上训练模型,构建通用语言理解能力。
领域预训练的价值与挑战

  • 价值
    • 生物医学:学习专业术语(如“EGFR 突变”)和文献逻辑。
    • 金融:理解财报结构、市场趋势描述。
  • 挑战
    • 数据清洗:去除噪声(如 OCR 错误、非专业内容)。
    • 领域适应:平衡通用能力和专业术语理解。

场景案例:金融领域预训练

  • 数据:海量财报、新闻、分析师报告(10TB 级)。
  • 训练策略
    1. 分词优化:扩展词表加入金融术语(如“EBITDA”)。
    2. 渐进式训练:先通用语料(Wikipedia),后领域数据。
    3. 硬件需求:千卡 A100 集群,训练周期 1-3 个月。

总结与选型建议

技术适用场景优势局限性
提示词简单任务、快速原型开发零样本/少样本即可生效对复杂任务效果有限
RAG动态知识需求实时更新、无需重新训练依赖检索质量
微调领域高精度任务显著提升任务表现需标注数据、计算成本高
预训练领域数据垄断场景构建领域专属模型成本极高、周期长

选型策略

  • 通用问答:提示词 + RAG(如 ChatGPT + Pinecone)。
  • 高精度私有场景:LoRA 微调(如医疗诊断)。
  • 领域垄断数据:领域预训练(如金融风险模型)。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词