RAG大模型实战:小白也能学会的知识增强技术(收藏版)
本文介绍了RAG检索增强生成技术旨在解决大语言模型的时效性不足和知识覆盖缺陷问题。文章详细阐述了RAG的核心工作流程包括索引阶段的文档分块、向量化及存入向量数据库以及检索生成阶段的用户问题向量化、相似度计算、Top-k文档检索和LLM生成。Naive RAG作为基础实现方式通过“索引-检索-生成”三步流程为构建更高级的RAG系统奠定基础。一、RAG 简介1.1 什么是 RAGRAG(Retrieval-Augmented Generation检索增强生成) 是结合信息检索与大模型生成的 AI 技术核心逻辑是让大模型先从专属知识库中检索相关信息再基于检索到的内容生成答案类比为给大模型开卷考试避免其仅凭自身训练数据作答。1.2 为什么需要 RAG大语言模型存在两大核心局限性时效性不足大模型的训练数据有时间截止点无法回答最新的实事、热点或实时数据类问题。如实时天气、近期企业制度更新。知识覆盖性缺陷训练数据无法涵盖所有专业领域深度知识和私有数据易出现生成幻觉导致答案缺乏可信度。面对大模型的局限性微调、提示词工程是常见方案但与 RAG 相比差异显著大模型微调需基于专属数据集对模型重新训练成本高、周期长且更新知识需再次微调适合静态、高频使用的专属知识场景。提示词工程仅通过优化提问方式引导模型作答无法补充模型未学习的知识解决幻觉问题的能力有限。RAG无需修改模型本身仅通过外挂知识库补充信息知识更新成本低、实时性强适合动态更新的私有/专业知识场景是解决大模型幻觉和时效性问题的轻量化最优解。RAG 的研究范式一直在持续演进我们将其发展过程分为三个阶段朴素 RAG(Naive RAG)、高级RAG(Advanced RAG) 和模块化 RAG(Modular RAG)1.3 核心工作流程论文https://arxiv.org/pdf/2312.10997RAG 的完整工作流程分为索引阶段和检索生成阶段核心是将 “用户问题” 与 “知识库文档” 进行语义匹配再让大模型基于匹配结果作答索引阶段将知识库中的文档进行加载→分块→向量化→存入向量数据库为后续检索做准备。检索生成阶段用户输入问题→问题向量化→在向量数据库中检索语义相似的文档块→将问题 检索结果拼接为增强提示词→送入大模型→生成精准答案。简单来说无 RAG 时大模型 “凭记忆作答”有 RAG 时大模型 “先翻书再答题”。二、Naive RAG2.1 概述2.1.1 Naive RAG 简介Naive RAG(朴素 RAG) 是指 RAG 的最基本、最经典的实现方式没有引入复杂的优化或额外模块。它遵循最直接的“索引-检索-生成”三步流程是理解和构建更高级 RAG 系统的基础。2.1.2 Naive RAG 流程2.2 索引阶段2.2.1 文档分块为什么要分块大模型有上下文窗口限制且长文档直接检索易丢失关键信息分块是将大文档切分为大小合适的文本片段保证检索的精准性和效率。分块策略按固定字符数切分、按句子切分# 按固定字符数切分 def split(text, count): return [text[i:i count] for i in range(0, len(text), count)] # 按句子切分 import re def split(text): re.findall 是 Python re 模块中的一个函数它返回字符串中所有匹配的列表。 r...原始字符串防止反斜杠被转义 正则含义匹配由任意多个非句末标点字符组成的序列后面紧跟一个句末标点。 return re.findall(r[^。][。], text)固定字符数 重叠窗口切分# 即按照固定字符数切分但是要保留上一段的部分内容 def split_window(text, count, stride): return [text[i:i count] for i in range(0, len(text), count - stride)]RecursiveCharacterTextSplitter 通过递归应用不同粒度的分隔符切分在满足块大小约束的同时尽可能保留文本的自然边界(段落、句子、词语)。这是 RAG 应用中对文档进行预处理的标准工具能有效提升后续检索与生成的质量。# 从 langchain 导入递归字符文本分割器 from langchain.text_splitter import RecursiveCharacterTextSplitter # 待分割的长文本包含多个段落和句子 text 人工智能AI是计算机科学的一个分支致力于创建能够执行通常需要人类智能的任务的系统。 机器学习是AI的核心子领域它使计算机能够从数据中学习而无需明确编程。 深度学习则是机器学习的一个子集基于人工神经网络。 自然语言处理NLP使计算机能够理解、解释和生成人类语言。 计算机视觉则赋予机器“看”和识别图像的能力。 如今AI已广泛应用于医疗、金融、教育、交通等各个领域。 然而AI的发展也带来了伦理和隐私方面的挑战需要全社会共同应对。 # 初始化递归文本分割器 text_splitter RecursiveCharacterTextSplitter( # 每个块的最大字符数 chunk_size100, # 相邻块之间的重叠字符数用于保持上下文连贯避免切分边界丢失信息 chunk_overlap20, # 用于计算文本长度的函数默认 len 表示按字符数计算也可替换为 token 计数函数 length_functionlen, # 自定义分隔符优先级列表从高到低 # 首先尝试用双换行符 \n\n 切分段落边界 # 如果某个块仍太大则对该块改用单换行符 \n 切分行边界 # 接着尝试用中文句号 。 切分句子边界 # 再用逗号 切分短语边界 # 然后用空格 切分单词边界 # 最后如果还是太大就用空字符串 按字符强制切分保证块大小不超 chunk_size separators[\n\n, \n, 。, , , ] ) # 对文本执行分割返回字符串列表每个元素是一个文本块 chunks text_splitter.split_text(text) # 遍历并打印每个块的内容和长度展示分割结果 for i, chunk in enumerate(chunks): print(f块 {i1} (长度 {len(chunk)}):\n{chunk}\n{-*50})2.2.2 文档向量化向量化(Embeddings) 是将文本、图片、音频等非结构化数据转换为数值向量的过程向量由一组浮点数组成对应 n 维空间的一个点向量的维度代表语义特征的丰富度。用户查询和文档块必须使用同一个嵌入模型。如果模型不一致向量就处于不同的语义空间相似度比较将毫无意义。2.2.3 向量数据库作为 RAG 技术的关键组件向量数据库解决了 AI 时代非结构化数据的高效存储、检索和相似度匹配问题是连接海量数据与大模型的桥梁。常见向量数据库Chroma 使用安装与初始化# 安装必要的库# pip install chromadbimport chromadb存储向量# 当前配置中数据保存在内存中 client chromadb.Client(Settings(allow_resetTrue)) # 如果需要持久化到磁盘需使用 PersistentClient创建客户端 # client chromadb.PersistentClient(path./my_chroma_db) # 创建一个 Collection。可以指定距离计算方法默认为余弦相似度 collection client.create_collection( namemy_rag_docs, metadata{hnsw:space: cosine} # 指定使用余弦相似度 ) # 将数据添加到 collection 中 collection.add( # 每个文档的向量 embeddingsembeddings, # 每个文档的原文 documentschunks, # 每个文档的 id idschunk_ids ) print(fCollection 中现在有 {collection.count()} 个数据块)2.3 检索阶段2.3.1 相似度计算在 RAG 的检索阶段相似度计算是核心环节。它用于衡量用户查询向量与知识库中文档向量之间的相似程度 从而筛选出最相关的文档为后续的生成提供高质量的上下文。相似度计算本质上就是在向量空间中衡量两个向量之间的距离或角度向量夹角越小相似度越高向量距离越近相似度越相似度值通常在 [0 , 1] 或 [-1, 1]欧氏距离计算示例import numpy as np def euclidean_distance(a, b): 计算两个向量 a 和 b 之间的欧氏距离。 参数 a第一个向量NumPy数组 b第二个向量NumPy数组 返回 两个向量之间的欧氏距离标量值 # a - b: 对应元素相减得到差值向量 # np.linalg.norm(...): 计算该差值向量的长度即欧氏距离 return np.linalg.norm(a - b) # 示例使用 if __name__ __main__: # 模拟文本向量 query_vec np.array([0.1, 0.2, 0.3, 0.4, 0.5]) doc_vec np.array([0.15, 0.25, 0.35, 0.45, 0.55]) # 计算相似度 ecul_dist euclidean_distance(query_vec, doc_vec) print(f欧氏距离: {ecul_dist:.4f}) # 输出: 欧氏距离: 0.1118余弦相似度计算示例import numpy as np def cosine(a, b): 计算两个向量之间的余弦相似度。 参数: a: 第一个向量 (numpy array) b: 第二个向量 (numpy array) 返回: float: 余弦相似度 [-1, 1]。如果向量为零向量返回 0.0。 # 计算向量 a 和向量 b 的点积内积 dot_product np.dot(a, b) # 计算向量 a 的 L2 范数模长 norm_a np.linalg.norm(a) # 计算向量 b 的 L2 范数模长 norm_b np.linalg.norm(b) # 计算余弦相似度点积除以两个向量模长的乘积 cos_sim dot_product / (norm_a * norm_b) return cos_sim # 示例使用 if __name__ __main__: # 模拟文本向量 query_vec np.array([0.1, 0.2, 0.3, 0.4, 0.5]) doc_vec np.array([0.15, 0.25, 0.35, 0.45, 0.55]) # 计算相似度 cosine cosine(query_vec, doc_vec) print(f余弦相似度: {cosine:.4f}) # 输出: 余弦相似度: 0.99842.3.2 Chroma 检索查询向量化对用户输入的查询使用同一个嵌入模型转换成向量。相似度计算计算查询向量与所有文档块向量的相似度(通常用余弦相似度或欧氏距离)。返回 Top-k 块选出最相似的 k 个文本块作为检索结果。collection.query( # 查询条件向量 query_embeddingsquery_embeddings, # 最相关的个结果 n_resultstop_k )2.4 生成阶段2.4.1 构建 Prompt将检索到的上下文信息与用户原始查询进行结构化组合构建一个清晰、明确的提示模板。优秀的提示设计能够引导 LLM 正确理解任务目标有效利用上下文信息。上下文信息[检索到的块1][检索到的块2]...根据以上上下文请回答用户问题def basic_template(context, question): prompt f 上下文信息 {context} 根据以上上下文请回答 {question} # 示例使用 if __name__ __main__: # 模拟检索到的上下文 context_blocks [ 人工智能AI是一门旨在创建智能代理的计算机科学分支..., 未来十年AI预计将在以下领域取得重大突破... ] # 用户问题 question 人工智能的发展前景如何 # 构建提示 prompt basic_template(context_blocks, question) print(prompt)2.4.2 LLM 生成将提示输入给大语言模型模型基于提供的上下文生成自然语言回答。import os from openai import OpenAI client OpenAI( api_keyos.getenv(DASHSCOPE_API_KEY), base_urlhttps://dashscope.aliyuncs.com/compatible-mode/v1, ) completion client.chat.completions.create( modelqwen-plus, messages[ {role: system, content: You are a helpful assistant.}, {role: user, content: prompt}, ] ) print(completion.model_dump_json())如何学习大模型 AI 由于新岗位的生产效率要优于被取代岗位的生产效率所以实际上整个社会的生产效率是提升的。但是具体到个人只能说是“最先掌握AI的人将会比较晚掌握AI的人有竞争优势”。这句话放在计算机、互联网、移动互联网的开局时期都是一样的道理。我在一线科技企业深耕十二载见证过太多因技术卡位而跃迁的案例。那些率先拥抱 AI 的同事早已在效率与薪资上形成代际优势我意识到有很多经验和知识值得分享给大家也可以通过我们的能力和经验解答大家在大模型的学习中的很多困惑。我们整理出这套AI 大模型突围资料包✅ 从零到一的 AI 学习路径图✅ 大模型调优实战手册附医疗/金融等大厂真实案例✅ 百度/阿里专家闭门录播课✅ 大模型当下最新行业报告✅ 真实大厂面试真题✅ 2026 最新岗位需求图谱所有资料 ⚡️ 朋友们如果有需要《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大模型课程由清华大学-加州理工双料博士、吴文俊人工智能奖得主鲁为民教授领衔研发。资料内容涵盖了从入门到进阶的各类视频教程和实战项目无论你是小白还是有些技术基础的技术人员这份资料都绝对能帮助你提升薪资待遇转行大模型岗位。以上全套大模型资料如何领取

