RAG - Chatbot
Fine-tuning vs RAG
核心诉求 - 实时更新知识库,不需要模型去深度探讨问题,使用已有知识经验去解答问题
Fine-tuning | RAG | |
---|---|---|
知识整合 | 直接把数据融入到模型参数 | 存储在外部知识库 |
知识更新 | 每次更新内容都需要重新训练模型,更新成本高 | 只需要在外部知识库插入记录,更新成本低 |
响应速度 | 很快,直接给出回答 | 现在外部知识库进行检索,然后再生成 |
实时更新 | 很难做到实时更新 | 外部知识库可以实时更新 |
人为干预 | 只能通过 Prompt 干预 | 可以通过外部知识库的语料和 Prompt 控制 |
领域定制 | 可以针对特定领域进行深度定制 | 依赖通用模型能力 |
适合使用 Fine-tuning 的场景
- 特定场景下的高一致性和定制化
- 数据量充足且稳定
- 训练 - 拥有高质量的对话原始数据
- 微调 - 基于现有对话数据做对话助手
- 强个性化需求
- 文言文的理解和输出 - 需要使用大量文言文语料微调后,才能满足需求
- 高速响应
- Fine-tuning 能够直接输出有效内容,而 RAG 需要先检索再生成
LLM
- LLM 针对输入是有长度限制的,计量单位为 Token(英文单词、英文短语、汉字)
- GPT-3.5 的最大 Token 数为 4K,包含了输入和输出的总和
架构
实现
Context
Framework
LlamaIndex
SSE vs WebSocket
HTTP Server-Sent Events - 流式对话
SSE | WebSocket | |
---|---|---|
通信方向 | 单向通信 | 双向通信 |
协议 | 基于 HTTP 协议 兼容性好,各种网关防火墙都支持 |
基于 WebSocket 协议 需要整条链路的网关都支持 WebSocket |
自动重连 | 自带重连机制 | 需要手动实现 |
性能 | 轻量,服务器资源占用低 | 每个应用都会占用一个 WebSocket 连接 |
浏览器支持 | 除 IE 外 | 基本都支持 |
All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.