向 GPT-3.5 灌入新知识是 企业级大模型应用落地 的核心之一:如何让 GPT-3.5 “懂你自己的知识”,即在不重新训练模型的前提下,让它回答基于私有数据的问题。
目前实现“向 GPT-3.5 灌入新知识”主要有两种方式:
RAG 技术
RAG(Retrieval-Augmented Generation,检索增强生成) 是目前大模型中最实用、最主流的“知识增强”技术之一。它的核心思想是:
不给模型“灌知识”,而是在生成时动态地“检索”外部知识,再让模型结合这些知识生成答案。
一、RAG 的核心问题:为什么要用它?
大语言模型(LLM)如 GPT、Claude、Gemini 等在训练时掌握了大量通用知识,但它们存在两个关键限制:
- 知识过时:模型训练数据的截止时间固定(比如 GPT-4 截止 2023 年)。
- 私有知识缺失:模型不知道你的企业内部文档、数据库、PDF 手册等内容。
传统做法是“微调(Fine-tune)”模型,但那:
- 成本高;
- 需要 GPU;
- 更新困难;
- 还容易造成模型“遗忘原有能力”。
👉 因此,更高效的做法就是 RAG:不改模型参数,而是在问答时动态补充知识。
二、RAG 的基本流程
RAG 系统一般包括以下 5 个步骤:
用户问题 → 向量化 → 检索相似内容 → 构造提示(Prompt) → 模型生成答案 下面逐步解析:
1. 用户提问
例如:
“公司的退货政策是怎样的?”
2. 向量化(Embedding)
使用嵌入模型(如 text-embedding-3-large 或 bge-large-zh)将用户问题转成一个高维向量。
例如:
[0.12, -0.03, 0.44, ...] 这个向量代表了问题的语义特征。
3. 检索(Retrieval)
在一个 向量数据库(如 Pinecone、Milvus、Faiss、Chroma)中查找最相似的文档段落。
这些段落通常是预处理时:
- 将公司文档分块;
- 为每个块计算 embedding;
- 存储到向量库。
输出结果可能是:
【命中文档】 1. 退货须在30天内凭订单号申请; 2. 特价商品不支持退货; 4. 构造 Prompt(Augment)将这些检索到的知识插入到模型提示中,形成一个完整上下文,例如:
你是一名客户支持机器人。 以下是公司的退货政策: 1. 退货须在30天内凭订单号申请; 2. 特价商品不支持退货。
问题:客户问“我上周买的折扣商品可以退吗?” 5. 模型生成答案(Generation)模型根据检索的知识和上下文生成答案,例如:
抱歉,折扣商品属于特价商品,暂不支持退货。
三、RAG 系统的架构示意
┌─────────────────────┐ │ 企业知识库(文档、FAQ)│ └─────────┬───────────┘ │分块 + 向量化 ▼ 向量数据库(如 Pinecone) ▲ │相似度检索 ┌──────────┴──────────┐ │ 用户问题 → 向量化 │ └──────────┬──────────┘ ▼ 模型生成答案(GPT) 四、RAG 的主要优势优势说明⚡ 实时可更新文档变更后,重新索引即可🧠 不修改模型无需重新训练,使用原生模型🧩 私有知识融合支持企业知识、数据库、API 等💰 成本低无需 GPU 微调,云端即可运行五、RAG 的关键技术组件组件常用方案说明Embedding 模型text-embedding-3-large, bge-large-zh用于文本向量化向量数据库Pinecone, Milvus, FAISS, Chroma用于存储与检索分块算法RecursiveTextSplitter, SemanticChunk控制检索粒度检索增强策略HyDE, ReRank, Multi-query提升召回与精度生成模型GPT-4, Claude 3, Qwen2.5最终回答输出六、RAG 的代码示例(Python + OpenAI + Chroma)“微调(Fine-tuning)”是让大模型(如 GPT-3.5、Llama、通义千问等)更符合你业务需求的核心手段之一。 下面我将从原理、类型、流程、数据格式、最佳实践与局限性六个方面,详细介绍微调机制。
from openai import OpenAI
from chromadb import Client
from chromadb.config import Settings
import numpy as np
client = OpenAI(api_key="your-api-key")
# 初始化向量数据库
chroma = Client(Settings(persist_directory="./chroma_db"))
collection = chroma.create_collection("docs")
# 向量化并入库
texts = [
"退货须在30天内凭订单号申请",
"特价商品不支持退货"
]
for t in texts:
emb = client.embeddings.create(model="text-embedding-3-large", input=t).data[0].embedding
collection.add(documents=[t], embeddings=[emb])
# 用户提问
query = "我买的折扣商品可以退货吗?"
query_emb = client.embeddings.create(model="text-embedding-3-large", input=query).data[0].embedding
# 检索相似内容
results = collection.query(query_embeddings=[query_emb], n_results=2)
context = "\n".join(results["documents"][0])
# 拼接 Prompt
prompt = f"根据以下信息回答:\n{context}\n\n问题:{query}"
# 生成答案
response = client.chat.completions.create(
model="gpt-4o-mini",
messages=[{"role": "user", "content": prompt}]
)
print(response.choices[0].message.content)微调一、什么是微调(Fine-tuning)定义:微调是指在预训练大模型的基础上,用自定义的数据对模型进行二次训练,使模型在特定领域或任务上表现更好。
简单说,就是让大模型“带着你的知识和风格再学一遍”,从而更懂你、说你想要的内容。
🌰 举个例子
原始 GPT-3.5 是通用模型,它知道很多知识,但不知道你的公司政策或品牌语气。 通过微调后,它可能变成:
一名客服助理,始终使用礼貌语气;一名法律顾问,严格基于法规回答问题;一名技术支持机器人,优先引用产品手册内容。
二、微调的核心原理
在预训练阶段,大模型学会了语言规律、语义关系、推理方式。 微调阶段只是让模型在你的数据上“再学习一点点”。
形式上:
- 微调不是重新训练;
- 只调整模型最后几层的参数(或低秩适配层,如 LoRA);
- 成本远低于从头训练。
三、微调的类型
四、微调的典型流程(以 GPT-3.5 为例)
Step 1:准备训练数据(JSONL 格式)
每一行是一条对话样本,格式如下:
{"messages":[ {"role":"system","content":"你是公司客服,语气礼貌。"}, {"role":"user","content":"我能退货吗?"}, {"role":"assistant","content":"您可以在购买后30天内退货,请提供订单号以便处理。"} ] } 示例训练集(data.jsonl)可包含上百条类似记录。
Step 2:上传训练数据
openai files create -p fine-tune -f data.jsonl Step 3:启动微调任务openai api fine_tunes.create -t "file-xxxxxxxxxxxx" -m "gpt-3.5-turbo" 等待任务完成后,你会得到一个新的模型 ID: ft:gpt-3.5-turbo:your-org:custom-model-2025-11-07
Step 4:使用微调后的模型
from openai import OpenAI
client = OpenAI(api_key="YOUR_API_KEY")
response = client.chat.completions.create(
model="ft:gpt-3.5-turbo:your-org:custom-model-2025-11-07",
messages=[
{"role": "user", "content": "我想了解退货政策"}
]
)
print(response.choices[0].message.content)
Step 5:评估与调优检查输出是否符合预期;如输出偏差大,可能需要:增加数据量;调整样本平衡;增加系统提示;再次微调。五、数据构造最佳实践项目建议数量50~10,000 条均可,小任务几百条已见成效多样性覆盖多种问法与场景一致性确保回复风格统一对话结构使用 role + content 明确语义上下文关联可使用多轮对话结构清洗去掉敏感信息与冗余标点示例(多轮对话):{"messages":[ {"role":"system","content":"你是客服助手。"}, {"role":"user","content":"我上次买的耳机坏了"}, {"role":"assistant","content":"很抱歉听到这个消息,请问是无法开机还是无声?"}, {"role":"user","content":"没声音"}, {"role":"assistant","content":"请尝试重新连接,如果仍无声音,可申请免费更换。"} ] } 六、微调与其他方式的区别方法是否训练模型优点缺点典型用途微调 (Fine-tuning)✅ 是高精度、固化风格成本高、更新慢固定客服、行业专用模型RAG 检索增强生成❌ 否实时更新、低成本依赖检索质量知识问答、文档助理系统提示(System Prompt)❌ 否快速简单容易被覆盖轻量角色设定七、微调的实际效果✅ 能实现:
- 固化语气、风格;
- 在封闭任务上显著提高准确率;
- 减少提示词复杂度;
- 提升一致性和鲁棒性。
🚫 不能实现:
- “长时记忆”或无限知识注入;
- 完全替代向量检索(RAG);
- 动态知识更新(需重新微调)。
八、微调 + RAG 的组合(最佳实践)
现代企业大多采用 Hybrid 方案:
┌──────────────┐ │ 微调模型 │ ← 固化语气、格式、逻辑 └──────┬───────┘ ↓ ┌───────────────────────────┐ │ RAG 检索层(企业知识库) │ ← 实时注入最新知识 └──────────────┬───────────┘ ↓ 用户对话应用层 即:
- 微调控制 “怎么说”;
- RAG 控制 “说什么”。
