RAG系统入门实践:零基础探索之旅,带你轻松掌握RAG系统!
我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。
🧠 第一章:什么是RAG?
先解决一个问题
你有没有遇到过这种情况:
你:“我的合同里写了什么?” AI:“我不知道你的合同内容”
耍!AI不认识你的文档!
RAG的本质是什么?
RAG 并不是一种具体的技术,而是一种为大语言模型提供它在训练期间没有见过的数据的框架。
通俗点说,就是给AI配个助理,专门翻你的文档!但更准确的理解是:
RAG 可以把基于大语言模型的应用程序链接到外部数据源和应用程序,以克服知识局限性。
为什么需要RAG?
1. 解决知识局限性 如果希望大语言模型能访问它在预训练和微调过程中学到的"记忆"之外的数据,就需要使用RAG。这些数据没有包含在原始训练数据中,比如:
- 组织内部的私有数据
- 个人文档和笔记
- 最新的行业信息
2. 缓解幻觉问题 通过允许模型访问真实信息,可以改善模型补全的相关性,大幅减少AI胡编乱造的情况。
3. 克服知识截断 针对知识截断,可以利用 RAG 来访问模型训练日期之后的信息。RAG 可以直接为模型提供额外信息(比如特定领域信息),而无须持续进行全部数据的微调。
RAG的详细工作流程
基于专业的RAG架构图,完整的工作流程是这样的:
📚 阶段一:知识准备(离线处理)
原始文档 → 文档分块 → Embedding模型 → 向量数据库存储
1. 文档分块(Chunking)
- 把长文档切成小段(比如每段300字)
- 段与段之间有重叠(比如重叠75字)
- 保持语义完整性
2. 向量化(Embedding)
- 使用专门的Embedding模型(如nomic-embed-text)
- 每个文档块转换成768维向量
- 这些向量包含了文档的语义信息
3. 向量存储
- 存储到专业向量数据库(如Qdrant)
- 支持高效的相似度搜索
- 可以存储数百万个向量
🔍 阶段二:查询处理(实时处理)
用户问题 → 问题向量化 → 相似度搜索 → 检索相关文档
1. 问题向量化
- 用户问题同样转换成768维向量
- 使用同一个Embedding模型保证一致性
2. 向量相似度计算
- 计算问题向量与所有文档向量的相似度
- 常用余弦相似度(Cosine Similarity)
- 找出最相关的Top-K个文档块
🤖 阶段三:答案生成
检索到的文档 + 用户问题 → 大语言模型 → 生成答案
Prompt模板示例:
基于以下文档内容回答问题:
文档内容:
[检索到的相关文档块]
问题:[用户的问题]
请基于上述文档内容回答问题,如果文档中没有相关信息,请明确说明。
一直在更新,更多的大模型学习和面试资料已经上传带到CSDN的官方了,有需要的朋友可以扫描下方二维码免费领取【保证100%免费】👇👇
核心技术优势
1. 语义检索 vs 关键词检索
- 传统搜索:只能匹配相同的词
- 向量检索:理解语义,"预算"和"费用"能关联起来
2. 实时知识更新
- 新增文档立即生效,无需重新训练模型
- 删除或修改文档同样实时生效
3. 可追溯性
- 每个答案都能追溯到具体的源文档
- 提供引用和证据,增加可信度
4. 成本效益
- 比Fine-tuning成本低数百倍
- 不需要大量GPU资源
- 维护简单,扩展性强
RAG系统完整架构
基于专业架构图,RAG系统包含以下完整流程:
📚 离线数据处理流程
原始文档 → 文档预处理 → 文档分块 → 向量编码 → 向量数据库存储
详细步骤:
- 文档预处理: 清理格式、去除噪音
- 智能分块: 按语义边界切分文档
- 向量编码: 使用嵌入模型转换为数值向量
- 索引构建: 在向量数据库中建立高效索引
- 元数据存储: 保存文档来源、位置等信息
RAG框架
🔍 实时查询处理流程
用户问题 → 问题理解 → 向量编码 → 语义检索 → 相关性排序 → 上下文构建
详细步骤:
- 问题预处理: 标准化用户输入
- 意图识别: 理解用户真正想问什么
- 向量编码: 将问题转换为查询向量
- 相似度计算: 与知识库向量比较
- 多轮筛选:
- 粗排:快速筛选候选文档
- 精排:详细计算相关性分数
- 重排:根据多个维度重新排序
🤖 智能回答生成流程
检索结果 → 上下文整合 → 提示词构建 → 大模型推理 → 答案后处理 → 最终回答
详细步骤:
- 上下文整合:
- 合并多个相关文档片段
- 去重和去噪
- 按重要性排序
- 提示词工程:
- 构建包含上下文的完整提示
- 添加回答格式要求
- 设置安全和质量约束
- 模型推理:
- 调用本地大语言模型
- 设置推理参数
- 控制生成长度和风格
- 答案优化:
- 检查答案质量
- 添加引用来源
- 格式化输出
🗄️ 第二章:向量数据库是什么?
类比你的大脑
想象一下:
- 你的大脑记忆是按意思分类的,不是按字母排序
- "苹果"和"水果"存在相近的位置
- "汽车"离得很远
向量数据库就是模仿这种记忆方式!
传统数据库:存姓名电话(精确匹配) 向量数据库:存文档的"意思"(相似匹配)
向量数据库的核心原理
什么是向量?
简单说,向量就是一串数字,代表文档的"意思"。
举例:
"苹果很甜" → [0.2, 0.8, 0.1, 0.9, ...] (768个数字)
"水果好吃" → [0.3, 0.7, 0.2, 0.8, ...] (768个数字)
"汽车很快" → [0.9, 0.1, 0.8, 0.2, ...] (768个数字)
数字相近的文档,意思就相近!
向量数据库的工作方式
向量数据库专门用来存储和搜索这些"意思向量":
存储过程:
- 文档切块 → 转成向量 → 存入数据库
- 每个向量都有唯一ID,方便检索
搜索过程:
- 问题转成向量
- 计算与所有文档向量的相似度
- 返回最相似的几个文档
核心优势:
- 理解语义,不只是关键词匹配
- 支持模糊查找,容错性强
🛠️ 第三章:开始动手实践
第一步:搞个本地AI
最开始我想,既然不想用ChatGPT,那就在本地跑个AI吧。
听朋友推荐了Ollama这个工具。简单理解就是:把ChatGPT搬到你电脑里的魔法工具。
有多简单?
- 下载一个安装包,双击安装
- 一行命令下载模型
- 就可以和AI聊天了
试了一下,确实挺神奇的!
安装过程(确实很简单)
我用的是Mac,一行命令就搞定了:
# 复制粘贴这行命令,回车等待
curl -fsSL https://ollama.ai/install.sh | sh
Windows用户更简单,去 ollama.ai 下载安装包,双击安装。
安装好后试试:
ollama --version
# 能看到版本号就说明成功了
我的电脑是16GB内存,跑起来挺流畅。官方说8GB也行,不过可能会慢一些。硬盘需要几个G空间放模型。
安装后它就在后台静静运行了,不用手动启动,挺贴心的。
第二步:下载AI模型
我们需要两个模型:一个用于对话,一个专门用于文档嵌入:
# 下载对话模型qwen3:8b(约4.7GB)
ollama pull qwen3:8b
# 下载专用嵌入模型nomic-embed-text(约274MB)
ollama pull nomic-embed-text
# 查看已安装的模型
ollama list
# 测试对话模型
ollama run qwen3:8b
模型选择说明:
qwen3:8b(对话生成):
- 中文聊天特别自然
- 大小合适,不会把电脑搞卡
- 内存占用不算太大(6-8GB)
- 能记住很长的对话
nomic-embed-text(文档嵌入):
- 专门优化的嵌入模型,效果比通用模型好
- 生成768维向量,计算效率高
- 占用内存小(约1GB)
- 对中英文都有很好的支持
先聊两句试试
下载完就能聊天了:
ollama run qwen3:8b
>>> 你好,请介绍一下自己
>>> 请解释什么是人工智能
>>> /bye # 退出对话
程序调用API
Ollama还能当API用,兼容OpenAI格式:
# 通过API调用模型
curl http://localhost:11434/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "qwen3:8b",
"messages": [{"role": "user", "content": "Hello"}]
}'
第三步:准备AI的记忆库(向量数据库)
一键启动记忆库
# 下载并启动向量数据库(就这么简单!)
docker pull qdrant/qdrant
docker run -itd --name qdrant -p 6333:6333 qdrant/qdrant
# 验证是否成功启动
curl http://localhost:6333/health
# 返回"ok"就成功了!
成功后可以访问 http://localhost:6333/dashboard 看看管理界面
第四步:检查装备
现在检查一下,你现在有了:
✅ Ollama(AI大脑):http://localhost:11434
✅ Qdrant(记忆库):http://localhost:6333
✅ qwen3:8b(中文模型):已下载
检查一下都运行正常吗:
# 检查Ollama
curl http://localhost:11434/api/version
# 检查Qdrant
curl http://localhost:6333/health
# 检查模型
ollama list
都返回正常?那就可以开始写代码了! 🎉
一直在更新,更多的大模型学习和面试资料已经上传带到CSDN的官方了,有需要的朋友可以扫描下方二维码免费领取【保证100%免费】👇👇

