一、技术概述:什么是RAG?

RAG(Retrieval-Augmented Generation,检索增强生成)并非单一模型,而是一种融合“外部知识检索”与“智能内容生成”的混合框架。其核心逻辑突破了传统生成模型“闭门造车”的局限——当需要响应问答需求或生成文本时,系统会先从预设的外部知识库(如文档库、数据库、API接口等)中精准定位与任务相关的信息片段,再将这些“证据性内容”作为补充输入传递给生成模型,最终产出兼具准确性、逻辑性与可追溯性的结果。

简单来说,RAG相当于为生成模型配备了“实时查资料”的能力,让模型不再仅依赖训练时固化的知识,而是能结合最新、最专业的外部信息生成内容。

二、技术价值:为何需要RAG?

传统生成模型(如GPT-3.5基础版、LLaMA等)在处理事实性任务时存在明显短板,而RAG的出现恰好解决了这些核心痛点:

  1. 破解“幻觉难题”:纯粹的生成模型依赖内部训练数据回答问题,当遇到训练数据中未覆盖的细节、易混淆的概念(如相似的技术术语、同名人物)时,容易生成“看似合理但实则错误”的内容(即“幻觉”)。例如,询问“2024年某行业营收数据”时,未接入外部知识的模型可能会编造一个接近过往趋势的虚假数值。

  2. 强化生成结果的“可信度与实用性”:通过引入外部知识源,RAG能为生成模型赋予三大关键能力:

    • 提升准确性:基于真实存在的知识库内容生成回答,减少主观臆断;
    • 提供可验证性:输出结果时可附带检索来源(如文档片段、网页链接、数据库索引),用户可回溯核对;
    • 降低知识更新成本:当需要更新领域知识(如法律条文修订、技术标准迭代)时,只需替换或补充外部知识库,无需重新训练参数庞大的生成模型,大幅节省算力与时间成本。

三、核心原理:RAG如何工作?

RAG的运行逻辑可拆解为“检索-生成”两大核心阶段,两个阶段通过“向量匹配”实现数据衔接:

  1. 检索阶段:系统先将外部知识库中的文档拆解为更小的信息单元(如段落、句子),再通过“嵌入模型”(Embedding Model)将每个单元转换为低维稠密向量(即“文本嵌入”),并存储到支持高效相似性查询的向量数据库中。当用户输入查询需求时,嵌入模型会将查询语句也转换为向量,随后在向量数据库中快速匹配与查询向量“语义相似度最高”的信息单元,筛选出Top-N个相关结果。

  2. 生成阶段:系统将检索到的Top-N个信息单元与用户的原始查询整合为“Prompt模板”(例如“基于以下参考信息回答问题:[检索结果1][检索结果2];问题:[用户查询]”),再将该模板输入生成模型,模型结合自身语言理解能力与外部参考信息,生成最终回答。

整个过程的关键在于“向量嵌入”——它能将文本的语义信息转化为机器可计算的数值,确保检索到的内容与查询需求在“含义层面”匹配,而非仅依赖关键词重合。


四、系统架构设计:构建RAG的五大核心模块

