大模型入门:从工作原理、提示词到 Embedding 与 RAG
大模型入门:从工作原理、提示词到 Embedding 与 RAG
- 前言
- 1. 从普通模型到大语言模型
- 1.1 模型究竟是什么
- 1.2 大语言模型“大”在哪里
- 1.3 自监督学习为什么重要
- 1.4 普通任务模型与 LLM 的区别
- 1.5 主流大语言模型
- 2. LLM 的主要能力
- 2.1 语言理解与创作
- 2.2 知识关联、逻辑与代码
- 2.3 多模态能力
- 2.4 大模型为什么仍需校验
- 3. 提示词不是“咒语”,而是任务说明书
- 3.1 好提示词解决的是信息不对称
- 3.2 用 CO-STAR 组织复杂提示词
- 3.3 少样本提示让模型看到目标形态
- 3.4 复杂问题要拆解,并要求可验证结果
- 4. 如何把 LLM 接入应用
- 4.1 API、SDK 与本地部署怎样选择
- 4.2 使用 API 和 SDK 完成调用
- 4.3 使用 Ollama 在本地运行开源模型
- 5. Embedding:把语义转换成可计算的向量
- 5.1 Embedding 模型与生成模型有什么不同
- 5.2 Embedding 的典型应用
- 5.3 主流 Embedding 模型
- 5.4 通过 API 和 SDK 获取文本向量
- 6. RAG:让模型基于外部知识回答
- 6.1 为什么仅调用原生 LLM 不够
- 6.2 知识库准备与查询流程
- 7. 从原生模型走向完整 AI 应用
- 7.1 为什么还需要 LangChain 一类框架
- 7.2 模型平台与选型思路
- 总结
前言
大语言模型已经从一个研究领域的概念,变成了可以直接接入应用的基础能力。聊天、总结、翻译、代码生成、图片理解,看上去是完全不同的任务,却可以由同一个模型完成。真正值得理解的问题不是“它能不能写一段话”,而是:它为什么能完成多种任务、回答是怎样生成的、如何稳定地向它描述任务,以及怎样把模型接入真实业务。
这篇文章从普通模型讲起,依次整理大语言模型的概念、能力、提示词技巧、接入方式、Embedding 模型和模型平台。内容只保留资料中的技术主线,广告、二维码和推广信息不纳入正文。
- 从“输入经过模型得到输出”理解模型的本质
- 理解神经网络、参数、自监督学习和语言模型
- 用结构化提示词减少任务歧义
- 通过 API、SDK 或本地部署把模型接入程序
- 使用 Embedding 和 RAG 补充私有知识与最新信息
1. 从普通模型到大语言模型
1.1 模型究竟是什么
**模型是一个从数据中学习输入与输出关系的数学系统。**训练过程负责调整内部参数,推理过程则使用已经学到的参数处理新输入。
例如,给模型多组数据,让它找出输入和输出之间的规律;当再次输入[8, 9, 10]时,它可以根据已经学到的“输出中间数字”规律预测出9。实际模型当然复杂得多,但核心没有改变:训练是从大量样本中找到可以泛化的规律。
传统机器学习模型通常围绕一个明确任务构建,例如判断邮件是否为垃圾邮件、预测明天是否下雨、识别图片中是否有某个物体。它们往往依赖专门的数据、特征设计和任务标签,因此能力边界也比较清晰。
1.2 大语言模型“大”在哪里
大语言模型的英文是Large Language Model,简称LLM。它是基于大规模神经网络、通过自监督或半监督方式训练的语言模型,训练数据通常达到海量文本规模,参数规模也达到数十亿乃至万亿级别。
理解 LLM 需要先区分几个概念:
| 概念 | 含义 | 在 LLM 中的作用 |
|---|---|---|
| 神经网络 | 由多层计算单元组成的可训练函数 | 从输入中逐层提取并组合信息 |
| 参数 | 训练过程中被调整的数值 | 保存模型从数据中学到的统计规律 |
| 自监督学习 | 从数据本身构造训练目标 | 不依赖人工逐句标注即可利用海量文本 |
神经网络可以理解为由大量“神经元”和连接组成的多层决策系统;参数是模型从数据中学到的知识要点或内部规则。模型规模越大,通常可以表达更复杂的规律,但参数并不是一条条可以直接读取的知识记录。
1.3 自监督学习为什么重要
人工给互联网规模的文本逐句标注几乎不可能。自监督学习的关键价值,是直接从原始数据中构造训练任务。
自监督学习可以理解为“自己给自己出题”。模型面对没有标签的原始文本,随机遮住或预测其中的词,再根据上下文猜测答案,通过大量重复练习学习语法、词汇和上下文逻辑。半监督学习则是“少量指导加大量自学”:先用少量带标签数据让模型掌握基本规则,再使用海量无标签数据继续学习。
语言模型的核心任务是预测接下来最可能出现的词。一个词接着一个词地预测,就可以生成一段完整文本。因此,大语言模型可以理解为拥有大规模神经网络和参数的“超级自动补全系统”。
1.4 普通任务模型与 LLM 的区别
| 对比维度 | 传统任务模型 | 大语言模型 |
|---|---|---|
| 训练目标 | 围绕一个明确任务 | 通过海量文本学习通用语言规律 |
| 数据 | 常需要任务标签 | 大量使用无标签文本进行自监督训练 |
| 能力范围 | 边界窄但目标明确 | 可处理问答、总结、翻译、代码等任务 |
| 交互方式 | 固定字段或程序接口 | 可使用自然语言描述任务 |
| 主要特点 | 能力边界清晰 | 通用性强,可以迁移到多种任务 |
LLM 的通用性并不意味着“什么都真正懂”。更准确的说法是:规模化训练让模型形成了可迁移的语言和模式处理能力,人们可以用提示词把这种能力引导到不同任务上。
1.5 主流大语言模型
| 模型 | 提供方 | 主要特点 |
|---|---|---|
| GPT-5 | OpenAI | 支持长上下文,在多轮复杂推理和创意写作中表现突出 |
| DeepSeek R1 | 深度求索 | 开源,专注逻辑推理与数学求解,支持多语言 |
| Qwen2.5-72B-Instruct | 阿里巴巴 | 擅长代码生成、结构化数据处理和角色对话 |
| Gemini 2.5 Pro | 支持图像、代码和文本混合输入,适合多模态任务 |
2. LLM 的主要能力
2.1 语言理解与创作
大模型能够理解上下文、情感和潜台词,并完成论文开头、投诉邮件、摘要、翻译等语言任务。它不是简单的关键词匹配,而是根据上下文生成相对完整的表达。
2.2 知识关联、逻辑与代码
大模型可以解释概念、比较不同知识体系,也可以根据自然语言描述生成代码和分析数学问题。它处理的不只是语言表面,还能在一定程度上处理编程语法、逻辑关系和多步骤推理。
2.3 多模态能力
支持多模态的模型可以同时处理文本和图片等输入,例如根据图片进行问答、完成创意设计或解析技术资料。它打破了纯文本交互的边界,让模型更接近人类综合感知信息的方式。
2.4 大模型为什么仍需校验
原生 LLM 仍然存在输入长度限制、缺乏私有知识、复杂任务处理能力有限和输出格式不完全可控等问题。模型训练数据也有截止时间,不能天然知道企业内部文档或最新政策。因此,真实应用需要通过检索、格式约束、后处理和人工审核补足这些限制。
所以,生产系统不能把 LLM 当成绝对可信的数据库或计算器。更稳妥的做法是提供证据、限制输出格式、验证关键结果,并在高风险场景保留人工审核。
3. 提示词不是“咒语”,而是任务说明书
3.1 好提示词解决的是信息不对称
模型看不到你的真实意图,只能使用当前上下文中的信息。模糊提示词的问题不是“不够高级”,而是缺少任务背景、成功标准和输出约束。
例如,“我该怎么吃才能更健康?”属于模糊、低效的提问。更清晰的写法,是先设定角色、约束、用户信息、任务目标和输出格式:角色是基于科学证据的 AI 营养顾问;建议只能作为通用健康信息,不能替代专业诊断;用户信息包括年龄、性别、减脂增肌目标、久坐和每周三次力量训练;回答要先给免责声明,再给核心原则、分餐建议和两种健康零食,并避免推荐具体保健品或药物。这样模型才能明确“在什么背景下、完成什么目标、用什么形式回答”。
3.2 用 CO-STAR 组织复杂提示词
CO-STAR 是一种结构化提示词框架,可以帮助我们检查任务信息是否完整:
| 模块 | 含义 | 要回答的问题 |
|---|---|---|
Context | 背景与上下文 | 模型需要知道哪些事实和前提 |
Objective | 核心目标 | 最终要完成什么任务 |
Steps | 执行步骤 | 是否需要按固定流程处理 |
Tone | 语言风格 | 输出应当正式、简洁还是亲切 |
Audience | 目标读者 | 内容写给谁,他们了解多少 |
Response | 输出形式 | 需要表格、JSON、代码还是自然语言 |
并不是每个简单问题都要机械写满六项。CO-STAR 更适合作为检查清单:当回答偏离预期时,可以回头判断缺失的是背景、目标、步骤还是输出约束。
3.3 少样本提示让模型看到目标形态
如果任务有固定标签、特殊格式或难以用一句话描述的风格,可以提供少量“输入 - 输出”示例,也就是Few-shot Prompting。一个简单例子是:示例2 🦜 3 = 5、4 🦜 7 = 11,再让模型回答2 🦜 9;更完整的例子是先给出“笔记本电池续航差”和“客服快速解决激活问题”的反馈及分析,再要求模型分析“耳机左边没有声音”的反馈。
示例的作用是给模型展示标签边界、概括方式和输出格式。示例必须具有代表性,错误或互相矛盾的示例反而会降低稳定性。
3.4 复杂问题要拆解,并要求可验证结果
对于数学、逻辑和多步骤规划,可以使用思维链提示。一个典型问题是:16 个球中一半是高尔夫球,其中一半的高尔夫球是蓝色,直接回答容易得到错误的 8;要求模型一步步推理后,才能得到正确的 4。Few-shot-CoT会同时提供问题、答案和推导过程;Zero-shot-CoT则是在问题末尾加入“请一步步进行推理并得出结论”。
还可以使用“自我批判与迭代”:先让模型编写一个计算列表最大值的 Python 函数,再从空列表处理、变量命名和代码结构等角度审查,并给出优化后的版本。实际使用时,可以组合 CO-STAR、少样本、思维链和自我审查,让模型先生成,再检查和优化。
4. 如何把 LLM 接入应用
4.1 API、SDK 与本地部署怎样选择
LLM 的常见接入方式包括远程 API、官方 SDK 和开源模型本地部署。严格来说,SDK 通常是 API 的编程语言封装,并不是完全独立的推理来源。
| 维度 | 云端 API / SDK | 本地部署 |
|---|---|---|
| 上线速度 | 快,适合原型和业务集成 | 较慢,需要部署推理服务 |
| 硬件 | 无需自购 GPU | 需要匹配模型规模的 CPU、内存和 GPU |
| 数据边界 | 数据会发送到服务端,需审查供应商条款 | 可完全保留在内部网络 |
| 运维 | 服务商负责模型基础设施 | 团队负责驱动、模型、并发和监控 |
| 定制能力 | 受服务商接口限制 | 可选择、量化或微调开源模型 |
| 成本结构 | 通常按 Token 或请求计费 | 前期固定成本高,规模扩大后需单独测算 |
初创项目和功能验证通常从 API 开始更实际;严格隐私、离线环境或深度定制场景更适合本地部署。不要只比较单次调用价格,还要计算工程人力、GPU 利用率、扩缩容和故障恢复成本。
4.2 使用 API 和 SDK 完成调用
API 接入的典型流程是注册账号、获取 API Key、查阅请求参数、构造 HTTP 请求并解析 JSON 响应。以 OpenAI Responses 接口为例,调用命令如下。运行前需要配置OPENAI_API_KEY,不要把真实密钥写进代码或提交到仓库。
curl"https://api.openai.com/v1/responses"\-H"Content-Type: application/json"\-H"Authorization: Bearer$OPENAI_API_KEY"\-d'{ "model": "gpt-5", "input": "Write a one-sentence bedtime story about a unicorn." }'如果不想手动构造 HTTP 请求,可以安装官方 Python SDK:
pipinstallopenaiopenai用于封装 HTTP 请求和响应解析;SDK 方式相较于直接构造请求更简洁,也更符合 Python 的编程习惯。完整示例如下:
fromopenaiimportOpenAI client=OpenAI(api_key="your-api-key")response=client.responses.create(model="gpt-5",input="介绍一下你自己。")print(response.output_text)4.3 使用 Ollama 在本地运行开源模型
Ollama 适合个人开发和本地验证。安装后,可以从模型库拉取并运行一个与机器配置匹配的模型:
ollama run deepseek-r1:1.5b模型名后的1.5b表示大约十亿级参数规模。参数更多通常意味着更高的能力上限,也会增加内存、显存和推理时间,但参数规模不是效果的唯一决定因素。
Ollama 默认提供本地 HTTP 服务,可以这样调用:
curl"http://127.0.0.1:11434/api/chat"\-d'{ "model": "deepseek-r1:1.5b", "messages":[ {"role": "user", "content": "夸夸我"} ], "stream": false }'本地部署需要准备足够的 CPU、内存和 GPU,并选择推理框架。除了适合快速入门的 Ollama,还可以使用强调高吞吐量的 vLLM、Hugging Face 推出的 TGI,以及带有图形界面的 LM Studio。
5. Embedding:把语义转换成可计算的向量
5.1 Embedding 模型与生成模型有什么不同
**Embedding 模型把文本、图片或其他对象映射成数值向量,使语义关系可以通过数学距离进行比较。**它的主要输出是向量,不是自然语言回答。
生成模型与 Embedding 模型都可能使用向量表示,但目标不同:
| 模型类型 | 输入 | 输出 | 主要用途 |
|---|---|---|---|
| 生成模型 | 提示词和上下文 | 新生成的 Token 序列 | 问答、写作、总结、代码生成 |
| Embedding 模型 | 文本或其他对象 | 固定维度的浮点数向量 | 语义搜索、聚类、推荐、RAG |
如果两个文本语义接近,它们的向量通常也会更接近。例如“笔记本电脑无法充电”和“电源接上后电池没有反应”没有多少相同关键词,但 Embedding 模型仍可能把它们映射到相近区域。
向量是数学形式的数据,因此可以通过向量之间的相似度来度量语义是否接近。
5.2 Embedding 的典型应用
- 语义搜索:按含义而不是精确关键词检索文档
- RAG:先检索相关资料,再让 LLM 基于资料回答
- 推荐系统:比较用户偏好向量与内容向量
- 异常检测:识别远离正常向量分布的数据点
这些应用背后的共同思路是:先把难以直接比较的对象转成向量,再使用相似度、距离或聚类算法处理。
5.3 主流 Embedding 模型
| 模型 | 提供方 | 主要特点 |
|---|---|---|
text-embedding-3-large | OpenAI | 默认维度 3072,可以降维;输入长度支持 8192 Token |
Qwen3-Embedding-8B | 阿里巴巴 | 开源,支持 100 多种语言和 32K 上下文,输出维度可配置 |
gemini-embedding-001 | 支持 100 多种语言,默认维度 3072,可以选择 1536 或 768 维 |
Embedding 模型可以参考 MTEB 评测进行比较,但最终仍要结合实际语义搜索任务验证效果。
5.4 通过 API 和 SDK 获取文本向量
闭源 Embedding 模型可以通过 API 接入。HTTP 示例是:
curlhttps://api.openai.com/v1/embeddings-H"Content-Type: application/json"-H"Authorization: Bearer$OPENAI_API_KEY"-d'{ "input": "Your text string goes here", "model": "text-embedding-3-small" }'响应中会返回浮点数列表形式的向量,以及模型和 Token 用量等元数据。也可以使用 SDK:
pipinstallopenai# 使用 OpenAI Python SDKfromopenaiimportOpenAIimportos# 1. 设置 API Keyclient=OpenAI(api_key="your-api-key")# 2. 准备输入文本text="这是一段需要转换为向量的文本。"# 3. 调用 APIresponse=client.embeddings.create(model="text-embedding-3-large",# 指定模型input=text,dimensions=1024# 可选:指定输出维度,例如从3072降维到1024)# 4. 获取向量embedding=response.data[0].embeddingprint(f"向量维度:{len(embedding)}")print(embedding)text-embedding-3-large的默认维度是 3072,也可以通过dimensions指定更低的输出维度。开源 Embedding 模型则可以下载到本地,用transformers等库加载推理。直接获取向量后,通常还要将向量存入 Chroma、Milvus、Pinecone 等向量数据库,供后续检索使用。
6. RAG:让模型基于外部知识回答
6.1 为什么仅调用原生 LLM 不够
假设员工询问“今年新增的带薪育儿假政策是什么”。通用 LLM 不知道企业内部刚更新的制度,即使回答得很流畅,也可能使用过时信息。把整套公司文档直接塞进提示词又会面临上下文长度、成本和噪声问题。
RAG 的全称是Retrieval-Augmented Generation,即检索增强生成。它把问题拆成两个职责:
- Embedding 与向量数据库负责从外部知识库中找证据
- LLM 负责根据问题和证据组织自然语言答案
6.2 知识库准备与查询流程
RAG 通常包含离线准备和在线问答两条流程。
| 阶段 | 步骤 | 目的 |
|---|---|---|
| 离线准备 | 加载文档、清洗、切分 | 把长文档变成适合检索的片段 |
| 离线准备 | 计算片段向量并写入向量库 | 建立可按语义查找的索引 |
| 在线问答 | 将用户问题转换成查询向量 | 让问题进入同一向量空间 |
| 在线问答 | 检索最相关的若干片段 | 找到可能支持答案的证据 |
| 在线问答 | 把问题与片段交给 LLM | 基于检索上下文生成回答 |
RAG 的流程可以用文字概括为:先将知识库文档切分并向量化,写入向量数据库;用户提问时,再将问题向量化,检索最相关的文档片段,最后把问题和片段一起交给 LLM 生成回答。这样可以提高回答的准确性和时效性。
7. 从原生模型走向完整 AI 应用
7.1 为什么还需要 LangChain 一类框架
原生 LLM API 本质上是一问一答的接口。面对需要分析文档、总结要点并生成结果等复杂任务,开发者需要自己拆解步骤、多次调用 API 并管理中间状态。LangChain 一类框架正是为了系统性解决这些问题而出现,同时也为不同 LLM、Embedding 模型和向量数据库提供较统一的接口。
7.2 模型平台与选型思路
Hugging Face 是知名的开源库和模型平台,提供 Transformer 模型、数据集、工具和 API,对 AI 研究者的重要性类似于 GitHub。ModelScope 是阿里巴巴达摩院推出的模型即服务共享平台,覆盖计算机视觉、自然语言处理和语音等多个领域,并为国内开发者和企业本地部署提供模型与工具链。
总结
大语言模型仍然是一个从数据中学习规律的模型。它通过大规模神经网络和参数学习语言规律,再根据提示词生成回答。海量自监督训练带来了语言、知识关联、代码和多模态能力,但原生模型仍会受到输入长度、知识时效、私有知识和输出格式等限制。
有效使用 LLM 的关键,是把提示词写成清晰的任务说明书:补全背景、目标、步骤、受众和输出形式;在复杂任务中提供示例、拆分步骤,并要求可以验证的中间结果。把模型接入应用时,可以根据交付速度、隐私、运维和成本在 API、SDK 与本地部署之间选择,同时做好密钥管理、超时重试、日志脱敏和结果校验。
当问题涉及私有知识或最新资料时,Embedding 可以把语义转换为可比较的向量,RAG 则进一步完成“检索证据,再基于证据生成答案”的闭环。理解这条从 LLM、提示词、接入方式到 Embedding 与 RAG 的链路,才算真正迈入大模型应用开发,而不只是停留在聊天工具的使用层面。
