从零吃透 Naive RAG:原理、流程、环境搭建与完整实战
Note: 对AI 技术感兴趣的小伙伴,可以关注上方,私信我发送 "AI资料",即可获取AI相关资料和源码。
一、前言:为什么 RAG 成为大模型落地的刚需
随着大语言模型(LLM)广泛落地,知识滞后、领域知识缺失、AI 幻觉三大核心问题逐渐暴露,严重制约了纯大模型在企业私有知识库、行业问答、内部文档检索等场景的应用。
- 时效性短板:大模型训练数据存在时间截止点,无法获取最新资讯、实时业务数据;
- 知识覆盖有限:难以覆盖企业内部文档、垂直行业专业资料等私有数据;
- AI 幻觉:面对陌生知识时,模型容易编造虚假内容,出现 “一本正经胡说八道” 的情况。
为解决以上痛点,行业主流有三种解决方案:提示词工程、模型微调、RAG 检索增强生成。三者对比如下:
| 方案 | 知识更新能力 | 实现复杂度 | 成本 | 适用场景 |
|---|---|---|---|---|
| 提示词工程 | 低(依赖模型原有知识) | 低 | 低 | 静态通用知识场景 |
| 模型微调 | 中(需重新训练模型) | 高 | 高 | 知识固定、长期不更新的垂直领域 |
| RAG | 高(实时检索外部数据) | 中 | 中 | 需频繁更新知识、私有文档问答场景 |
RAG(Retrieval Augmented Generation,检索增强生成)凭借低成本、易迭代、实时更新的优势,成为企业搭建私有知识库的首选方案。而Naive RAG(朴素 RAG) 是 RAG 技术的最基础形态,也是学习进阶 RAG、Agent-RAG 的必经之路。本文结合智泊 AI 实战课程内容,全面讲解 Naive RAG 核心原理、全流程拆解、环境配置、工具使用以及基于 LangChain V1.x 的代码实战,同时讲解低代码平台快速落地方案。
二、RAG 与 Naive RAG 核心概念解析
2.1 什么是 RAG
RAG 的本质可以概括为:RAG = 大模型 LLM + 外部私有知识库。我们可以把 RAG 理解为开卷考试:大模型不再仅凭自身记忆答题,而是先翻阅指定的外部文档(知识库),结合文档内容再组织答案,从根源上减少幻觉、补充私有知识。完整逻辑链路:用户提问 → 检索相关文档 → 用文档内容增强提示词 → 大模型基于上下文生成答案。
2.2 什么是 Naive RAG
Naive RAG 即朴素检索增强生成,是 RAG 技术的原始基础架构,无复杂的前置优化、检索重排、后置过滤等环节,仅保留索引化、检索、增强生成三大核心线性流程。它架构极简、开发门槛低,适合初学者入门、快速搭建原型以及小规模知识库使用,也是所有进阶 RAG(Advanced RAG、Agentic RAG)的底层基座。
2.3 Naive RAG 整体工作流
Naive RAG 严格遵循三大阶段,流程单向线性,无循环优化:
- 索引化阶段(离线预处理):原始文档 → 文档分块 → 文本向量化 → 向量与文本存入向量数据库;
- 检索阶段(在线查询):用户问题 → 问题向量化 → 向量数据库相似度检索 → 返回 Top-K 相关文档块;
- 增强生成阶段:拼接「用户问题 + 检索到的文档上下文」构造提示词 → 输入大模型 → 生成最终答案并返回用户。
三、Naive RAG 核心模块深度拆解
本节针对三大阶段的核心技术点逐一讲解,包含文档分块、文本向量化、相似度计算、向量数据库四大关键模块。
3.1 模块一:文档加载与分块(Chunk)
文档分块是索引阶段的第一步,目的是拆分长文档,一方面适配大模型上下文长度限制,另一方面提升检索精准度。如果文档过长,单块文本语义杂乱;如果分块过细,会割裂完整语义。
3.1.1 主流分块策略
- 固定字符分割:按照指定字符长度切分,搭配滑动窗口(Overlap),保证相邻块语义连贯,适合通用文档;
- 按句子 / 段落分割:以句号、换行符为分割依据,适合小说、公文等格式规整的文本;
- 递归字符分割(RecursiveCharacterTextSplitter):LangChain 默认推荐方案,按照「段落→换行→句号→空格」优先级递归切割,兼顾语义完整性,是工业界最常用的分块方式。
3.1.2 分块关键参数
chunk_size:单个文本块最大字符数,常规取值 512~1000;chunk_overlap:块之间重叠字符数,一般设置为 chunk_size 的 10% 左右,避免语义断裂。
3.2 模块二:文本向量化(Embedding)
文本无法直接进行相似度匹配,需要通过嵌入模型(Embedding Model) 将自然语言转换为高维数字向量,这个过程就是向量化。语义越相近的文本,对应的向量在高维空间中距离越近。
3.2.1 向量示例
例如文本长沙会被转换为一组数字向量:[0.8, -0.3, 0.5, 0.34 ...],不同嵌入模型输出的向量维度、数值均不相同。当用户输入湖南长沙景点时,该问句的向量会和长沙向量高度相似,从而被检索命中。
3.2.2 两类嵌入模型部署方案
方案 1:在线 API 模型(快速上手,无需本地算力)
依托各大云厂商提供的向量服务,兼容 OpenAI 接口规范,无需部署模型,调用 API 即可完成向量化。推荐使用:
- 阿里云百炼:通用文本向量 V3/V4,多语言支持,国内访问稳定;
- 腾讯混元、智谱 AI:同样兼容 OpenAI 接口,适配 RAG 场景。
安全规范:所有平台 API-KEY 统一配置到操作系统环境变量,代码中读取环境变量,禁止硬编码密钥。
方案 2:本地部署向量模型(私有化部署,无 API 调用费用)
借助Ollama框架可一键本地部署开源嵌入模型,适合内网、私有化项目。主流模型推荐 BGE-M3(智源研究院出品):
- 特性:支持 100 + 语言、多粒度文本处理(最长 8192 token)、检索性能优异,是企业级常用开源嵌入模型;
- 部署步骤:
- 安装 Ollama(支持 Windows/Mac/Linux);
- PowerShell 执行命令拉取模型:
ollama pull bge-m3; - 执行
ollama list查看已部署模型,验证安装成功。
3.3 模块三:向量相似度计算
向量化完成后,检索阶段需要计算查询向量和文档块向量的相似度,主流计算方法有三种:
- 余弦相似度(Cosine):衡量向量夹角大小,夹角越小相似度越高,RAG 场景首选方案,不受向量长度影响;
- 欧式距离(L2):计算向量空间直线距离,距离越小越相似;
- 点积:适用于归一化后的向量,计算速度快,常搭配余弦相似度使用。
3.4 模块四:向量数据库
向量数据库是专门存储、检索高维向量的数据库,承担「向量存储」和「相似度检索」两大核心职责,是 RAG 架构的存储核心。
3.4.1 主流向量数据库对比
| 数据库 | 开源状态 | 核心优势 | 适用场景 |
|---|---|---|---|
| Chroma | 开源 | 轻量、易集成、上手简单,原生适配 LangChain | 个人项目、中小型原型、本地测试 |
| Milvus | 开源 | 分布式、毫秒级检索、支持十亿级向量,国内生态完善 | 企业级大规模知识库、分布式部署 |
| Pinecone | 闭源 | 功能丰富,支持去重、排名跟踪,托管服务成熟 | 海外项目、云端托管场景 |
| Faiss | 开源(Meta) | 批量检索速度极快,图像 + 文本检索通用 | 大规模检索、推荐系统、图像检索 |
3.4.2 实战选型建议
Naive RAG 入门学习、本地测试优先选择 Chroma,部署零依赖、API 简洁;企业正式环境优先 Milvus,保障高并发和大数据量检索。
四、运行环境整体配置
本文实战基于课程统一环境,所有代码基于 Python 3.11 + LangChain V1.x 开发,兼容 OpenAI 接口标准。
4.1 基础环境准备
- 搭建 Python 3.11 虚拟环境,隔离项目依赖;
- 批量安装依赖库:将项目所需库写入
requirements.txt,虚拟环境中执行命令:pip install -r requirements.txt - 大模型密钥配置:将阿里云百炼、DeepSeek、腾讯混元等平台的 API-KEY 添加到系统环境变量,代码统一读取环境变量,保障密钥安全。
4.2 工具备选(低代码快速落地)
如果是非开发人员(如 AI 产品经理),无需编写代码,可使用 FastGPT 低代码平台快速搭建 Naive RAG 知识库:
- 访问地址:国内版 https://fastgpt.cn/zh,微信扫码 + 手机号登录,新用户赠送免费积分;
- 三步搭建 RAG 应用:创建知识库 → 上传文档 → 创建对话 Agent 并调试;
- 支持功能:可视化配置提示词、调整检索阈值、引用上限,开箱即用,适合快速验证业务场景。
五、基于 LangChain V1.x + Chroma 完整代码实战
本节提供可直接运行的 Naive RAG 完整代码,分为文档分块→向量化→向量库存储→相似度检索→问答链搭建全流程,使用本地 BGE-M3 嵌入模型 + Chroma 向量库 + 兼容 OpenAI 接口的大模型。
5.1 代码实现
# 1. 导入依赖库
import os
from langchain_text_splitters import RecursiveCharacterTextSplitter
from langchain_community.document_loaders import TextLoader
from langchain_community.embeddings import OllamaEmbeddings
from langchain_community.vectorstores import Chroma
from langchain_openai import ChatOpenAI
from langchain.chains import RetrievalQA
from langchain.prompts import PromptTemplate
# 2. 全局配置(读取系统环境变量,兼容OpenAI接口)
# 阿里云百炼接口地址
# 3. 加载本地文档(支持txt、md等纯文本格式)
# 4. 文档分块:递归字符分割
# 5. 初始化嵌入模型(本地Ollama部署的BGE-M3)
# 6. 构建向量数据库并持久化存储
# 7. 构建Naive RAG问答链
# 8. 主函数:执行Naive RAG全流程
if __name__ == "__main__":
# 替换为你的本地文档路径
doc_path = "./company_knowledge.txt"
# 1. 加载文档
raw_docs = load_documents(doc_path)
# 2. 文档分块
doc_chunks = split_documents(raw_docs)
# 3. 初始化嵌入模型
emb_model = get_embedding()
# 4. 构建向量库
chroma_db = build_vector_db(doc_chunks, emb_model)
# 5. 构建RAG问答链
rag_qa = build_rag_chain(chroma_db)
# 6. 发起问答测试
user_query = "公司的考勤制度是什么?"
result = rag_qa.invoke(user_query)
# 打印结果
print("=== 大模型回答 ===")
print(result["result"])
print("\n=== 检索到的参考文档 ===")
for idx, doc in enumerate(result["source_documents"]):
print(f"文档{idx+1}:{doc.page_content[:200]}...")
5.2 代码核心解析
- 文档加载:使用
TextLoader加载本地文本文件,支持 UTF-8 编码,适配中文文档; - 递归分块:
RecursiveCharacterTextSplitter优先按段落、句子切割,最大程度保留语义; - 本地嵌入模型:通过
OllamaEmbeddings调用本地 BGE-M3,无需调用第三方 API,适合私有化部署; - 向量库持久化:Chroma 设置
persist_directory,向量数据保存到本地,重复运行项目无需重复向量化,节省算力; - 检索器配置:
k=3代表每次检索返回 3 个最相关的文档块,可根据业务调整; - 提示词约束:强制模型仅基于检索文档回答,进一步规避 AI 幻觉。
六、Naive RAG 优势、局限性与优化方向
6.1 核心优势
- 架构极简:线性流程,模块解耦,学习和维护成本低;
- 落地快速:十几行核心代码即可搭建可用知识库原型,适合需求快速验证;
- 资源友好:对硬件算力要求低,个人电脑、普通服务器均可运行;
- 迭代简单:新增文档仅需重新执行索引流程,无需微调模型。
6.2 明显局限性(也是进阶 RAG 的优化方向)
Naive RAG 无任何前置、后置优化,在复杂场景下缺陷明显:
- 检索精度不足:仅依赖基础向量相似度,易召回无关文档,长文本、歧义问题表现差;
- 无重排机制:检索到 Top-K 文档后直接送入大模型,无法过滤低相关内容;
- 无法动态判断检索必要性:所有问题都强制检索,增加算力消耗(如闲聊类问题无需查询知识库);
- 上下文拼接简单:未做文档摘要、上下文压缩,容易触发大模型上下文超限。
6.3 主流优化方向(进阶预告)
针对 Naive RAG 的缺陷,行业衍生出 Advanced RAG,核心优化点:
- 前置优化:问题改写、检索意图识别、判断是否需要检索;
- 检索优化:多路检索(向量 + 关键词混合检索)、检索结果重排;
- 后置优化:上下文过滤、摘要压缩、引用溯源;
- 架构升级:结合 AI Agent 实现多轮对话、自主规划检索。
七、总结与学习路线
7.1 全文核心总结
- 定位:Naive RAG 是 RAG 技术的入门基石,核心为「索引 - 检索 - 生成」三大线性流程,主打简单、快速落地;
- 核心组件:文档分块、Embedding 向量化、相似度计算、向量数据库四大模块缺一不可;
- 部署方案:开发者选用 LangChain+Chroma/Milvus 代码实现,非开发人员使用 FastGPT 等低代码平台;
- 价值:解决大模型知识滞后、AI 幻觉问题,是企业私有知识库、文档问答系统的首选基础方案;
- 边界:Naive RAG 仅适用于简单场景,复杂业务需迭代为 Advanced RAG、Agent RAG。
7.2 循序渐进学习路线
- 入门阶段:理解 Naive RAG 原理、各模块作用,搭建 Python+LangChain 环境,运行本文示例代码;
- 进阶阶段:尝试不同分块策略、替换 Milvus/Faiss 向量库,对比检索效果差异;
- 实战阶段:使用 FastGPT 搭建业务知识库,调试提示词、检索参数,落地真实业务;
- 高阶阶段:学习 Advanced RAG 优化方案、RAG 评估指标,结合 AI Agent 实现多轮智能问答。
九、附录:常用工具与地址汇总
- 低代码 RAG 平台:FastGPT 国内版 https://fastgpt.cn/zh
- 本地模型部署框架:Ollama 官网 https://ollama.com/
- 开源嵌入模型:BGE-M3(智源研究院),Ollama 一键拉取
ollama pull bge-m3 - 向量数据库文档:Chroma、Milvus 官方文档
- 大模型 API 推荐:阿里云百炼、腾讯混元(兼容 OpenAI 接口)
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐



所有评论(0)