一个完整的RAG系统需包含五个紧密协作的模块,各模块职责明确且形成闭环:

  • 数据预处理模块:作为RAG的“数据入口”,负责将原始文档(如PDF、Word、TXT、网页HTML)转化为标准化格式。核心操作包括:文档格式解析、冗余信息清洗(如去除页眉页脚、重复段落)、文本分块(按语义逻辑或固定长度拆分,避免单块内容过长/过短)、元数据提取(如记录文档来源、创建时间、所属分类,用于后续过滤)。

  • 向量存储模块:承担“知识仓库”的角色,主要采用向量数据库(如Milvus、Chroma、Pinecone)存储预处理后的文本嵌入向量。向量数据库通过特殊的索引结构(如HNSW、IVF-PQ)实现高效的相似性查询,确保在百万级甚至亿级向量数据中,仍能在毫秒级返回匹配结果。

  • 检索引擎模块:RAG的“信息筛选器”,负责执行查询向量与存储向量的匹配逻辑。核心功能包括:语义相似度计算(如余弦相似度、欧氏距离)、结果排序(按相似度得分从高到低排序)、多策略融合(如结合全文检索与向量检索),确保输出最相关的信息。

  • 生成模型模块:系统的“内容生产器”,通常采用大语言模型(LLM)实现,如GPT-4、Claude 3、Llama 3等。该模块需具备“上下文理解能力”,能将检索到的多段参考信息与用户查询融合,生成逻辑连贯、重点突出的回答,同时支持格式定制(如列表、表格、学术引用格式)。

  • 监控与日志模块:RAG的“运维保障”,负责跟踪系统运行状态与输出质量。核心功能包括:检索准确率统计(如Top-1/Top-5命中率)、生成结果质量评估(如是否存在幻觉、是否符合参考信息)、用户反馈收集(如“有用/无用”评分)、异常日志记录(如检索超时、向量存储失败),为系统迭代提供数据支撑。

五、检索策略:四种主流方案的对比与实践

检索策略直接决定RAG系统的“信息召回质量”,不同场景需选择适配的策略,以下为四种核心方案的详细解析:

1. ANN(近似近邻搜索):平衡速度与精度的基础方案

ANN(Approximate Nearest Neighbor Search)是向量检索的主流方式,其核心思路是“以微小的精度损失换取极快的检索速度”。与“精确近邻搜索”(Exact Nearest Neighbor,需遍历所有向量计算相似度,速度慢)不同,ANN会先通过索引结构(如HNSW)将向量划分为多个“聚类簇”,查询时仅在与查询向量最接近的簇中计算相似度,最终返回“近似最相似”的结果。

适用场景:知识库规模较大(万级以上向量)、对检索速度要求高(如实时问答系统),且可接受轻微精度损失的场景,例如客服机器人、通用领域问答。

2. 过滤搜索:提升检索精准度的补充策略

由于ANN仅基于语义相似度匹配,可能会召回“语义相关但不符合特定条件”的结果(例如,查询“2024年人工智能论文”,ANN可能召回2023年的相关论文)。过滤搜索的作用是在ANN检索前增加“条件筛选”步骤——用户可在查询中携带过滤规则(如时间范围、文档类型、所属领域),向量数据库先筛选出符合条件的向量子集,再在子集中执行ANN搜索,进一步缩小检索范围。

实践示例:若需检索“包含‘红色’关键词的产品说明书片段”,可设置过滤条件“chunk LIKE %red%”(其中“chunk”为文本分块字段),向量数据库会先筛选出所有包含“red”的分块,再对这些分块执行语义匹配。不同向量数据库支持的过滤操作符不同(如等于、包含、范围查询),需参考对应数据库的官方手册配置。

3. BM25(全文搜索):基于关键词匹配的传统方案

BM25(Best Matching 25)是一种经典的全文检索评分函数,属于“词袋模型”(Bag-of-Words)的改进版,核心逻辑是“通过统计关键词在文档中的出现频率、文档长度、关键词在查询中的重要性,计算文档与查询的相关性得分”。与依赖语义的向量检索不同,BM25更擅长捕捉“关键词精确匹配”的关系,例如查询“Transformer模型的原理”时,BM25会优先召回包含“Transformer”“原理”等关键词的文档。

框架支持:以Milvus向量数据库为例,BM25全文搜索仅在Milvus Standalone(单机版)和Milvus Distributed(分布式版)中提供,Milvus Lite(轻量版)暂不支持该功能。

实践步骤:在Milvus中使用BM25需遵循三步流程:

  1. 创建集合(Collection):定义包含“原始文本字段”“稀疏向量字段”的集合结构,并配置将原始文本转换为稀疏向量的函数(BM25依赖稀疏向量存储关键词权重);
  2. 插入数据:将预处理后的文本文档批量插入集合,系统会自动将文本转换为稀疏向量;
  3. 执行搜索:输入查询文本,系统基于BM25算法计算相关性得分,返回Top-N结果。

