Note: 对AI 技术感兴趣的小伙伴,可以关注上方,私信我发送 "AI资料",即可获取AI相关资料和源码。

一、前言:为什么 RAG 成为大模型落地的刚需

随着大语言模型(LLM)广泛落地,知识滞后、领域知识缺失、AI 幻觉三大核心问题逐渐暴露,严重制约了纯大模型在企业私有知识库、行业问答、内部文档检索等场景的应用。

  1. 时效性短板:大模型训练数据存在时间截止点,无法获取最新资讯、实时业务数据;
  2. 知识覆盖有限:难以覆盖企业内部文档、垂直行业专业资料等私有数据;
  3. 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 严格遵循三大阶段,流程单向线性,无循环优化:

  1. 索引化阶段(离线预处理):原始文档 → 文档分块 → 文本向量化 → 向量与文本存入向量数据库;
  2. 检索阶段(在线查询):用户问题 → 问题向量化 → 向量数据库相似度检索 → 返回 Top-K 相关文档块;
  3. 增强生成阶段:拼接「用户问题 + 检索到的文档上下文」构造提示词 → 输入大模型 → 生成最终答案并返回用户。

三、Naive RAG 核心模块深度拆解

本节针对三大阶段的核心技术点逐一讲解,包含文档分块、文本向量化、相似度计算、向量数据库四大关键模块。

3.1 模块一:文档加载与分块(Chunk)

文档分块是索引阶段的第一步,目的是拆分长文档,一方面适配大模型上下文长度限制,另一方面提升检索精准度。如果文档过长,单块文本语义杂乱;如果分块过细,会割裂完整语义。

3.1.1 主流分块策略
  1. 固定字符分割:按照指定字符长度切分,搭配滑动窗口(Overlap),保证相邻块语义连贯,适合通用文档;
  2. 按句子 / 段落分割:以句号、换行符为分割依据,适合小说、公文等格式规整的文本;
  3. 递归字符分割(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)、检索性能优异,是企业级常用开源嵌入模型;
  • 部署步骤:
    1. 安装 Ollama(支持 Windows/Mac/Linux);
    2. PowerShell 执行命令拉取模型:ollama pull bge-m3
    3. 执行ollama list查看已部署模型,验证安装成功。

3.3 模块三:向量相似度计算

向量化完成后,检索阶段需要计算查询向量文档块向量的相似度,主流计算方法有三种:

  1. 余弦相似度(Cosine):衡量向量夹角大小,夹角越小相似度越高,RAG 场景首选方案,不受向量长度影响;
  2. 欧式距离(L2):计算向量空间直线距离,距离越小越相似;
  3. 点积:适用于归一化后的向量,计算速度快,常搭配余弦相似度使用。

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 基础环境准备

  1. 搭建 Python 3.11 虚拟环境,隔离项目依赖;
  2. 批量安装依赖库:将项目所需库写入requirements.txt,虚拟环境中执行命令:
    pip install -r requirements.txt
    
  3. 大模型密钥配置:将阿里云百炼、DeepSeek、腾讯混元等平台的 API-KEY 添加到系统环境变量,代码统一读取环境变量,保障密钥安全。

4.2 工具备选(低代码快速落地)

如果是非开发人员(如 AI 产品经理),无需编写代码,可使用 FastGPT 低代码平台快速搭建 Naive RAG 知识库:

  1. 访问地址:国内版 https://fastgpt.cn/zh,微信扫码 + 手机号登录,新用户赠送免费积分;
  2. 三步搭建 RAG 应用:创建知识库 → 上传文档 → 创建对话 Agent 并调试;
  3. 支持功能:可视化配置提示词、调整检索阈值、引用上限,开箱即用,适合快速验证业务场景。

