• 最近几年,生成式AI的爆发彻底带火了“大模型”这个词——从聊天机器人到图像生成,从代码辅助到企业知识库,大模型似乎无处不在。但对初学者来说,“大模型是什么?”“为什么需要RAG?”“怎么动手搭一个应用?”这些问题往往让人望而却步。今天这篇文章,就从基础概念到实战操作,带你一步步搞懂大模型与RAG,最后还能亲手搭一个能聊天的小应用。

一、初识大模型:不止是“会聊天的AI”

先别急着谈复杂的技术,我们先搞清楚:大模型到底是什么?

简单说,大模型是“参数量巨大、靠海量数据训练出来的深度学习模型”——比如GPT、BERT这些,参数量动辄几十亿甚至上千亿。但它的核心不是“大”,而是“强”:能处理文本、图像等多模态任务,还能举一反三(泛化能力)。

1. 大模型的3个核心优势

  • 多任务能力:一个模型能搞定文本生成、翻译、问答——比如用同一个大模型,既能写文案,又能回答产品问题。
  • 生成能力突出:能写出连贯的文章、生成逼真的图像,甚至编代码,不像传统AI只能“选择题式”输出。
  • 泛化能力强:不用针对每个小任务重新训练,稍微调整(微调)就能适配新场景——比如把通用大模型微调后,变成专属的客服模型。

2. 大模型的“短板”:别把它当“万能神”

很多人觉得大模型“无所不能”,但实际它有不少局限:

  • 会“胡思乱想”(幻觉):比如你问它“2025年的春节是哪一天”,如果训练数据没更到2025年,它可能编一个日期给你。
  • 知识“过时”:大模型的知识截止到训练时,比如2023年训练的模型,不知道2024年的新事件。
  • 吃“资源”:训练一次要花几百万甚至上千万,还得用几十上百个GPU,普通人根本玩不起。
  • “黑箱”难解释:它告诉你“答案是A”,但你问“为什么是A”,它说不清楚——这对医疗、金融等需要可解释性的场景很不友好。

二、为什么需要RAG?给大模型装一个“外置知识库”

既然大模型有“知识过时”“幻觉”的问题,怎么解决?答案就是RAG(检索增强生成)

1. RAG的核心逻辑:“先查资料,再回答”

大模型的问题在于“知识存在脑子里,更新慢还可能记错”;而RAG的思路是:让大模型回答前先“查外部资料”,用最新、最准确的信息来辅助生成答案

举个实际例子:电商客服机器人用RAG的流程:

  1. 用户问:“我上周买的衣服什么时候到?”
  2. 机器人先去“外部知识库”(订单系统、物流数据库)查这个用户的订单号和物流信息;
  3. 把“订单20241225发货,预计1230送达”这个信息传给大模型;
  4. 大模型根据这个信息,生成自然语言回答:“您的衣服已于12月25日发货,预计12月30日到哦~”

这样一来,既解决了大模型“不知道实时物流”的问题,又避免了“编物流信息”的幻觉。

2. RAG的价值:3个核心好处

  • 实时性:外部知识库可以随时更新,不用重新训练大模型——比如物流信息变了,改数据库就行。
  • 准确性:有“资料”做依据,回答不容易出错,还能附上引用来源(比如“来自您的订单号XXX”)。
  • 低成本:不用花几百万微调大模型,只要搭个知识库和检索系统,小团队也能玩。

三、RAG技术架构:拆解开,其实不难

RAG的经典架构分两大阶段:数据索引阶段(准备“资料”)和数据查询阶段(用“资料”回答)。我们一步步拆:

1. 数据索引阶段:把“资料”整理好,方便查找

简单说,就是把原始文档(PDF、Excel、网页)变成“能快速检索的格式”,步骤如下:

  • 加载(Loading):把各种来源的资料读进来——比如本地的产品手册、API接口拉取的物流数据。
  • 分割(Splitting):把大文档切成小“知识块”(Chunk)——比如把100页的手册,按章节切成200字左右的小块。为什么要切?因为大模型一次能处理的文字有限,小块更方便检索。
  • 嵌入(Embedding):把“知识块”变成计算机能懂的“数字向量”——比如“物流发货”变成一串数字[0.12, 0.34, …]。相似的文字,向量也相似,这样就能快速找“相关资料”。
  • 索引(Indexing):把向量存到“向量数据库”里——比如用Milvus、Pinecone,方便后续快速检索。

2. 数据查询阶段:用户提问后,怎么“查资料+回答”

用户输入问题后,流程是这样的:

  • 检索前处理:把用户的问题优化一下——比如用户问“我的货啥时候到”,改成“查询用户XXX的订单物流状态”,提高检索精度。
  • 检索:把问题也变成向量,去向量数据库里找“最像”的知识块——比如找到“订单XXX发货时间1225”。
  • 检索后处理:过滤没用的信息,给知识块排序——比如把“物流信息”排在最前面,“产品介绍”排在后面。
  • 生成:把“问题+排序后的知识块”传给大模型,让它生成自然语言回答——这一步就是“增强生成”的核心。