以下为Milvus中BM25搜索的示例代码(JavaScript):

search_params = {
'params': {'drop_ratio_search': 0.2}, // 搜索时忽略小向量值的比例,用于优化性能
}
client.search(
collection_name='demo', // 目标集合名称
data=['whats the focus of information retrieval?'], // 查询文本
anns_field='sparse', // 稀疏向量字段(存储BM25权重)
limit=3, // 返回结果数量
search_params=search_params
)

4. 混合搜索:融合多策略的最优解

混合搜索是指“同时执行多种检索策略(如ANN+BM25、多个ANN模型),对各策略的结果进行重排序后输出最终结果”的方案。其核心优势是“兼顾不同策略的优点”——例如,ANN擅长语义匹配,BM25擅长关键词精确匹配,二者结合可既召回“语义相关”的内容,又不遗漏“关键词高度重合”的关键信息,大幅提升检索精度。

最典型的应用场景是“稀疏-密集向量混合搜索”,两种向量的特性与适用场景对比如下:

维度/属性 稀疏向量 密集向量
典型维度 很高(10⁴–10⁶) 较低(32–4096)
非零比率 很低(<< 1%) 很高(接近 100%)
构建方式 规则工程:词袋、n-gram、TF-IDF、BM25 权重等 深度模型编码:BERT、Sentence-BERT、word2vec、CLIP
含义 精确的特征计数/权重,偏词项匹配 压缩的语义表示,捕捉相似含义
相似度/距离 余弦、点积、Jaccard、BM25 等;常用倒排索引 余弦、内积、欧氏;常用 ANN 索引(HNSW、IVF-PQ)
存储结构 稀疏存储(CSR/COO、倒排表) 稠密数组(连续内存、向量数据库)
检索特性 可解释、可控、对关键词精确 语义泛化强、召回语义相近而非关键词相同
更新成本 词表变动成本高;新增文档更新倒排即可 需向量化新数据;模型更迭需重编码
典型应用 传统全文检索、广告匹配的关键词阶段召回 语义搜索、相似内容推荐、多模态检索

实践中,混合搜索的重排序策略通常采用“线性加权”(如ANN结果得分×0.6 + BM25结果得分×0.4)或“学习排序”(LTR,基于历史反馈数据训练模型动态调整权重),具体需根据业务场景优化。

六、RAG完整实现流程:从数据到落地的五步走

一个可落地的RAG系统需遵循“数据加载→向量化→检索→生成→评估”的闭环流程,各步骤的核心操作与注意事项如下:

1. 数据加载:完成原始数据的采集与预处理

  • 文档读取与解析:支持多格式文档(PDF、Word、TXT、Markdown),可使用LangChain的DirectoryLoaderPyPDFLoader等工具;
  • 格式转换:将非文本数据(如图片中的文字)通过OCR工具转为文本,统一存储格式;
  • 去重与初步清洗:去除重复文档、无效内容(如乱码、广告),修复文本格式(如统一大小写、修正错别字);
  • 元数据提取:记录文档来源(如文件路径、URL)、创建时间、分类标签等,为后续过滤提供依据。

2. 向量化:将文本转化为可检索的向量

  • 文档分块:采用“递归字符分块”(如LangChain的RecursiveCharacterTextSplitter),按语义边界(如段落、句子)拆分文本,避免分块跨越逻辑单元;通常设置chunk_size(单块长度,如1000字符)和chunk_overlap(块间重叠长度,如200字符),确保上下文连贯性;
  • 嵌入模型选择:根据场景选择模型,通用场景可选OpenAI Embeddings、Sentence-BERT,领域场景(如医疗、法律)可选微调后的专用嵌入模型;
  • 向量计算与存储:调用嵌入模型生成向量,批量写入向量数据库(如Chroma、Milvus),并建立索引优化检索速度;
  • 建立高效索引:根据向量数据库类型选择索引(如Chroma默认HNSW索引,Milvus支持IVF-PQ、HNSW等),平衡检索速度与精度。

