Part 1. 大模型RAG入门基础架构介绍


1)传统大模型在业务落地的局限性(为什么需要 RAG)

课件先强调:通用大模型很难直接满足真实业务,主要痛点包括:

  1. 知识可能过时(训练数据有时效性)

    模型训练完成后,新发生的事实/政策/产品变更不会被模型"自动学会",导致回答不及时。

  2. 会产生"幻觉"(编造不存在的信息)

    模型可能生成"看似合理但不符合事实/数据/逻辑"的内容,即一本正经胡说八道。

  3. 无法访问私有知识库数据

    企业内部文档、制度、业务流程、技术沉淀等私有数据并不在通用模型训练集中,模型天然无法回答。

  4. 回答缺乏具体出处,难以验证

    很多调研/合规/技术查证场景要求给出处(论文、文档、链接、段落),而纯生成通常做不到可追溯。

  5. 对话上下文长度限制

    课件提到多数模型上下文限制大约在 128K 左右(一次性可处理的内容有限),无法把"大量资料"直接塞进对话让模型读完。

核心结论:要想兼顾"准确、可追溯、及时、可扩展",需要让模型具备"先查资料再回答"的能力 → 引出 RAG。


2)RAG 的核心概念(是什么、为什么强、怎么用)

2.1 什么是 RAG

课件给出定义公式:

  • RAG = Retrieval(检索) + Augmented(增强) + Generation(生成)

解释为:
先从外部数据源检索相关信息 ,再把检索结果作为上下文注入提示词(Prompt),最后由 LLM 在这些"证据"基础上生成答案。

也可理解为:Search + LLM 的组合模式。

并用类比强化直觉:

  • 传统大模型:像"闭卷考试"(只能靠记忆)

  • RAG 系统:像"开卷考试"(不会就查资料,然后归纳作答)

2.2 RAG 的本质

一句话总结:
让大模型学会"查资料"后再回答问题,而不是仅凭记忆回答。

并点出常见"资料来源"形态:

  • 网络搜索

  • 知识库(企业内部文档等)

目标效果:

  • 准确性更高

  • 时效性更强

  • 可追溯(能给信息来源)

2.3 RAG 的优势(相对纯 LLM)

课件强调的主要优势方向:

  • 灵活性/适应性强:可接入最新、不断变化的数据

  • 提升回答准确性:基于检索证据降低幻觉

  • 接入私有知识:企业内部流程、制度、产品文档等

  • 可解释/可追溯:答案背后有检索到的文档片段

2.4 真实案例(用"2025 AI 趋势"解释差异)

课件用"咨询 2025 年最新 AI 技术趋势"举例:

  • 传统大模型:受训练截止时间影响,可能缺少 2025 新信息

  • RAG:先检索最新行业报告/博客 → 找相关段落 → 结合段落生成答案,并可附"信息来源"

并提到:联网搜索也是一种典型 RAG 场景(网络本身就是外部知识库)。


3)企业 RAG 的核心应用场景(落地在哪里最值)

课件列了 3 类典型场景,并补充电商/法律/医疗/教育等也常见。

3.1 企业知识库与智能问答

场景描述 :企业内部文档海量、分散,员工需要快速准确找到信息。
案例

  • 新员工入职培训问答(降低培训成本)

  • 产品技术规格查询(文档分散在不同系统)

  • 公司政策咨询(关键词搜索不精准、效率低)

3.2 专业客服与技术支持

场景描述 :客户支持需要准确、一致、可规模化。

课件用对比方式强调 RAG 价值:

  • 基于最新产品文档/解决方案库(减少"靠客服记忆")

  • 标准化一致回答(减少"因人而异")

  • 降低培训成本、提升复杂问题响应速度

3.3 科研与学术研究

场景描述 :研究人员需要快速了解领域最新进展与文献。
价值体现

  • 快速文献调研

  • 跨领域知识整合

  • 研究趋势分析


4)RAG 工作原理:通用两阶段流程(离线建库 + 在线问答)

课件给出一个"最基础 RAG 技术实现流程图",并总结为两阶段:

阶段一:准备阶段(建立知识库,离线)

  1. 数据接入:收集文档(PDF/Word/网页等)

  2. 文档解析:抽取纯文本

  3. 文档分割:把长文档切成 chunks

  4. 向量化:把文本转成向量(Embeddings)

  5. 存储:向量写入向量数据库

阶段二:问答阶段(智能应答,在线)

  1. 用户提问

  2. 问题向量化

  3. 相似度检索:向量库找最相关 chunks

  4. 提示增强:chunks + 问题 拼成 Prompt

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


5)RAG 完整执行流程详解(课件重点:每一步都拆开讲)

下面是课件对"建库阶段"和"推理阶段"的逐步展开(含示例代码与工具栈)。


A. 知识库构建阶段(离线)

A1. 数据源接入

目标 :从各种来源收集原始数据。

常见数据源:

  • 本地文件(PDF、Word、TXT、Markdown)

  • 数据库记录

  • 网页内容

  • API 接口数据

  • 企业内部文档

课件示例用一个 data_sources 字典展示多源接入的抽象结构(表示你可以同时接入多类数据)。


A2. 文档解析(Document Parsing)

目标 :从原始文件提取"可用于检索"的文本内容。

处理类型示例:

  • PDF → 提取文字、表格

  • HTML → 去除标签、保留正文

  • Word → 解析结构

  • 图片 → OCR 识别

课件这里提到"技术工具...(省略号)",整体意思是:不同格式需要不同 parser / loader。

并给了一个与 LangChain 相关的"Word 文档解析示例"(在后续代码单元里出现)。


A3. 文档分割(Chunking)

目标:把长文档切成适合检索/模型上下文使用的小片段(chunks)。

为什么要分割:

  • LLM 输入长度限制

  • 提高检索精度(细粒度更容易命中)

  • 避免一次塞入太多信息导致信息过载

课件给出 LangChain 的 RecursiveCharacterTextSplitter 示例(重点参数都讲到了):

  • chunk_size=500:每块最大字符数

  • chunk_overlap=100:相邻块重叠,保证上下文连贯

  • separators=[... "\n\n", "\n", "。", "!", "?", ",", ""]:按分隔符优先级递归切分

  • add_start_index=True:记录每块在原文起始位置

最后通过 split_documents(documents) 得到 all_splits


A4. 词向量化(Embeddings)

课件先用"向量的大小与方向"的数学直观解释向量,再转到 NLP/LLM 里的 embeddings:

  • 文本 → n 维向量(Embeddings)

  • 向量之间可以算距离/相似度 → 表示语义相似程度

课件提供了两种 embedding 路线示例:

方案 1:OpenAI Embeddings API

  • 从环境变量读取 OPENAI_API_KEYOPENAI_BASE_URL

  • 示例模型名:text-embedding-3-small

  • 使用 client.embeddings.create(model=model_name, input=text) 得到向量,并打印维度与前几个值

方案 2:开源/本地 Embeddings(HuggingFace)

  • 使用 HuggingFaceEmbeddings

  • 示例模型:BAAI/bge-large-zh-v1.5

  • model_kwargs={'device': 'cpu'}(提示可改 cuda)

  • embed_documents([text])[0] 得到向量

课件还提示:如果交互控件报错,可 pip install --upgrade ipywidgets(用于解决某类 notebook UI 依赖问题)。


A5. 文档存储(向量数据库)

课件用 FAISS 作为向量库示例(LangChain 的 vectorstore 封装):

  • vectorstore = FAISS.from_documents(all_splits, embeddings)

  • 可选:vectorstore.save_local("word_doc_faiss_index")

意义:

将每个 chunk 的 embedding 与元信息存入向量库,供后续快速相似度检索。


B. 问答推理阶段(在线)

B1. 用户提问

用户输入 query(课件后面演示用了类似"调休的申请流程是什么?"这样的企业流程类问题)。


B2. 文档检索(Retrieval)

课件展示两种检索方式:

  • vectorstore.similarity_search(query, k=3):返回 top-k 文档片段

  • vectorstore.similarity_search_with_score(query, k=3):返回片段 + 相似度分数,并打印每条结果


B2.1 向量间的相似度计算(课件专门讲"怎么判断相似")

