第四章:大模型(LLM)

第十一部分:LLM + RAG:构建私有领域专家

第一节:Rag原理介绍: Prompt Engineering /RAG pipeline/ Embedding Vectors/


1️⃣ 什么是 RAG

RAG(Retrieval-Augmented Generation,检索增强生成) 是一种结合 大语言模型(LLM)外部知识库 的方法。
它的核心思路是:

  • LLM 负责生成(语言理解、推理、对话)。

  • 知识库负责提供准确的事实信息(领域文档、企业数据、论文、法规)。

  • 二者结合:通过 检索 → 增强 → 生成 的流程,让模型不仅依赖训练参数,还能动态调用最新、私有、专业的数据。

优点:

  • 不需要对大模型做完全微调(成本低)。

  • 保持 LLM 的通用语言能力。

  • 可随时更新知识库,解决 知识时效性私有数据 问题。


2️⃣ Prompt Engineering 在 RAG 中的作用

RAG 的 Prompt 设计一般包含以下部分:

  • 指令 (Instruction):告诉模型任务是什么,例如“请根据提供的上下文回答问题”。

  • 上下文 (Retrieved Context):从知识库中检索到的相关文档片段。

  • 用户问题 (Query):用户输入的原始问题。

例子:

你是一个法律顾问,请根据提供的资料回答用户的问题。  
资料:{retrieved_context}  
用户问题:{query}  
请结合资料进行详细解答,如果资料不足,请明确说明。  

这样能避免 模型幻觉,引导 LLM 基于外部知识回答。


3️⃣ RAG Pipeline 工作流程

RAG 的典型流程如下:

  1. 用户输入 Query(例如:“解释合同法第十条”)。

  2. Embedding 编码:将用户 Query 转换为向量。

  3. 向量检索:在知识库中找到最相关的文档片段(Top-k)。

  4. 构造 Prompt:将检索到的文档拼接到用户问题中,形成增强 Prompt。

  5. LLM 生成答案:基于 Prompt 输出最终结果。

流程公式:

Answer = LLM( Prompt(Query + Retrieved Documents) )

4️⃣ Embedding Vectors 在 RAG 中的作用

  • 定义:Embedding 是一种将文本映射为向量的表示方法,使得相似文本在向量空间中距离更近。

  • 用途

    • 用于 向量检索(找相似文档)。

    • 用于 语义搜索(比关键词搜索更智能)。

    • 用于 聚类 / 分类(文档主题识别)。

常用中文 Embedding 模型:

  • OpenAI text-embedding-3-small/large

  • BGE (BAAI General Embedding) 系列(国内常用)

  • m3e / GTE 等开源中文向量模型

示例:

from sentence_transformers import SentenceTransformer

model = SentenceTransformer("BAAI/bge-large-zh")
query = "合同法第十条的内容是什么?"
query_vec = model.encode(query, normalize_embeddings=True)

然后将 query_vec 与向量数据库(如 FAISS、Milvus、Weaviate)中存储的文档向量进行相似度检索。


5️⃣ RAG 与传统 LLM 的区别

特性 普通 LLM LLM + RAG
知识来源 模型参数 模型参数 + 外部知识库
知识更新 需重新训练/微调 更新知识库即可
幻觉问题 较多 显著减少
私有数据支持 不支持 支持
成本 高(微调/训练) 低(仅维护知识库)

6️⃣ 小结

  • RAG 是 LLM 私有化落地的核心技术

  • 它通过 Prompt Engineering + 向量检索 + 外部知识库,使大模型能快速适应企业/领域需求。

  • Embedding 向量是关键组件,决定了检索效果。

  • RAG 不是替代微调,而是更高效的 增强式方案

更多推荐