核心内容摘要
吴恩达深度学习课程一:神经网络和深度学习 第二周:神经网络基础(六)
RAG检索增强生成是一种结合传统信息检索与生成式大模型的AI框架通过外部知识库增强回答准确性。
核心流程包括知识准备阶段数据预处理、分块、向量化、入库和问答阶段查询处理、检索、整合、生成。
RAG有效解决大模型知识时效性、幻觉问题、信息安全及垂直领域知识整合等挑战提升回答准确性和可靠性。
RAG是什么RAGRetrieval-Augmented Generation检索增强生成, 一种AI框架将传统的信息检索系统(例如数据库)的优势与生成式大语言模型(LLM)的功能结合在一起。
不再依赖LLM训练时的固有知识而是在回答问题前先从外部资料库中“翻书”找资料基于这些资料生成更准确的答案。
RAG技术核心缓解大模型落地应用的几个关键问题知识新鲜度大模型突破模型训练数据的时间限制幻觉问题降低生成答案的虚构概率提供参照来源信息安全通过外挂知识库而不是内部训练数据减少隐私泄露垂直领域知识无需训练直接整合垂直领域知识RAG核心流程
1 知识准备阶段
2.
1 数据预处理a. 文档解析输入原始文档如Markdown/PDF/HTML操作提取纯文本如解析Markdown标题、段落处理特殊格式如代码块、表格、图片、视频等例如[标题] 什么是 ROMA [段落] ROMA 是一个全自主研发的前端开发基于自定义DSL(Jue语言)一份代码可在iOS、Android、Harmony、Web四端运行的跨平台解决方案。
[段落] ROMA 框架的中文名为罗码。
[标题] 今天天气 [列表项] 今天的室外温度为35°C天气晴朗。
文档的解析过程需要考虑不同文档内容例如文本、图片、表格等场景以及文档的语言布局情况可以考虑使用一些优秀的三方工具或者一些视觉模型布局分析模型语义理解模型来辅助解析。
b. 数据清洗与标准化处理提升文本质量和一致性使向量表示更准确从而增强检索相关性和LLM回答质量同时消除噪声和不规则格式确保系统能正确理解和处理文档内容。
包括:去除特殊字符、标签、乱码、重复内容。
文本标准化例如 时间、单位标准化如“今天” → “
”。
其他处理数据的清洗和标准化过程可以使用一些工具或NLTK、spaCy等NLP工具进行处理。
例如:pROMA框架/p 处理 ROMA框架 今天的室外温度为35°C天气晴朗。
处理
的室外温度为35°C天气晴朗c. 元数据提取关于数据的数据用于描述和提供有关数据的附加信息。
文档来源文档的出处例如URL、文件名、数据库记录等。
创建时间文档的创建或更新时间。
作者信息文档的作者或编辑者。
文档类型文档的类型如新闻文章、学术论文、博客等。
元数据在RAG中也非常重要不仅提供了额外的上下文信息还能提升检索质量检索增强精准过滤按时间、作者、主题等缩小搜索范围相关性提升结合向量相似度和元数据特征提高检索准确性ii. 上下文丰富来源标注提供文档来源、作者、发布日期等信息文档关系展示文档间的层级或引用关系iii. 常见的元数据提取方式:正则/HTML/… 等解析工具提取标题、作者、日期等自然语言处理: 使用NLP技术如命名实体识别、关键词提取从文档内容中提取元数据如人名、地名、组织名、关键词等机器学习模型: 训练机器学习模型来自动提取元数据通过调用外部API如Google Scholar API、Wikipedia API获取文档的元数据例如complete_metadata_chunk1 { file_path: /mydocs/roma_intro.md, file_name: roma_intro.md, chunk_id: 0, section_title: # 什么是 ROMA, subsection_title: , section_type: section, chunking_strategy: 3, content_type: product_description, main_entity: ROMA, language: zh-CN, creation_date:
, # 从文件系统获取 word_count: 42 # 计算得出, topics: [ROMA, 前端框架, 跨平台开发], entities: { products: [ROMA, Jue语言], # 实体识别 platforms: [iOS, Android, Web] }, }
2.
2 内容分块(Chunking)在RAG架构中分块既是核心也是挑战它直接影响检索精度、生成质量需要在检索精度、语境完整性和计算性能之间取得平衡。
内容分块将长文档切分成小块可以解决向量模型的token长度限制使RAG更精确定位相关信息提升检索精度和计算效率。
AutoBots(JoyAgent)功能分块实际RAG框架中按照文档的特性选择合适的分块策略进行分块。
常见的分块策略a. 按大小分块按固定字符数进行分块实现简单但可能切断语义单元。
优点实现简单且计算开销小块大小均匀便于管理。
缺点可能切断语义单元如句子或段落被分到不同块中。
例如第一段# ROMA框架介绍ROMA是一个全自主研发的前端开发框架基于自定义DSL(Jue语言)。
一份代码可在iOS、Android、Harmony 第二段、Web三端运行的跨平台解决方案。
ROMA框架的中文名为罗码。
句子被截断“一份代码可在iOS、Android、Harmony” 和 “、Web三端运行的跨平台解决方案” 被分到不同块影响理解。
b. 按段落分块以段落为基本单位进行分块保持段落完整性但段落长度可能差异很大。
优点尊重文档自然结构保留完整语义单元。
缺点段落长度差异大可能导致块大小不均衡。
例如第一段# ROMA框架介绍ROMA是一个全自主研发的前端开发框架基于自定义DSL(Jue语言)。
一份代码可在iOS、Android、Harmony、Web三端运行的跨平台解决方案。
ROMA框架的中文名为罗码。
第二段# 核心特性
跨平台一套代码运行于多端
高性能接近原生的性能表现
可扩展丰富的插件系统第一段包含标题和多行内容而其他段落相对较短可能导致检索不均衡。
c. 按语义分块基于文本语义相似度进行动态分块保持语义连贯性但计算开销大。
说明基于文本语义相似度动态调整分块边界。
优点保持语义连贯性能识别内容主题边界。
例如第一段# ROMA框架介绍ROMA是一个全自主研发的前端开发框架基于自定义DSL(Jue语言)。
一份代码可在iOS、Android、Harmony、Web四端运行的跨平台解决方案。
第二段ROMA框架的中文名为罗码。
## 核心特性
跨平台一套代码运行于多端使用依赖模型质量相同文本在不同运行中可能产生不同分块结果。
d. 分块策略
总结e. 优化方式混合分块策略结合多种分块方法的优点如先按段落分块再根据块大小调整做到既保持语义完整性又能控制块大小均匀优化重叠区域根据内容特性动态调整块之间的重叠区域大小关键信息出现在多个块中提高检索召回率f. 常用的分块工具Lang Chain框架提供多种分块策略包括RecursiveCharacterTextSplitter、MarkdownTextSplitter等NLTK用于基于自然语言句子的分块spaCy提供语言学感知的文本分割
2.
3 向量化将高维文本数据压缩到低维空间便于处理和存储。
将文本转换为计算机可以理解的数值使得计算机能够理解和处理语义信息从而在海量数据文本中实现快速、高效的相似度计算和检索。
简单理解通过一组数字来代表文本内容的“本质”。
例如“ROMA是一个跨平台解决方案…”这句话可能被转换为一个384维的向量[块1] 什么是ROMA ROMA是一个全自主研发的前端开发框架基于自定义DSL(Jue语言)... [ { chunk_id: doc1_chunk1, text: # 什么是 ROMA\nROMA 是一个全自主研发的前端开发基于自定义DSL(Jue语言)一份代码可在iOS、Android、Harmony、Web端运行的跨平台解决方案。
, vector: [
041, -
018,
063, ...,
027], metadata: { source: roma_introduction.md, position: 0, title: ROMA框架介绍 } }, // 更多文档块... ]常用的Embedding模型
2.
4 向量数据库入库将生成的向量数据和元数据进行存储同时创建索引结构来支持快速相似性搜索。
常用的向量数据库包括
2 问答阶段
2.
1 查询预处理意图识别使用分类模型区分问题类型事实查询、建议、闲聊等。
问题预处理问题内容清洗和标准化过程与前面数据预处理类似。
查询增强使用知识库或LLM生成同义词如“动态化” → “Roma”上下文补全可以结合历史会话
总结例如用户之前问过“Roma是什么”。
2.
2 数据检索(召回)a. 向量化使用与入库前数据向量化相同的模型将处理后的问题内容向量化。
例如问题: ROMA是什么? 处理后 { vector: [
052, -
021,
075, ...,
033], top_k: 3, score_threshold:
8, filter: {doc_type: 技术文档} }b. 检索相似度检索查询向量与所存储的向量最相似(通过余弦相似度匹配)的前 top_k 个文档块。
关键词检索倒排索引的传统方法,检索包含“Roma”、“优势”等精确关键词的文档。
混合检索合并上面多种检索结果效果最优。
例如检索“ROMA是什么?”c. 重排序(Reranking)初步检索在精度和语义理解上的不足通过更精细的上下文分析提升结果相关性。
它能更好处理同义词替换、一词多义等语义细微差异使最终结果准确。
原理使用模型对每个检索结果计算相关性分数。
归一化重排序模型原始输出分数没有固定的范围它可能是任意实数将结果归一化处理将分数映射到 [0, 1] 范围内使其更容易与向量相似度分数进行比较。
例如常用的重排序模型
2.
3 信息整合格式化检索的结果构建提示词模板同时将搜索的内容截断或摘要长文本以适应LLM上下文窗口token。
提示词优化限定回答范围要求标注来源设置拒绝回答规则…例如prompt 模板 你是一名ROMA框架专家请基于以下上下文回答 参考信息: [文档1] 什么是 ROMA ROMA 是一个全自主研发的前端开发基于自定义DSL(Jue语言)一份代码可在iOS、Android、Harmony、Web四端运行的跨平台解决方案。
ROMA 框架的中文名为罗码。
[文档2] Roma介绍 [Roma介绍](docs/guide/guide/introduction.md) 文档地址: https://roma-design.jd.com/docs/guide/guide/introduction.html 要求
分步骤说明含代码示例
标注来源文档版本
如果参考信息中没有相关内容请直接说明无法回答不要编造信息 请基于以下参考信息回答用户的问题。
如果参考信息中没有相关内容请直接说明无法回答不要编造信息。
用户问题: ROMA是什么 回答: {answer}
2.
4 LLM生成向LLM如GPT-
Claude发送提示获取生成结果。
AutoBots(JoyAgent)示例以上实现了最简单的RAG流程。
实际的RAG过程会比上述麻烦更多包括图片、表格等多模态内容的处理更复杂的文本解析和预处理过程文档格式的兼容结构化与非结构化数据的兼容等等。
最后展示一下RAG各阶段的优化方式那么如何系统的去学习大模型LLM作为一名从业五年的资深大模型算法工程师我经常会收到一些评论和私信我是小白学习大模型该从哪里入手呢我自学没有方向怎么办这个地方我不会啊。
如果你也有类似的经历一定要继续看下去这些问题啊也不是三言两语啊就能讲明白的。
所以我综合了大模型的所有知识点给大家带来一套全网最全最细的大模型零基础教程。
在做这套教程之前呢我就曾放空大脑以一个大模型小白的角度去重新解析它采用基础知识和实战项目相结合的教学方式历时3个月终于完成了这样的课程让你真正体会到什么是每一秒都在疯狂输出知识点。
由于篇幅有限⚡️ 朋友们如果有需要全套 《2025全新制作的大模型全套资料》扫码获取~为什么要学习大模型我国在A大模型领域面临人才短缺,数量与质量均落后于发达国家。
2023年人才缺口已超百万凸显培养不足。
随着AI技术飞速发展预计到2025年,这一缺口将急剧扩大至400万,严重制约我国AI产业的创新步伐。
加强人才培养,优化教育体系,国际合作并进是破解困局、推动AI发展的关键。
大模型学习指南路线汇总我们这套大模型资料呢会从基础篇、进阶篇和项目实战篇等三大方面来讲解。
①.基础篇基础篇里面包括了Python快速入门、AI开发环境搭建及提示词工程带你学习大模型核心原理、prompt使用技巧、Transformer架构和预训练、SFT、RLHF等一些基础概念用最易懂的方式带你入门大模型。
②.进阶篇接下来是进阶篇你将掌握RAG、Agent、Langchain、大模型微调和私有化部署学习如何构建外挂知识库并和自己的企业相结合学习如何使用langchain框架提高开发效率和代码质量、学习如何选择合适的基座模型并进行数据集的收集预处理以及具体的模型微调等等。
③.实战篇实战篇会手把手带着大家练习企业级的落地项目已脱敏比如RAG医疗问答系统、Agent智能电商客服系统、数字人项目实战、教育行业智能助教等等从而帮助大家更好的应对大模型时代的挑战。
④.福利篇最后呢会给大家一个小福利课程视频中的所有素材有搭建AI开发环境资料包还有学习计划表几十上百G素材、电子书和课件等等只要你能想到的素材我这里几乎都有。
我已经全部上传到CSDN朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】相信我这套大模型系统教程将会是全网最齐全 最易懂的小白专用课