相关新闻

新手也能上手 8个降AIGC工具:本科生降AI率全测评与推荐

新手也能上手 8个降AIGC工具:本科生降AI率全测评与推荐

在如今的学术写作中,AI 生成内容(AIGC)已成为高校和科研机构关注的重点。尤其是对于本科生而言,论文中若存在明显的 AI 痕迹,不仅可能被系统检测出高 AIGC 率,还会影响整体查重结果,甚至导致论文…

2026/7/4 20:00:08 阅读更多 →
【MySQL 的数据目录】

【MySQL 的数据目录】

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 一、MySQL 的数据目录 1、数据库文件的存放路径2、相关命令目录3、配置文件目录 二、数据库和文件系统的关系 1、查看默认数据库2、数据库在文件系统中的表示3、表…

2026/7/4 22:43:19 阅读更多 →
网易互娱2020校招在线笔试-游戏研发第一批-幸运N串-研发

网易互娱2020校招在线笔试-游戏研发第一批-幸运N串-研发

题目:小A很喜欢字母N,他认为连续的N串是他的幸运串。有一天小A看到了一个全部由大写字母组成的字符串,他被允许改变最多2个大写字母(也允许不改变或者只改变1个大写字母),使得字符串中所包含的最长的连续的…

2026/7/4 12:17:04 阅读更多 →