课件引入常见指标,并用 numpy 示例演示:

  • 余弦相似度(cosine similarity):数值越大越相似

  • 欧氏距离(L2 distance):数值越小越相似

示例还强调可以做"跨语言检索"的感觉:query 用英文,documents 用中文,通过 embedding 仍可算相似度(依赖 embedding 模型的跨语言能力)。

(代码里有 cos_siml2_distget_embedding 等函数框架;部分单元用 ... 省略了细节,但逻辑是:把 query/documents 向量化后逐一计算相似度/距离。)


B3. 提示增强(Prompt Augmentation)

课件给出一个清晰的"RAG Prompt 构建函数":

  • 将检索到的 chunks 拼成 context

  • Prompt 模板要求:

    • "请根据以下上下文回答"

    • "如果上下文没有答案,请说明"

    • 输出"详细、准确的回答"

这一步的本质:把"证据"强行塞进模型上下文,约束模型在证据基础上回答。


B4. 答案生成(Generation)

课件提供一个"完整 RAG 调用封装":

  1. retrieved_docs = vectorstore.similarity_search(query, k=3)

  2. prompt = build_rag_prompt(query, retrieved_docs)

  3. response = llm_model.invoke(prompt)

  4. 返回 response.content

并用 ChatOpenAI 初始化模型(示例:gpt-3.5-turbotemperature=0.7),然后对示例 query 输出最终回答。


6)完整流程演示(从检索到生成串起来)

课件的"流程演示"部分主要体现:

  • 向量库检索 top-k

  • 拼 Prompt

  • 调用 LLM 得到答案

  • 打印"用户提问/模型最终回答"

即一个最小可用 RAG pipeline。


7)RAG 实践落地策略(怎么把它做成产品/系统)

课件给出 4 条路线(从重到轻):

  1. 手动搭建 RAG 引擎(自主可控、工作量最大)

  2. 低代码平台搭建:Coze、Dify、N8N(更快落地)

  3. 用 GLM / OpenAI Responses API 等快速实现(强调"官方 API 快速集成"的路径)

  4. 用开源框架快速搭建:LangChain、LlamaIndex(工程生态完善)


8)实际部署考虑(选场景/上线前要想清楚什么)

课件给出 4 个决策维度:

  1. 数据质量:是否有高质量、结构化/可解析的知识源?

  2. 更新频率:知识需要多频繁更新(涉及增量构建/重建索引)?

  3. 准确度要求:错误代价多大(客服/医疗/法律通常要求更严)?

  4. 技术复杂度:团队是否具备相应工程能力?


9)RAG 应用的优化方案(提升效果的主要抓手)

课件列出 5 个常用优化方向(非常贴近工业实践):

  1. 优化文本分割:更合适的 splitter、chunk size、overlap

  2. 重排序(Re-ranking):对召回结果再排序,提高 top 文档相关性

  3. 多轮对话与历史管理:把历史上下文纳入检索/生成(避免"断片")

  4. 混合检索:关键词检索(如 BM25)+ 向量检索,提高召回

  5. 评估与迭代:构建评估集,对 RAG 做定量评估指导迭代


相关推荐
Aliex_git几秒前
性能指标笔记
前端·笔记·性能优化
@zulnger3 分钟前
python 学习笔记(异常对象)
笔记·python·学习
其美杰布-富贵-李3 分钟前
x-transformers 完整学习笔记
笔记·学习·transformer
sunfove16 分钟前
光学学习笔记:详解光通量、照度、强度与亮度
笔记·学习
clorisqqq17 分钟前
人工智能现代方法 第二章2.1-2.3节 笔记
人工智能·笔记
less is more_093037 分钟前
文献学习——极端高温灾害下电缆型配电网韧性提升策略研究
笔记·学习·算法
菩提小狗38 分钟前
vulnhub靶场实战系列-1.靶场实战平台介绍|课程笔记|网络安全|
笔记·安全·web安全
工藤学编程44 分钟前
零基础学AI大模型之LangChain Tool异常处理
人工智能·langchain
Cephas、1 小时前
Autosar —— Rte 层
笔记