3. 检索:精准定位相关信息

  • 查询向量化:将用户输入的查询语句通过相同的嵌入模型转换为向量;
  • 相似度计算:在向量数据库中执行检索策略(如ANN+过滤),计算查询向量与存储向量的相似度;
  • 检索策略优化:根据查询类型动态调整策略(如事实性查询优先BM25,模糊语义查询优先ANN);
  • 结果过滤与排序:基于元数据过滤(如时间、分类),按相似度得分排序,保留Top-N(如Top-5)结果作为参考信息。

4. 生成:结合参考信息生成回答

  • Prompt模板构建:设计结构化模板,例如“以下是参考信息:{retrieved_docs};请基于这些信息回答问题:{user_query};要求:回答准确、简洁,若参考信息不足需说明”;
  • 上下文注入:将检索到的Top-N结果按相关性顺序插入Prompt,避免上下文过长(可通过“摘要压缩”减少冗余);
  • LLM参数调优:调整生成模型参数,如temperature(控制随机性,事实性回答设为0–0.3)、max_tokens(控制回答长度);
  • 回答生成与格式化:输出回答时附带参考来源(如“参考文档1:[文件路径]”),支持按需格式化为列表、表格等。

5. 评估:持续迭代优化系统

  • 准确性检测:通过人工标注或自动化工具(如LLM自我评估)判断回答是否符合参考信息,是否存在幻觉;
  • 相关性评分:统计检索结果的“命中率”(如Top-5结果中是否包含能回答问题的信息);
  • 用户反馈收集:在系统界面添加“有用/无用”按钮、反馈输入框,收集真实使用场景中的问题;
  • 迭代优化:根据评估结果调整分块策略、嵌入模型、检索参数(如Top-N数量)、Prompt模板,逐步提升系统性能。

七、RAG的简单示例

from langchain.document_loaders import DirectoryLoader
from langchain.text_splitter import RecursiveCharacterTextSplitter
from langchain.embeddings import OpenAIEmbeddings
from langchain.vectorstores import Chroma
from langchain.chains import RetrievalQA
from langchain.chat_models import ChatOpenAI
# 1. 数据加载
loader = DirectoryLoader('./documents/', glob="AI/*.txt")
documents = loader.load()
print(f"加载了 {len(documents)} 个文档")
# 2. 文档分块
text_splitter = RecursiveCharacterTextSplitter(
chunk_size=1000,
chunk_overlap=200,
length_function=len
)
chunks = text_splitter.split_documents(documents)
print(f"文档分割为 {len(chunks)} 个块")
# 3. 向量化与存储
embeddings = OpenAIEmbeddings()
vector_store = Chroma.from_documents(
documents=chunks,
embedding=embeddings,
persist_directory="./chroma_db"
)
vector_store.persist()
print("向量存储创建完成并已持久化")
# 4. 创建检索问答链
retriever = vector_store.as_retriever(search_kwargs={"k": 5})
llm = ChatOpenAI(model_name="gpt-3.5-turbo", temperature=0)
qa_chain = RetrievalQA.from_chain_type(
llm=llm,
chain_type="stuff",  # stuff方法:将所有文档合并作为上下文
retriever=retriever,
return_source_documents=True  # 返回源文档以便参考
)
# 5. 交互式问答
def ask(question):
result = qa_chain({"query": question})
print(f"\n问题: {question}")
print(f"\n回答: {result['result']}")
print("\n参考来源:")
for i, doc in enumerate(result["source_documents"][:2], 1):
print(f"{i}. {doc.metadata.get('source', '未知来源')}")
return result
# 测试示例
ask("什么是向量数据库?")
ask("RAG与传统LLM微调相比有什么优势?")

八、如何学习大模型 AI ?