最新新闻

从零手写DES算法:深入理解Feistel网络与位运算实现

从零手写DES算法:深入理解Feistel网络与位运算实现

1. 项目概述与核心价值 最近在整理一些老项目的代码,发现很多同学对DES(Data Encryption Standard)算法的理解还停留在“调用 javax.crypto.Cipher ”的层面,一旦面试官问起“能不能手写一个DES?”,或者遇…

2026/7/5 9:38:40 阅读更多 →
JMeter+Jenkins自动化测试实战:SSE流式响应处理全攻略

JMeter+Jenkins自动化测试实战:SSE流式响应处理全攻略

1. 项目概述:当自动化测试遇上流式数据最近在做一个智能客服项目的自动化回归测试,后端接口从传统的JSON响应,全面升级到了SSE流式输出。这下可好,之前用JMeter写的那些接口测试脚本,跑起来要么直接超时,要…

2026/7/5 9:36:39 阅读更多 →
AI大模型驱动自动化测试:Claude+Playwright+MCP架构实战解析

AI大模型驱动自动化测试:Claude+Playwright+MCP架构实战解析

1. 项目概述:当AI大模型遇上自动化测试最近在测试圈子里,一个组合开始频繁被提及:Claude Playwright MCP。这听起来像是一堆技术名词的堆砌,但如果你深入了解一下,会发现它正在悄然改变我们编写和执行自动化测试脚本…