五、基于 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 代码核心解析

  1. 文档加载:使用TextLoader加载本地文本文件,支持 UTF-8 编码,适配中文文档;
  2. 递归分块RecursiveCharacterTextSplitter优先按段落、句子切割,最大程度保留语义;
  3. 本地嵌入模型:通过OllamaEmbeddings调用本地 BGE-M3,无需调用第三方 API,适合私有化部署;
  4. 向量库持久化:Chroma 设置persist_directory,向量数据保存到本地,重复运行项目无需重复向量化,节省算力;
  5. 检索器配置k=3代表每次检索返回 3 个最相关的文档块,可根据业务调整;
  6. 提示词约束:强制模型仅基于检索文档回答,进一步规避 AI 幻觉。

六、Naive RAG 优势、局限性与优化方向

6.1 核心优势

  1. 架构极简:线性流程,模块解耦,学习和维护成本低;
  2. 落地快速:十几行核心代码即可搭建可用知识库原型,适合需求快速验证;
  3. 资源友好:对硬件算力要求低,个人电脑、普通服务器均可运行;
  4. 迭代简单:新增文档仅需重新执行索引流程,无需微调模型。

6.2 明显局限性(也是进阶 RAG 的优化方向)

Naive RAG 无任何前置、后置优化,在复杂场景下缺陷明显:

  1. 检索精度不足:仅依赖基础向量相似度,易召回无关文档,长文本、歧义问题表现差;
  2. 无重排机制:检索到 Top-K 文档后直接送入大模型,无法过滤低相关内容;
  3. 无法动态判断检索必要性:所有问题都强制检索,增加算力消耗(如闲聊类问题无需查询知识库);
  4. 上下文拼接简单:未做文档摘要、上下文压缩,容易触发大模型上下文超限。

6.3 主流优化方向(进阶预告)

针对 Naive RAG 的缺陷,行业衍生出 Advanced RAG,核心优化点:

  1. 前置优化:问题改写、检索意图识别、判断是否需要检索;
  2. 检索优化:多路检索(向量 + 关键词混合检索)、检索结果重排;
  3. 后置优化:上下文过滤、摘要压缩、引用溯源;
  4. 架构升级:结合 AI Agent 实现多轮对话、自主规划检索。

七、总结与学习路线

7.1 全文核心总结

  1. 定位:Naive RAG 是 RAG 技术的入门基石,核心为「索引 - 检索 - 生成」三大线性流程,主打简单、快速落地;
  2. 核心组件:文档分块、Embedding 向量化、相似度计算、向量数据库四大模块缺一不可;
  3. 部署方案:开发者选用 LangChain+Chroma/Milvus 代码实现,非开发人员使用 FastGPT 等低代码平台;
  4. 价值:解决大模型知识滞后、AI 幻觉问题,是企业私有知识库、文档问答系统的首选基础方案;
  5. 边界:Naive RAG 仅适用于简单场景,复杂业务需迭代为 Advanced RAG、Agent RAG。

7.2 循序渐进学习路线

  1. 入门阶段:理解 Naive RAG 原理、各模块作用,搭建 Python+LangChain 环境,运行本文示例代码;
  2. 进阶阶段:尝试不同分块策略、替换 Milvus/Faiss 向量库,对比检索效果差异;
  3. 实战阶段:使用 FastGPT 搭建业务知识库,调试提示词、检索参数,落地真实业务;
  4. 高阶阶段:学习 Advanced RAG 优化方案、RAG 评估指标,结合 AI Agent 实现多轮智能问答。

九、附录:常用工具与地址汇总

  1. 低代码 RAG 平台:FastGPT 国内版 https://fastgpt.cn/zh
  2. 本地模型部署框架:Ollama 官网 https://ollama.com/
  3. 开源嵌入模型:BGE-M3(智源研究院),Ollama 一键拉取 ollama pull bge-m3
  4. 向量数据库文档:Chroma、Milvus 官方文档
  5. 大模型 API 推荐:阿里云百炼、腾讯混元(兼容 OpenAI 接口)
Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