Fine-tuning vs RAG

核心诉求 - 实时更新知识库,不需要模型去深度探讨问题,使用已有知识经验去解答问题

Fine-tuning RAG
知识整合 直接把数据融入到模型参数 存储在外部知识库
知识更新 每次更新内容都需要重新训练模型,更新成本 只需要在外部知识库插入记录,更新成本
响应速度 很快,直接给出回答 现在外部知识库进行检索,然后再生成
实时更新 很难做到实时更新 外部知识库可以实时更新
人为干预 只能通过 Prompt 干预 可以通过外部知识库的语料Prompt 控制
领域定制 可以针对特定领域进行深度定制 依赖通用模型能力

适合使用 Fine-tuning 的场景

  1. 特定场景下的高一致性定制化
  2. 数据量充足稳定
    • 训练 - 拥有高质量对话原始数据
    • 微调 - 基于现有对话数据做对话助手
  3. 强个性化需求
    • 文言文的理解和输出 - 需要使用大量文言文语料微调后,才能满足需求
  4. 高速响应
    • Fine-tuning 能够直接输出有效内容,而 RAG 需要先检索生成

LLM

  1. LLM 针对输入是有长度限制的,计量单位为 Token(英文单词、英文短语、汉字)
  2. GPT-3.5 的最大 Token 数为 4K,包含了输入输出的总和

架构

image-20240903121555102

实现

Context

image-20240903122544420

Framework

LlamaIndex

star-history-framework

SSE vs WebSocket

HTTP Server-Sent Events - 流式对话

SSE WebSocket
通信方向 单向通信 双向通信
协议 基于 HTTP 协议
兼容性好,各种网关防火墙都支持
基于 WebSocket 协议
需要整条链路的网关都支持 WebSocket
自动重连 自带重连机制 需要手动实现
性能 轻量,服务器资源占用低 每个应用都会占用一个 WebSocket 连接
浏览器支持 除 IE 外 基本都支持