首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >15天学会AI应用开发(七)有了大模型为什么还要引入RAG

15天学会AI应用开发(七)有了大模型为什么还要引入RAG

作者头像
aqi00
发布2026-05-29 12:24:29
发布2026-05-29 12:24:29
990
举报
文章被收录于专栏:老欧说安卓老欧说安卓

前面的文章依次介绍了如何截断历史会话的对话记录,包括按照记录数量截断、按照Token长度截断,以及浓缩为摘要截断等等,其中摘要操作又分为三大类:

1、使用第三方的摘要库对文本摘要;

2、使用在线大模型对文本摘要;

3、使用离线大模型对文本摘要;

以上对会话记录的各种处理操作,统称为AI应用的上下文管理,即让AI理解用户之前的意图。接下来将开启有关RAG部分的AI应用开发教程介绍。

一、什么是RAG

RAG的全称是Retrieval-augmented Generation,意思是检索增强生成,它是一种结合检索和生成技术的模型。RAG通过引用外部知识库的信息来生成回答,具有较强的可解释性和定制能力,常用于客服系统、智能助手等问答任务。

虽然大模型很智能了,但它有两个短板:

1、知识有截止日期,不懂新知识

因为大模型训练到某一天就停止学习,比如模型训练数据截止到2025年,那么2026年之后发生的事情就不懂了。并且用户的个人文档、公司文档等内部资料,大模型也都不知道。

2、会幻觉、爱胡说八道

大模型是靠概率猜下一个字,不是真的 “懂知识”。没人约束它时,容易编事实、编人名、编数据、编政策,一本正经地胡说八道。

而RAG会分析并消化用户提供的文档资料,从中构建专属的知识库,再把这些资料喂给大模型,使得大模型能够照着资料回答问题。

简而言之,大模型是聪明但记性差、爱吹牛的人,而RAG是翻课本、翻知识库、查笔记的人。

二、如何使用RAG

RAG的使用流程包含下列五个步骤:

1、加载文档资料

读取 TXT、PDF、Word、HTML等格式的资料文件。

2、对文本分块

读出来的资料信息为长文本,需要切成一小段一小段,比如每段300字,防止太长浪费Token、太短又缺乏上下文。

3、向量化文本

接着把每段文字变成数字向量,计算机才能理解语义相似度。

4、存入向量数据库

把数字化后的向量和原始文本保存起来,比如保存到Chroma、FAISS、Milvus。

5、在用户提问时,检索向量数据库,并把结果反馈给大模型

用户输入的问题也要转成数字向量,并从向量数据库找出最相似的几段原文,再把问题与检索到的原文一起发给大模型,好让大模型基于给到的资料来回答,而非自己胡编乱造。

三、一个简单的仿RAG程序

完整的RAG会用到多个Python库,这里为了方便理解,先用一个简单的模拟程序来演示RAG的操作过程。

无需安装任何第三方库,仅仅根据基本的字符串查找来模拟RAG,下面是具体的Python测试代码:

代码语言:javascript
复制
# 本地知识库
knowledge_base = [
    "人工智能(AI)是一门使机器模拟人类智能的技术。",
    "RAG代表检索增强生成,它通过检索外部知识来提升大模型回答准确性。",
    "本地RAG不需要调用云端API,所有计算在本机完成,不消耗Token。",
    "FAISS是Facebook开源的向量检索库,适合做本地向量库。"
]
# 简单文本匹配检索(纯Python,无任何依赖)
def search(query):
    results = []
    for text in knowledge_base:
        if any(word in text for word in query.replace("?", "").split()):
            results.append(text)
    return results if results else ["未找到相关知识"]
# RAG 主函数
def rag(query):
    print("\n===== 本地 RAG 回答 =====")
    print("问题:", query)
    print("\n答案:")
    for res in search(query):
        print("-", res)
    print("="*40)
# 运行
if __name__ == "__main__":
    while True:
        q = input("\n请输入问题(输入 q 退出):")
        if q.lower() == "q":
            print("退出程序")
            break
        rag(q)

阅读以上代码,发现它根据知识库是否包含指定字符串来回答问题。

运行上面的Python代码,根据提示输入问题“人工智能”,输出日志结果如下:

代码语言:javascript
复制
请输入问题(输入 q 退出):人工智能
===== 本地 RAG 回答 =====
问题: 人工智能
答案:
- 人工智能(AI)是一门使机器模拟人类智能的技术。

可见该代码按照字符串匹配的方式,一旦在某条知识中找到指定字符串,就返回这条知识。

本系列的AI应用开发文章目录为《15天学会AI应用开发全目录(零基础小白,零Token消耗)》

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2026-05-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 老欧说安卓 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档