📌 1. LLM ------ Large Language Model(大型语言模型)
含义:
指参数量巨大(通常 > 1B)、基于 Transformer 架构训练的语言模型,如 GPT-3/4、Llama 系列、Qwen、ChatGLM 等。它们能完成文本生成、问答、翻译、推理等任务。
示例代码(使用 Hugging Face Transformers 加载本地 LLM):
python
from transformers import AutoTokenizer, AutoModelForCausalLM
# 加载模型和分词器(以 Qwen2.5 为例)
model_name = "Qwen/Qwen2.5-0.5B-Instruct"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(model_name, device_map="auto")
# 输入提示
prompt = "请用一句话介绍你自己。"
inputs = tokenizer(prompt, return_tensors="pt").to(model.device)
# 生成回复
outputs = model.generate(**inputs, max_new_tokens=50)
response = tokenizer.decode(outputs[0], skip_special_tokens=True)
print(response)
✅ 输出示例:
"我是一个由阿里巴巴云研发的超大规模语言模型,能够回答问题、创作文字、编写代码......"
📌 2. Prompt ------ 提示词
含义:
用户输入给 LLM 的指令或上下文,用于引导模型输出特定内容。Prompt Engineering 是优化提示以获得更好结果的技术。
示例代码(Few-Shot Prompting):
python
prompt = """
你是一个数学助手,请根据以下例子回答问题:
例1: 2 + 3 = ?
答: 5
例2: 7 * 8 = ?
答: 56
问题: 9 - 4 = ?
答:
"""
# 调用上面加载的 model 和 tokenizer
inputs = tokenizer(prompt, return_tensors="pt").to(model.device)
outputs = model.generate(**inputs, max_new_tokens=10)
print(tokenizer.decode(outputs[0], skip_special_tokens=True))
✅ 输出:
5
📌 3. MCP ------ Multi-Component Pipeline / Model Control Plane?(注:此处可能为笔误或非标准缩写)
⚠️ 注意:"MCP"在大模型领域并非通用术语。常见可能性包括:
- Multi-Component Pipeline:多组件流水线(如数据预处理 → 嵌入 → RAG → 生成)
- Model Control Plane:模型控制平面(管理多个模型部署与路由)
- 或者是 Mixture of Experts (MoE) 中的某个子模块?
📌 如果你指的是 MoE(Mixture of Experts),那它是 LLM 内部结构的一种设计,比如 Mixtral、Switch Transformer 使用稀疏激活专家网络提升效率。
MoE 简单示意(伪代码):
python
class MoELayer(nn.Module):
def __init__(self, num_experts=8, expert_dim=512):
super().__init__()
self.experts = nn.ModuleList([nn.Linear(512, expert_dim) for _ in range(num_experts)])
self.gate = nn.Linear(512, num_experts)
def forward(self, x):
gate_scores = torch.softmax(self.gate(x), dim=-1) # [batch, seq_len, num_experts]
outputs = []
for i, expert in enumerate(self.experts):
weighted_input = x * gate_scores[..., i:i+1]
outputs.append(expert(weighted_input))
return sum(outputs) # 加权求和
4. Agent ------ 智能体
含义:
具备自主决策能力的 AI 系统,可以调用工具、规划步骤、记忆历史、与环境交互。例如 AutoGPT、LangChain Agents、ReAct 框架。
示例代码(LangChain Agent + Google Search Tool):
bash
pip install langchain langchain-community google-search-results
python
from langchain.agents import initialize_agent, Tool
from langchain.llms import OpenAI
from langchain.utilities import GoogleSearchAPIWrapper
# 初始化搜索工具
search = GoogleSearchAPIWrapper()
tools = [
Tool(
name="Google Search",
func=search.run,
description="useful for when you need to answer questions about current events"
)
]
# 初始化 agent
llm = OpenAI(temperature=0)
agent = initialize_agent(tools, llm, agent="zero-shot-react-description", verbose=True)
# 执行查询
agent.run("今天北京天气怎么样?")
✅ 输出会显示 agent 如何思考并调用搜索引擎获取实时信息。
5. RAG ------ Retrieval-Augmented Generation(检索增强生成)
含义:
结合外部知识库(向量数据库)进行检索,再将检索结果作为上下文喂给 LLM 生成答案,解决幻觉问题、提高准确性。
示例代码(使用 FAISS + LangChain 实现简易 RAG):
bash
pip install langchain faiss-cpu sentence-transformers
python
from langchain.document_loaders import TextLoader
from langchain.text_splitter import CharacterTextSplitter
from langchain.embeddings import HuggingFaceEmbeddings
from langchain.vectorstores import FAISS
from langchain.chains import RetrievalQA
from langchain.llms import HuggingFacePipeline
# 1. 加载文档
loader = TextLoader("knowledge_base.txt")
documents = loader.load()
# 2. 分割文本
text_splitter = CharacterTextSplitter(chunk_size=500, chunk_overlap=50)
docs = text_splitter.split_documents(documents)
# 3. 创建嵌入 & 向量库
embeddings = HuggingFaceEmbeddings(model_name="sentence-transformers/all-MiniLM-L6-v2")
vectorstore = FAISS.from_documents(docs, embeddings)
# 4. 构建 QA 链
llm = HuggingFacePipeline.from_model_id(
model_id="Qwen/Qwen2.5-0.5B-Instruct",
task="text-generation",
pipeline_kwargs={"max_new_tokens": 128}
)
qa_chain = RetrievalQA.from_chain_type(llm, retriever=vectorstore.as_retriever())
# 5. 提问
query = "什么是量子纠缠?"
result = qa_chain.run(query)
print(result)
✅ 输出将基于你的
knowledge_base.txt文件内容生成准确回答。
📌 6. Embedding ------ 嵌入向量
含义:
将文本、图像等离散对象映射为连续向量空间中的点,便于相似度计算、聚类、检索等操作。常用模型有 BERT、Sentence-BERT、text-embedding-ada-002 等。
示例代码(使用 Sentence Transformers 生成句子嵌入):
python
from sentence_transformers import SentenceTransformer
model = SentenceTransformer('all-MiniLM-L6-v2')
sentences = ["猫坐在垫子上", "狗在公园里跑"]
embeddings = model.encode(sentences)
# 计算余弦相似度
from sklearn.metrics.pairwise import cosine_similarity
similarity = cosine_similarity([embeddings[0]], [embeddings[1]])
print(f"相似度: {similarity[0][0]:.4f}")
✅ 输出类似:
0.3215(表示两句语义有一定相关性但不高)
📌 7. LangChain ------ 大模型应用开发框架
含义:
一个开源框架,用于构建基于 LLM 的应用程序,支持链式调用、代理、记忆、工具集成等功能。
示例代码(简单 Chain:Prompt + LLM):
python
from langchain.prompts import PromptTemplate
from langchain.llms import HuggingFacePipeline
# 定义模板
template = """你是一个诗人,请写一首关于{topic}的五言绝句。
诗:"""
prompt = PromptTemplate(input_variables=["topic"], template=template)
# 加载模型
llm = HuggingFacePipeline.from_model_id(
model_id="Qwen/Qwen2.5-0.5B-Instruct",
task="text-generation",
pipeline_kwargs={"max_new_tokens": 64}
)
# 构建 chain
chain = prompt | llm
# 执行
response = chain.invoke({"topic": "春天"})
print(response)
✅ 输出示例:
春风吹柳绿, 花开满园香。 燕归巢未稳, 日落西山旁。
📌 8. vLLM ------ 高效推理引擎
含义:
由 UC Berkeley 开发的高性能 LLM 推理服务框架,采用 PagedAttention 技术大幅提升吞吐量和降低延迟,适合生产环境部署。
示例代码(启动 vLLM 服务器并调用 API):
Step 1: 安装 vLLM
bash
pip install vllm
Step 2: 启动服务器(终端运行)
bash
python -m vllm.entrypoints.api_server \
--model Qwen/Qwen2.5-0.5B-Instruct \
--host 0.0.0.0 \
--port 8000
Step 3: Python 客户端调用
python
import requests
url = "http://localhost:8000/generate"
payload = {
"prompt": "讲个笑话吧",
"max_tokens": 50,
"temperature": 0.7
}
response = requests.post(url, json=payload)
print(response.json()["text"])
✅ 输出:一个由模型生成的笑话 😄
📌 9. Token ------ 令牌 / 词元
含义:
LLM 处理文本的基本单位,可以是单词、子词、字符甚至字节。不同模型有不同的 tokenizer(如 BPE、WordPiece)。Token 数量直接影响成本和速度。
示例代码(统计 token 数):
python
from transformers import AutoTokenizer
tokenizer = AutoTokenizer.from_pretrained("Qwen/Qwen2.5-0.5B-Instruct")
text = "你好,世界!这是一个测试句子。"
tokens = tokenizer.encode(text)
print(f"原始文本: {text}")
print(f"Token IDs: {tokens}")
print(f"Token 数量: {len(tokens)}")
✅ 输出示例:
Token IDs: [151643, 190, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500] Token 数量: 358
📌 10. 数据蒸馏 ------ Data Distillation
含义:
通过小模型学习大模型的行为(输出分布、中间层特征等),从而压缩模型体积、加速推理,同时保留大部分性能。常用于移动端部署或边缘计算场景。
示例代码(知识蒸馏训练循环伪代码):
python
import torch
import torch.nn as nn
import torch.optim as optim
# 假设 teacher_model 和 student_model 已定义
teacher_model.eval()
student_model.train()
optimizer = optim.Adam(student_model.parameters(), lr=1e-4)
criterion_kd = nn.KLDivLoss(reduction='batchmean') # KL 散度损失
criterion_ce = nn.CrossEntropyLoss() # 交叉损失(可选)
T = 4 # 温度参数
alpha = 0.7 # 蒸馏权重
for batch in dataloader:
inputs, labels = batch
with torch.no_grad():
teacher_logits = teacher_model(inputs)
teacher_probs = torch.softmax(teacher_logits / T, dim=1)
student_logits = student_model(inputs)
student_log_probs = torch.log_softmax(student_logits / T, dim=1)
loss_kd = criterion_kd(student_log_probs, teacher_probs) * (T ** 2)
loss_ce = criterion_ce(student_logits, labels)
loss = alpha * loss_kd + (1 - alpha) * loss_ce
optimizer.zero_grad()
loss.backward()
optimizer.step()
✅ 此方法可用于将 Qwen-7B 蒸馏成 Qwen-0.5B,保持 90%+ 性能的同时减少 90% 参数量。
🧩 总结图谱(逻辑关系)
[User Prompt]
↓
[Agent] ←→ [Tools] (Search, DB, API...)
↓
[RAG] ←→ [Embedding] ←→ [Vector DB]
↓
[LLM] ←→ [vLLM] (高效推理)
↓
[Tokenization] → [Data Distillation] (压缩模型)
↑
[LangChain] (编排整个流程)
💡 进阶建议
如果你想进一步实践:
✅ 推荐项目方向:
- 用 LangChain + RAG 搭建个人知识库问答机器人
- 用 vLLM 部署自己的 LLM 服务
- 用 HuggingFace + LoRA 微调一个小模型做垂直领域任务
- 用 ReAct Agent 实现自动炒股分析助手