💻 第四章:写代码!
最关键的时刻到了 - 让AI读懂你的文档!
三步搞定
非常简单:
- 📖 读取你的文档
- 🔢 化成AI能懂的数字
- 💬 让AI看着文档回答
写代码让AI工作
第一步:连接模型服务
正确的做法是分别连接对话模型和嵌入模型:
// 初始化智能对话引擎
aiEngine, initErr := ollama.New(
ollama.WithModel("qwen3:8b"),
ollama.WithServerURL("http://localhost:11434"),
)
if initErr != nil {
log.Fatalf("对话引擎初始化异常: %v", initErr)
}
// 构建文本向量化处理器
vectorProcessor, procErr := ollama.New(
ollama.WithModel("nomic-embed-text"), // 向量化专用引擎
ollama.WithServerURL("http://localhost:11434"),
)
if procErr != nil {
log.Fatalf("向量处理器构建异常: %v", procErr)
}
// 创建语义编码器
semanticEncoder, encErr := embeddings.NewEmbedder(vectorProcessor)
if encErr != nil {
log.Fatalf("语义编码器创建异常: %v", encErr)
}
关键配置说明:
- 对话生成用
qwen3:8b
:专注于生成自然的中文回答 - 文档嵌入用
nomic-embed-text
:专门优化的向量化模型,效果更好 - 两个模型各司其职,性能最佳
第二步:连接向量数据库
// 建立向量知识库连接
vectorDbEndpoint, _ := url.Parse("http://localhost:6333")
knowledgeVault, vaultErr := qdrant.New(
qdrant.WithURL(*vectorDbEndpoint),
qdrant.WithEmbedder(semanticEncoder), // 集成语义编码器
qdrant.WithCollectionName("智能文档库"), // 知识集合标识
)
if vaultErr != nil {
log.Fatalf("知识库连接建立失败: %v", vaultErr)
}
第三步:把文档切成小块
// 智能文档分段处理
func ProcessDocumentSegments(contentPath string, segmentLength, overlapSize int) ([]schema.Document, error) {
contentReader, readErr := os.Open(contentPath)
if readErr != nil {
return nil, readErr
}
// 启用智能文档解析器
contentParser := documentloaders.NewText(contentReader)
segmentExtractor := textsplitter.NewRecursiveCharacter()
segmentExtractor.ChunkSize = segmentLength // 分段字符长度
segmentExtractor.ChunkOverlap = overlapSize // 片段重叠字符数
return contentParser.LoadAndSplit(context.Background(), segmentExtractor)
}
// 向知识库批量存储文档片段
func archiveKnowledgeSegments(contentSegments []schema.Document, vault *qdrant.Store) error {
if len(contentSegments) > 0 {
_, archiveErr := vault.AddDocuments(context.Background(), contentSegments)
return archiveErr
}
return nil
}
第四步:让AI看着文档回答
func GenerateIntelligentAnswer(ctx context.Context, brainEngine llms.Model, retrievedContent []schema.Document, userQuery string) (string, error) {
// 构建智能上下文环境
var knowledgeAssembler strings.Builder
knowledgeAssembler.WriteString("参考以下知识内容生成回答:\n\n")
// 整合所有相关知识片段
for idx, contentBlock := range retrievedContent {
knowledgeAssembler.WriteString(fmt.Sprintf("知识片段 %d:\n%s\n\n", idx+1, contentBlock.PageContent))
}
knowledgeAssembler.WriteString(fmt.Sprintf("用户询问:%s\n\n基于上述知识生成准确回答:", userQuery))
// 启动智能推理引擎
return llms.GenerateFromSinglePrompt(ctx, brainEngine, knowledgeAssembler.String(),
llms.WithTemperature(0.8))
}
第五步:重要经验分享!
func executeKnowledgeSearch(vault *qdrant.Store, searchQuery string, maxResults int) ([]schema.Document, error) {
// 配置搜索精度参数
searchConfig := []vectorstores.Option{
vectorstores.WithScoreThreshold(0.30), // 相似度阈值:0.3最佳平衡点
}
knowledgeFinder := vectorstores.ToRetriever(vault, maxResults, searchConfig...)
return knowledgeFinder.GetRelevantDocuments(context.Background(), searchQuery)
}
我们使用的基本配置:
// 最优化分段参数配置
contentParts, segErr := ProcessDocumentSegments("./神秘故事.txt", 300, 75)
// ↑ ↑
// 片段长度 重叠区间
重要:创建向量数据库集合
为什么这一步很关键? 不同模型生成的向量维度不同,必须正确配置,否则会报错。
正确的配置:
# 为语义编码器创建768维向量集合
curl -X PUT "http://localhost:6333/collections/semantic-knowledge-vault" \
-H "Content-Type: application/json" \
-d '{
"vectors": {
"size": 768,
"distance": "Cosine"
}
}'
# 验证知识库创建状态
curl http://localhost:6333/collections/semantic-knowledge-vault
常用模型的向量维度参考:
nomic-embed-text
: 768维 ✅ 推荐使用qwen3:8b
: 4096维 (不推荐用于嵌入)OpenAI ada-002
: 1536维
提示: 如果你用其他嵌入模型,记得改对应的维度数字。
🚀 第五章:大功告成!
系统启动步骤
按顺序执行,确保每一步都成功:
# 1. 检查AI模型部署情况
ollama list
# 确认两个关键模型:
# - qwen3:8b (智能对话引擎)
# - nomic-embed-text (语义编码器)
# 2. 测试向量知识库状态
curl http://localhost:6333/health
# 期望返回: {"status":"ok"}
# 3. 构建语义知识集合(关键步骤!)
curl -X PUT "http://localhost:6333/collections/semantic-knowledge-vault" \
-H "Content-Type: application/json" \
-d '{"vectors":{"size":768,"distance":"Cosine"}}'
# 4. 确认知识库初始化成功
curl http://localhost:6333/collections/semantic-knowledge-vault
# 查看集合配置信息
# 5. 启动智能问答系统
go run intelligent-main.go
常见问题解决:
- AI模型缺失:重新执行
ollama pull
命令下载 - 知识库冲突:清理后重建
curl -X DELETE http://localhost:6333/collections/semantic-knowledge-vault
- 向量维度错误:核对编码器和知识库配置参数
智能系统成功运行案例
🚀 智能问答系统启动中
✅ 对话引擎初始化: qwen3:8b
✅ 语义编码器加载: nomic-embed-text
✅ 知识库连接建立: Qdrant Vector Store
正在处理知识内容...
✅ 文档分段处理: 14个知识片段
✅ 语义向量化: 768维语义空间
✅ 知识库存储完成
💬 智能问答系统就绪! 基于《神秘故事.txt》提供智能解答
请输入您的问题: 主角是谁
🔍 语义检索进行中...
📚 发现 3个高度相关知识片段 (相关性>0.75)
🤖 智能解答:
基于知识内容分析,主角是一个神秘的黑衣人物...
(知识来源: 第3章第2节)
🔗 参考资料
- Ollama官网 - 本地AI的家
- Qdrant文档 - 向量数据库
- LangChain Go - Go版本
- Go语言 - 官方文档
如何学习大模型 AI ?
由于新岗位的生产效率,要优于被取代岗位的生产效率,所以实际上整个社会的生产效率是提升的。
但是具体到个人,只能说是:
“最先掌握AI的人,将会比较晚掌握AI的人有竞争优势”。
这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。
我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。
我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。
一直在更新,更多的大模型学习和面试资料已经上传带到CSDN的官方了,有需要的朋友可以扫描下方二维码免费领取【保证100%免费】👇👇
01.大模型风口已至:月薪30K+的AI岗正在批量诞生
2025年大模型应用呈现爆发式增长,根据工信部最新数据:
国内大模型相关岗位缺口达47万
初级工程师平均薪资28K(数据来源:BOSS直聘报告)
70%企业存在"能用模型不会调优"的痛点
真实案例:某二本机械专业学员,通过4个月系统学习,成功拿到某AI医疗公司大模型优化岗offer,薪资直接翻3倍!
02.大模型 AI 学习和面试资料
1️⃣ 提示词工程:把ChatGPT从玩具变成生产工具
2️⃣ RAG系统:让大模型精准输出行业知识
3️⃣ 智能体开发:用AutoGPT打造24小时数字员工
📦熬了三个大夜整理的《AI进化工具包》送你:
✔️ 大厂内部LLM落地手册(含58个真实案例)
✔️ 提示词设计模板库(覆盖12大应用场景)
✔️ 私藏学习路径图(0基础到项目实战仅需90天)
第一阶段(10天):初阶应用
该阶段让大家对大模型 AI有一个最前沿的认识,对大模型 AI 的理解超过 95% 的人,可以在相关讨论时发表高级、不跟风、又接地气的见解,别人只会和 AI 聊天,而你能调教 AI,并能用代码将大模型和业务衔接。
- 大模型 AI 能干什么?
- 大模型是怎样获得「智能」的?
- 用好 AI 的核心心法
- 大模型应用业务架构
- 大模型应用技术架构
- 代码示例:向 GPT-3.5 灌入新知识
- 提示工程的意义和核心思想
- Prompt 典型构成
- 指令调优方法论
- 思维链和思维树
- Prompt 攻击和防范
- …
第二阶段(30天):高阶应用
该阶段我们正式进入大模型 AI 进阶实战学习,学会构造私有知识库,扩展 AI 的能力。快速开发一个完整的基于 agent 对话机器人。掌握功能最强的大模型开发框架,抓住最新的技术进展,适合 Python 和 JavaScript 程序员。
- 为什么要做 RAG
- 搭建一个简单的 ChatPDF
- 检索的基础概念
- 什么是向量表示(Embeddings)
- 向量数据库与向量检索
- 基于向量检索的 RAG
- 搭建 RAG 系统的扩展知识
- 混合检索与 RAG-Fusion 简介
- 向量模型本地部署
- …
第三阶段(30天):模型训练
恭喜你,如果学到这里,你基本可以找到一份大模型 AI相关的工作,自己也能训练 GPT 了!通过微调,训练自己的垂直大模型,能独立训练开源多模态大模型,掌握更多技术方案。
到此为止,大概2个月的时间。你已经成为了一名“AI小子”。那么你还想往下探索吗?
- 为什么要做 RAG
- 什么是模型
- 什么是模型训练
- 求解器 & 损失函数简介
- 小实验2:手写一个简单的神经网络并训练它
- 什么是训练/预训练/微调/轻量化微调
- Transformer结构简介
- 轻量化微调
- 实验数据集的构建
- …
第四阶段(20天):商业闭环
对全球大模型从性能、吞吐量、成本等方面有一定的认知,可以在云端和本地等多种环境下部署大模型,找到适合自己的项目/创业方向,做一名被 AI 武装的产品经理。
- 硬件选型
- 带你了解全球大模型
- 使用国产大模型服务
- 搭建 OpenAI 代理
- 热身:基于阿里云 PAI 部署 Stable Diffusion
- 在本地计算机运行大模型
- 大模型的私有化部署
- 基于 vLLM 部署大模型
- 案例:如何优雅地在阿里云私有部署开源大模型
- 部署一套开源 LLM 项目
- 内容安全
- 互联网信息服务算法备案
- …
学习是一个过程,只要学习就会有挑战。天道酬勤,你越努力,就会成为越优秀的自己。
如果你能在15天内完成所有的任务,那你堪称天才。然而,如果你能完成 60-70% 的内容,你就已经开始具备成为一名大模型 AI 的正确特征了。
这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费
】

为武汉地区的开发者提供学习、交流和合作的平台。社区聚集了众多技术爱好者和专业人士,涵盖了多个领域,包括人工智能、大数据、云计算、区块链等。社区定期举办技术分享、培训和活动,为开发者提供更多的学习和交流机会。
更多推荐
所有评论(0)