🤖 第1节 提示词和RAG原理分析

Prompt Engineering & Retrieval-Augmented Generation

📝 一、提示词工程(Prompt Engineering)

1.1 什么是提示词?

提示词(Prompt)是用户与大语言模型(LLM)交互的输入文本,它决定了模型的输出质量和准确性。优秀的提示词设计能够显著提升模型的表现。

核心原则:
  • 清晰性:明确表达意图,避免歧义
  • 具体性:提供足够的上下文和细节
  • 结构化:使用格式化的输入提高可读性
  • 示例驱动:通过Few-shot学习提供示例

1.2 提示词工程流程

graph LR A[用户需求] --> B[设计提示词] B --> C[模型推理] C --> D[生成输出] D --> E{评估质量} E -->|不满意| F[优化提示词] F --> B E -->|满意| G[最终结果] style A fill:#e1f5ff style G fill:#c8e6c9 style E fill:#fff9c4

1.3 提示词类型

Zero-shot 直接提问,无示例 Few-shot 提供少量示例 "" Chain-of-Thought 思维链推理 提示词复杂度递增 → 模型输出质量提升 →
""

🔢 二、Embedding(向量嵌入)

2.1 什么是Embedding?

Embedding是将文本、图像等数据转换为高维向量的技术,是计算机理解和处理语义信息的基础。通过Embedding,相似的内容在向量空间中距离更近。

💡 核心概念: Embedding是一种特征表达方式,将文本转换成向量(如1024维向量),用于表达语义信息。

2.2 Embedding工作原理

graph TB A[原始文本] --> B[Embedding模型] B --> C[向量表示] C --> D[向量数据库] E[查询文本] --> F[Embedding模型] F --> G[查询向量] G --> H[相似度计算] D --> H H --> I[检索结果] style A fill:#e1f5ff style E fill:#e1f5ff style I fill:#c8e6c9 style B fill:#fff9c4 style F fill:#fff9c4

2.3 推荐的Embedding模型

模型名称 特点 适用场景
Qwen3-Embedding-8B 高性能、多语言支持 通用场景,推荐首选
bge-m3 多语言、多粒度 跨语言检索
jina-embeddings-v4 套娃模型,灵活维度 需要不同维度的场景
m3e-base 中文优化 中文为主的应用

2.4 向量数据库

常用向量数据库:
  • FAISS:轻量级,适合10亿级数据,内存型向量数据库
  • Milvus:分布式,适合大规模生产环境
  • Chroma:易用,适合快速原型开发
  • Pinecone:云服务,开箱即用
# 安装FAISS pip3 install faiss-cpu --no-cache-dir # 基本使用示例 import faiss import numpy as np # 创建索引 dimension = 1024 index = faiss.IndexFlatL2(dimension) # 添加向量 vectors = np.random.random((1000, dimension)).astype('float32') index.add(vectors) # 搜索相似向量 query = np.random.random((1, dimension)).astype('float32') distances, indices = index.search(query, k=5)

🔍 三、RAG(检索增强生成)

3.1 什么是RAG?

RAG(Retrieval-Augmented Generation)是一种结合检索和生成的技术,通过从外部知识库检索相关信息,增强大语言模型的生成能力,解决模型知识过时、幻觉等问题。

💡 核心公式:
RAG = 检索(Embedding) + 提示工程 + 生成(LLM)

3.2 RAG完整流程

graph TB subgraph "阶段1: 文档处理(离线)" A[知识库文档] --> B[文档分割] B --> C[Chunk片段] C --> D[Embedding转换] D --> E[文档向量] E --> F[(向量数据库)] end subgraph "阶段2: 查询处理(在线)" G[用户问题] --> H[Embedding转换] H --> I[查询向量] I --> J[向量检索] F --> J J --> K[相关文档] K --> L[构建Prompt] G --> L L --> M[大语言模型] M --> N[生成答案] end style A fill:#e1f5ff style G fill:#e1f5ff style N fill:#c8e6c9 style F fill:#fff9c4 style M fill:#f06292

3.3 RAG两步流程详解

第一步:文档处理(预处理/索引阶段) 知识库文档 分割 文档片段 Embedding 文档向量 存储 向量数据库 第二步:查询处理(搜索/推理阶段) 用户问题 Embedding 问题向量 检索 相关文档 "" + 原始问题 大语言模型 (LLM) 最终答案 纯Embedding 完整RAG
""

3.4 RAG的优势

  • 知识更新:无需重新训练模型,只需更新知识库
  • 减少幻觉:基于真实文档生成答案,提高准确性
  • 可追溯性:可以追踪答案来源,增强可信度
  • 领域适应:轻松适配特定领域知识
  • 成本效益:比微调模型更经济高效

3.5 RAG vs 传统LLM

