一、什么是RAG?
检索增强生成(Retrieval Augmented Generation),简称 RAG。结合向量检索(Retrieval)与内容生成(Generation)的AI框架。
二、为啥需要RAG?
原因是通用的基础大模型基本无法满足我们的实际业务需求。
1、有以下有几方面原因:
1)知识的局限性:(缺企业私有知识库)
模型自身的知识完全源于它的训练数据,而现有的大模型的训练集基本都是构建于网络公开的数据,对于一些实时性的、非公开的或离线的数据是无法获取到的,这部分知识也就无从具备。
2)幻觉问题:(没有私有知识库,幻觉无法抑制)
所有的AI模型的底层原理都是基于数学概率,其模型输出实质上是一系列数值运算,大模型也不例外,所以它有时候会一本正经地胡说八道,尤其是在大模型自身不具备某一方面的知识或不擅长的场景。而这种幻觉问题的区分是比较困难的,因为它要求使用者自身具备相应领域的知识。
3)数据安全性:
对于企业来说,数据安全至关重要,没有企业愿意承担数据泄露的风险,将自身的私域数据上传第三方平台进行训练。这也导致完全依赖通用大模型自身能力的应用方案不得不在数据安全和效果方面进行取舍。
4)利用RAG框架可以构建企业的私有知识库,是解决上述问题的一套有效方案。
三、RAG架构
1、知识库
1)治理企业的私有化数据,包括结构化/非结构化数据(文档、数据库、网页等),利用向量数据库的高效存储和检索能力,可实现检索,和数据召回。
2)完善数据的治理,可实现数据的可持续更新。
2、RAG的核心是数据的检索+提示词的生成
1)前者主要是利用向量数据库的高效存储和检索能力,召回目标知识;
2)后者则是利用大模型和Prompt工程,将召回的知识合理利用,合并生成Prompt
3)再调用大模型生成目标答案。
4)重复以上过程,直到理想的结果。
3、RAG应用流程主要包含两个阶段:
1)知识库构建:
数据提取——>文本分割——>向量化(embedding)——>数据入库
2)知识库应用:
用户提问——>数据检索(召回)——>注入Prompt——>LLM生成答案
四、知识库建设:
1、数据准备阶段:
数据准备一般是一个离线的过程,主要是将私域数据向量化后构建索引并存入数据库的过程。主要包括:数据提取、文本分割、向量化、数据入库等环节。
1)数据提取
数据加载:包括多格式数据加载、不同数据源获取等,根据数据自身情况,将数据处理为同一个范式。
数据处理:包括数据过滤、压缩、格式化等。
元数据获取:提取数据中关键信息,例如文件名、Title、时间等 。
2)文本分割:
文本分割主要考虑两个因素:1)embedding模型的Tokens限制情况;2)语义完整性对整体的检索效果的影响。一些常见的文本分割方式如下:
句分割:以”句”的粒度进行切分,保留一个句子的完整语义。常见切分符包括:句号、感叹号、问号、换行符等。
固定长度分割:根据embedding模型的token长度限制,将文本分割为固定长度(例如256/512个tokens),这种切分方式会损失很多语义信息,一般通过在头尾增加一定冗余量来缓解。
3)向量化(embedding):
向量化是一个将文本数据转化为向量矩阵的过程,该过程会直接影响到后续检索的效果。目前常见的embedding模型如表中所示,这些embedding模型基本能满足大部分需求,但对于特殊场景(例如涉及一些罕见专有词或字等)或者想进一步优化效果,则可以选择开源Embedding模型微调或直接训练适合自己场景的Embedding模型。
4)数据入库:
数据向量化后构建索引,并写入数据库的过程可以概述为数据入库过程,适用于RAG场景的数据库包括:FAISS、Chromadb、ES、milvus等。一般可以根据业务场景、硬件、性能需求等多因素综合考虑,选择合适的数据库。
五、应用知识库阶段:
在应用阶段,我们根据用户的提问,通过高效的检索方法,召回与提问最相关的知识,并融入Prompt;大模型参考当前提问和相关知识,生成相应的答案。关键环节包括:数据检索、注入Prompt等。
1)数据检索
常见的数据检索方法包括:相似性检索、全文检索等,根据检索效果,一般可以选择多种检索方式融合,提升召回率。
相似性检索:即计算查询向量与所有存储向量的相似性得分,返回得分高的记录。常见的相似性计算方法包括:余弦相似性、欧氏距离、曼哈顿距离等。
全文检索:全文检索是一种比较经典的检索方式,在数据存入时,通过关键词构建倒排索引;在检索时,通过关键词进行全文检索,找到对应的记录。
2)注入Prompt
Prompt作为大模型的直接输入,是影响模型输出准确率的关键因素之一。在RAG场景中,Prompt一般包括任务描述、背景知识(检索得到)、任务指令(一般是用户提问)等,根据任务场景和大模型性能,也可以在Prompt中适当加入其他指令优化大模型的输出。
Prompt的设计只有方法、没有语法,比较依赖于个人经验,在实际应用过程中,往往需要根据大模型的实际输出进行针对性的Prompt调优。
六、举例,伪代码示例
1、选择如下开源组件
向量数据库:FAISS
NLP框架: Hugging Face Transformers, LangChain,DeepSeekR1
部署框架 FastAPI,
2、阶段1:知识库建设
1. 数据准备
- 数据源:PDF文档、数据库、API、网页爬虫等
- 格式处理:
python
示例:PDF文本提取
from PyPDF2 import PdfReader
def extract_pdf_text(file_path):
reader = PdfReader(file_path)
text = “”
for page in reader.pages:
text += page.extract_text()
return text
2. 数据预处理
- 清洗:去除特殊字符、停用词、重复内容
- 分块策略:
- 固定长度分块(适合通用场景)
- 语义分块(按段落/主题划分)
python
使用LangChain文本分割
from langchain.text_splitter import RecursiveCharacterTextSplitter
text_splitter = RecursiveCharacterTextSplitter(
chunk_size=512,
chunk_overlap=50
)
documents = text_splitter.split_text(text)
3. 向量化存储
嵌入模型选择:sentence-transformers/all-mpnet-base-v2 或自定义模型
向量数据库选型:
python
使用FAISS存储
from langchain.embeddings import HuggingFaceEmbeddings
from langchain.vectorstores import FAISS
embeddings = HuggingFaceEmbeddings(model_name=“all-mpnet-base-v2”)
vectorstore = FAISS.from_texts(documents, embeddings)
vectorstore.save_local(“knowledge_base”)
3、阶段2:RAG系统搭建
1. 检索模块
检索策略:
python
def retrieve_docs(query, vectorstore, top_k=3):
docs = vectorstore.similarity_search(query, k=top_k)
return doc.page_content for doc in docs
2. 生成模块
模型选择:DeepSeek
提示工程:
python
def build_prompt(query, context):
return f"""基于以下上下文回答用户问题:
{context}
问题:{query}
答案:"""
3. 系统集成
python
from transformers import pipeline
class RAGSystem:
def __init__(self, vectorstore_path):
self.vectorstore = FAISS.load_local(vectorstore_path, embeddings)
self.generator = pipeline(“text-generation”, model=“DeepSeekR1”)
def query(self, question):
context = retrieve\_docs(question, self.vectorstore)
prompt = build\_prompt(question, context)
return self.generator(prompt, max\_length=500)0'generated\_text'
4、阶段3:评估优化
评估指标
1)检索召回率优化:
混合检索(语义+关键词)
查询扩展(同义词替换)
2)生成答案相关性
python
添加系统提示
SYSTEM_PROMPT = “你是一个严谨的领域专家,只根据提供的事实回答问题。”
def improved_prompt(query, context):
return f"{SYSTEM_PROMPT}\n已知信息:{context}\n问题:{query}\n答案:"
3)人工评估准确度
评估结果,不断调整,达到可接受成果。
4)增量更新:实现知识库实时更新
python
class UpdateableFAISS(FAISS):
def add_documents(self, new_docs):
self.add_texts(new_docs)
self.save_local(“updated_knowledge_base”)
2024最新版优快云大礼包:《AGI大模型学习资源包》免费分享**
一、2025最新大模型学习路线
一个明确的学习路线可以帮助新人了解从哪里开始,按照什么顺序学习,以及需要掌握哪些知识点。大模型领域涉及的知识点非常广泛,没有明确的学习路线可能会导致新人感到迷茫,不知道应该专注于哪些内容。
我们把学习路线分成L1到L4四个阶段,一步步带你从入门到进阶,从理论到实战。
L1级别:AI大模型时代的华丽登场
L1阶段:我们会去了解大模型的基础知识,以及大模型在各个行业的应用和分析;学习理解大模型的核心原理,关键技术,以及大模型应用场景;通过理论原理结合多个项目实战,从提示工程基础到提示工程进阶,掌握Prompt提示工程。
L2级别:AI大模型RAG应用开发工程
L2阶段是我们的AI大模型RAG应用开发工程,我们会去学习RAG检索增强生成:包括Naive RAG、Advanced-RAG以及RAG性能评估,还有GraphRAG在内的多个RAG热门项目的分析。
L3级别:大模型Agent应用架构进阶实践
L3阶段:大模型Agent应用架构进阶实现,我们会去学习LangChain、 LIamaIndex框架,也会学习到AutoGPT、 MetaGPT等多Agent系统,打造我们自己的Agent智能体;同时还可以学习到包括Coze、Dify在内的可视化工具的使用。
L4级别:大模型微调与私有化部署
L4阶段:大模型的微调和私有化部署,我们会更加深入的探讨Transformer架构,学习大模型的微调技术,利用DeepSpeed、Lamam Factory等工具快速进行模型微调;并通过Ollama、vLLM等推理部署框架,实现模型的快速部署。
整个大模型学习路线L1主要是对大模型的理论基础、生态以及提示词他的一个学习掌握;而L3 L4更多的是通过项目实战来掌握大模型的应用开发,针对以上大模型的学习路线我们也整理了对应的学习视频教程,和配套的学习资料。
二、大模型经典PDF书籍
书籍和学习文档资料是学习大模型过程中必不可少的,我们精选了一系列深入探讨大模型技术的书籍和学习文档,它们由领域内的顶尖专家撰写,内容全面、深入、详尽,为你学习大模型提供坚实的理论基础。(书籍含电子版PDF)
三、大模型视频教程
对于很多自学或者没有基础的同学来说,书籍这些纯文字类的学习教材会觉得比较晦涩难以理解,因此,我们提供了丰富的大模型视频教程,以动态、形象的方式展示技术概念,帮助你更快、更轻松地掌握核心知识。
四、大模型项目实战
学以致用 ,当你的理论知识积累到一定程度,就需要通过项目实战,在实际操作中检验和巩固你所学到的知识,同时为你找工作和职业发展打下坚实的基础。
五、大模型面试题
面试不仅是技术的较量,更需要充分的准备。
在你已经掌握了大模型技术之后,就需要开始准备面试,我们将提供精心整理的大模型面试题库,涵盖当前面试中可能遇到的各种技术问题,让你在面试中游刃有余。
因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取