由于新岗位的生产效率,要优于被取代岗位的生产效率,所以实际上整个社会的生产效率是提升的。

但是具体到个人,只能说是:

“最先掌握AI的人,将会比较晚掌握AI的人有竞争优势”。

这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。

我在一线科技企业深耕十二载,见证过太多因技术卡位而跃迁的案例。那些率先拥抱 AI 的同事,早已在效率与薪资上形成代际优势,我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在大模型的学习中的很多困惑。我们整理出这套 AI 大模型突围资料包

  • ✅ 从零到一的 AI 学习路径图
  • ✅ 大模型调优实战手册(附医疗/金融等大厂真实案例)
  • ✅ 百度/阿里专家闭门录播课
  • ✅ 大模型当下最新行业报告
  • ✅ 真实大厂面试真题
  • ✅ 2025 最新岗位需求图谱

所有资料 ⚡️ ,朋友们如果有需要 《AI大模型入门+进阶学习资源包》下方扫码获取~
在这里插入图片描述

① 全套AI大模型应用开发视频教程

(包含提示工程、RAG、LangChain、Agent、模型微调与部署、DeepSeek等技术点)
在这里插入图片描述

② 大模型系统化学习路线

作为学习AI大模型技术的新手,方向至关重要。 正确的学习路线可以为你节省时间,少走弯路;方向不对,努力白费。这里我给大家准备了一份最科学最系统的学习成长路线图和学习规划,带你从零基础入门到精通!
在这里插入图片描述

③ 大模型学习书籍&文档

学习AI大模型离不开书籍文档,我精选了一系列大模型技术的书籍和学习文档(电子版),它们由领域内的顶尖专家撰写,内容全面、深入、详尽,为你学习大模型提供坚实的理论基础。
在这里插入图片描述

④ AI大模型最新行业报告

2025最新行业报告,针对不同行业的现状、趋势、问题、机会等进行系统地调研和评估,以了解哪些行业更适合引入大模型的技术和应用,以及在哪些方面可以发挥大模型的优势。
在这里插入图片描述

⑤ 大模型项目实战&配套源码

学以致用,在项目实战中检验和巩固你所学到的知识,同时为你找工作就业和职业发展打下坚实的基础。
在这里插入图片描述

⑥ 大模型大厂面试真题

面试不仅是技术的较量,更需要充分的准备。在你已经掌握了大模型技术之后,就需要开始准备面试,我精心整理了一份大模型面试题库,涵盖当前面试中可能遇到的各种技术问题,让你在面试中游刃有余

图片

以上资料如何领取?

在这里插入图片描述

为什么大家都在学大模型?

最近科技巨头英特尔宣布裁员2万人,传统岗位不断缩减,但AI相关技术岗疯狂扩招,有3-5年经验,大厂薪资就能给到50K*20薪!

图片

不出1年,“有AI项目经验”将成为投递简历的门槛。

风口之下,与其像“温水煮青蛙”一样坐等被行业淘汰,不如先人一步,掌握AI大模型原理+应用技术+项目实操经验,“顺风”翻盘!
在这里插入图片描述
在这里插入图片描述

这些资料真的有用吗?

这份资料由我和鲁为民博士(北京清华大学学士和美国加州理工学院博士)共同整理,现任上海殷泊信息科技CEO,其创立的MoPaaS云平台获Forrester全球’强劲表现者’认证,服务航天科工、国家电网等1000+企业,以第一作者在IEEE Transactions发表论文50+篇,获NASA JPL火星探测系统强化学习专利等35项中美专利。本套AI大模型课程由清华大学-加州理工双料博士、吴文俊人工智能奖得主鲁为民教授领衔研发。

资料内容涵盖了从入门到进阶的各类视频教程和实战项目,无论你是小白还是有些技术基础的技术人员,这份资料都绝对能帮助你提升薪资待遇,转行大模型岗位。
在这里插入图片描述
在这里插入图片描述

以上全套大模型资料如何领取?

在这里插入图片描述

Logo

更多推荐