四、大模型、RAG、Agent:搞懂三者的“分工”

很多初学者会混淆这三个概念,其实它们是“基础-工具-执行者”的关系,我们用一张表讲清楚:

角色 核心能力 打个比方 适用场景
大模型 理解语言、生成内容(基础引擎) 一台“电脑主机” 写文案、翻译、简单问答
RAG 补充外部知识(知识增强工具) 主机的“外置硬盘+搜索引擎” 企业知识库、客服问答
Agent(智能体) 自主规划任务、调用工具(执行者) 会自己“查资料+做报表”的员工 旅行规划、智能运维、数据分析

三者关系:大模型是基础,RAG给大模型“补知识”,Agent用“大模型+RAG”去完成复杂任务——比如Agent要做“旅行规划”,会先调用RAG查“目的地天气”,再用大模型生成“行程表”,全程不用人插手。

五、实战:1小时搭一个RAG聊天应用

光说不练假把式,我们用llama-index框架(专门做RAG的工具)+DeepSeek大模型,搭一个能聊天的应用。步骤超详细,新手也能跟着做!

1. 准备工作:搭好开发环境

首先要创建“虚拟环境”(避免依赖冲突),用Python 3.8+版本:

# 1. 创建项目文件夹(比如叫rag-chat),进入文件夹
mkdir rag-chat && cd rag-chat

# 2. 创建虚拟环境(Windows)
python -m venv .venv

# 3. 激活虚拟环境(Windows PowerShell)
.venv\Scripts\Activate.ps1

# 4. 查看当前模块(确认环境激活成功)
pip list

激活后,终端会显示(.venv),说明环境没问题。

2. 安装llama-index框架

llama-index是做RAG的“利器”,直接用pip安装:

# 安装核心库
pip install llama-index

# 安装OpenAI兼容的LLM适配器(因为DeepSeek API兼容OpenAI)
pip install llama-index-llms-openai

3. 获取DeepSeek API Key(免费!)

DeepSeek给新用户送500万Tokens,足够我们测试:

  1. 去DeepSeek官网注册:https://www.deepseek.com/
  2. 登录后,进入“开放平台”→“API keys”→“创建API key”;
  3. 复制API key(只显示一次,一定要保存好!)。

4. 写代码:配置模型和聊天引擎

我们要写两个文件:llms.py(配置模型)和main.py(聊天逻辑)。

(1)配置模型:llms.py
from llama_index.llms.openai import OpenAI

def deepseek_llm(**kwargs):
    """配置DeepSeek模型"""
    return OpenAI(
        api_key="你的DeepSeek API Key",  # 替换成你保存的Key
        model="deepseek-chat",          # DeepSeek的聊天模型名
        api_base="https://api.deepseek.com/v1",  # DeepSeek的API地址
        temperature=0.7,                # 0-1,越高回答越有创意,越低越严谨
        **kwargs
    )
(2)聊天逻辑:main.py
from llama_index.core import Settings
from llama_index.core.chat_engine import SimpleChatEngine
from llms import deepseek_llm  # 导入上面配置的DeepSeek模型

# 1. 设置全局大模型为DeepSeek
Settings.llm = deepseek_llm()

# 2. 创建简单聊天引擎
chat_engine = SimpleChatEngine.from_defaults()

# 3. 启动聊天循环(输入exit退出)
print("进入聊天模式,输入exit退出~")
while True:
    user_input = input("你:")
    if user_input.lower() == "exit":
        print("聊天结束!")
        break
    # 流式输出回答(避免等太久)
    response = chat_engine.stream_chat(user_input)
    print("AI:", end="")
    for token in response.response_gen:
        print(token, end="")
    print("\n")

5. 解决常见报错:“Unknown model ‘deepseek-chat’”

运行main.py时,可能会报错“找不到deepseek-chat模型”——因为llama-index默认只支持OpenAI的模型,我们要手动添加DeepSeek:

  1. 找到.venv\Lib\site-packages\llama_index\llms\openai\utils.py文件;
  2. 打开文件,找到ALL_AVAILABLE_MODELSCHAT_MODELS这两个字典;
  3. 在前面添加DeepSeek的配置:
# 添加这几行
DEEPSEEK_MODELS = {
    "deepseek-chat": 64000,  # 64000是模型支持的最大token数
}

# 更新现有字典
ALL_AVAILABLE_MODELS = {
    **DEEPSEEK_MODELS,  # 把DeepSeek加进去
    **O1_MODELS,
    **GPT4_MODELS,
    # 其他原有模型...
}

CHAT_MODELS = {
    **DEEPSEEK_MODELS,  # 聊天模型也加进去
    **O1_MODELS,
    **GPT4_MODELS,
    # 其他原有模型...
}
  1. 保存文件,重新运行main.py

6. 试运行:开始聊天!

在终端运行:

python main.py

输入问题比如“介绍一下RAG的作用”,AI会基于DeepSeek模型+llama-index的逻辑,生成准确回答——如果后续想加自己的知识库(比如产品手册),只要在代码里加“加载文档”的逻辑就行,llama-index会自动处理索引和检索。

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