2026/7/5 9:34:39 阅读更多 →
NCM加密音乐文件本地化转换方案:从原理到自动化实践

NCM加密音乐文件本地化转换方案:从原理到自动化实践

1. 项目概述:从“加密枷锁”到“自由播放”如果你是一个音乐爱好者,尤其是网易云音乐的重度用户,那么你大概率在电脑的某个角落发现过一些以.ncm为后缀的奇怪文件。这些文件直接双击无法用常规播放器打开,想导入手机或车载U盘更是…

2026/7/5 9:32:39 阅读更多 →
RevokeMsgPatcher防撤回补丁:原理、风险与Windows微信/QQ/TIM实操指南

RevokeMsgPatcher防撤回补丁:原理、风险与Windows微信/QQ/TIM实操指南

1. 项目概述:为什么我们需要一个“防撤回补丁”? 在即时通讯软件里,“消息撤回”功能设计的初衷是给用户一个纠正错误的机会,比如打错字、发错人或者一时冲动说了不合适的话。但很多时候,这个功能也带来了信息不对等的…

2026/7/5 9:28:38 阅读更多 →
Folia:全屏沉浸式在线音乐播放器,多端体验+AI 主题生成带来独特听歌感受!

Folia:全屏沉浸式在线音乐播放器,多端体验+AI 主题生成带来独特听歌感受!

Folia 是一款以全屏沉浸式歌词播放为核心的在线音乐播放器,支持多平台,具备智能歌词匹配、AI 生成配色主题等功能,为用户带来独特听歌体验。项目亮点与特色Folia 支持网易云、navidrome 和本地音乐库。其独特之处在于智能歌词匹配&#xff0c…

2026/7/5 9:26:38 阅读更多 →

日新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/5 0:03:34 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里,参与了关于混合后量子密码学的讨论,应付端点攻击找茬的人,还参与留言板讨论后,发现“威胁模型”对多数人仍是陌生概念,且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/5 0:03:34 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”:我理解的渗透测试到底是什么?每次看到新闻里说某个大公司的数据被“黑”了,或者某个网站被攻击导致服务瘫痪,你是不是和我一样,心里会冒出两个念头:一是“这黑客真厉害”&#x…

2026/7/5 0:07:38 阅读更多 →

周新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/5 0:03:34 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里,参与了关于混合后量子密码学的讨论,应付端点攻击找茬的人,还参与留言板讨论后,发现“威胁模型”对多数人仍是陌生概念,且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/5 0:03:34 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”:我理解的渗透测试到底是什么?每次看到新闻里说某个大公司的数据被“黑”了,或者某个网站被攻击导致服务瘫痪,你是不是和我一样,心里会冒出两个念头:一是“这黑客真厉害”&#x…

2026/7/5 0:07:38 阅读更多 →

月新闻