graph LR subgraph "传统LLM" A1[用户问题] --> B1[大语言模型] B1 --> C1[生成答案] D1[模型参数知识] -.-> B1 end subgraph "RAG系统" A2[用户问题] --> B2[检索系统] B2 --> C2[相关文档] C2 --> D2[大语言模型] A2 --> D2 D2 --> E2[生成答案] F2[(知识库)] --> B2 end style C1 fill:#ffcdd2 style E2 fill:#c8e6c9 style D1 fill:#fff9c4 style F2 fill:#bbdefb

🛠️ 四、实践应用

4.1 技术栈推荐

组件 推荐工具 说明
Embedding模型 Qwen3-Embedding-8B / bge-m3 高性能多语言支持
向量数据库 FAISS / Milvus FAISS适合原型,Milvus适合生产
大语言模型 GPT-4 / Claude / Qwen 根据需求选择
开发框架 LangChain / LlamaIndex 快速构建RAG应用

4.2 RAG实现示例

# RAG基础实现示例 from langchain.embeddings import HuggingFaceEmbeddings from langchain.vectorstores import FAISS from langchain.text_splitter import RecursiveCharacterTextSplitter from langchain.chains import RetrievalQA from langchain.llms import OpenAI # 1. 文档处理 documents = ["文档内容1", "文档内容2", "文档内容3"] text_splitter = RecursiveCharacterTextSplitter( chunk_size=500, chunk_overlap=50 ) chunks = text_splitter.create_documents(documents) # 2. 创建Embedding和向量库 embeddings = HuggingFaceEmbeddings( model_name="BAAI/bge-m3" ) vectorstore = FAISS.from_documents(chunks, embeddings) # 3. 创建检索链 llm = OpenAI(temperature=0) qa_chain = RetrievalQA.from_chain_type( llm=llm, chain_type="stuff", retriever=vectorstore.as_retriever(search_kwargs={"k": 3}) ) # 4. 查询 query = "用户问题" result = qa_chain.run(query) print(result)

4.3 优化策略

mindmap root((RAG优化)) 文档处理 合理分块大小 保留上下文 元数据标注 去重处理 检索优化 混合检索 重排序Rerank 多路召回 查询改写 生成优化 Prompt工程 上下文压缩 答案验证 引用标注 系统优化 缓存机制 异步处理 负载均衡 监控告警

4.4 常见问题与解决方案

问题1:检索结果不准确
  • 优化文档分块策略
  • 使用更好的Embedding模型
  • 增加检索结果数量后重排序
  • 使用混合检索(向量+关键词)
问题2:生成答案质量低
  • 优化Prompt模板
  • 提高检索质量
  • 使用更强大的LLM
  • 添加答案验证机制
问题3:系统响应慢
  • 使用更快的向量数据库
  • 实现查询缓存
  • 优化索引结构
  • 异步处理非关键路径

🔗 五、相关资源

5.1 模型资源

5.2 开发工具

  • GPU租用: https://autodl.com/market/list
  • Jupyter Notebook: 交互式开发环境
  • LangChain: RAG应用开发框架
  • LlamaIndex: 数据框架和索引工具

5.3 环境配置

# 安装Jupyter Notebook pip3 install notebook # 启动Jupyter Notebook jupyter notebook # 或使用 python3 -m notebook # 启动Jupyter Lab(推荐) python3 -m jupyterlab # 安装FAISS向量数据库 pip3 install faiss-cpu --no-cache-dir # 安装LangChain pip3 install langchain # 安装HuggingFace相关库 pip3 install transformers sentence-transformers

📚 六、核心要点总结

RAG 核心技术 提示词工程 Prompt 向量嵌入 Embedding 检索系统 Retrieval 生成模型 Generation
""
🎯 关键理解:
  1. 提示词工程是与LLM交互的艺术,决定输出质量
  2. Embedding将文本转换为向量,是语义理解的基础
  3. RAG结合检索和生成,解决LLM知识局限性
  4. 完整流程:文档处理 → 向量化 → 存储 → 检索 → 生成
  5. 核心价值:知识更新灵活、减少幻觉、可追溯性强

6.1 技术演进路径

graph LR A[传统搜索] --> B[语义搜索] B --> C[Embedding检索] C --> D[RAG系统] D --> E[RAG + Agent] E --> F[多模态RAG] style A fill:#ffcdd2 style D fill:#c8e6c9 style F fill:#bbdefb
未来发展方向:
  • 多模态RAG:支持图像、音频、视频等多种模态
  • RAG + Agent:结合智能代理实现复杂任务
  • 自适应RAG:根据查询动态调整检索策略
  • 知识图谱增强:结合结构化知识提升推理能力

📖 学习建议

理论学习 → 动手实践 → 项目应用 → 持续优化

从简单的Embedding检索开始,逐步构建完整的RAG系统

© 2026 AI大模型课程 | 第1节 提示词和RAG原理分析