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

前面的文章依次介绍了如何截断历史会话的对话记录,包括按照记录数量截断、按照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测试代码:

复制代码
# 本地知识库
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代码,根据提示输入问题"人工智能",输出日志结果如下:

复制代码
请输入问题(输入 q 退出):人工智能

===== 本地 RAG 回答 =====
问题: 人工智能

答案:
- 人工智能(AI)是一门使机器模拟人类智能的技术。

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

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

相关推荐
一直走下去-明6 分钟前
简单的http抓包解包完整代码
开发语言·python
雷帝木木23 分钟前
数据湖与数据仓库:从理论到实践
人工智能·python·深度学习·机器学习
小小测试开发26 分钟前
AI Agent 评测确定性:snapshot → fork → act → assert → diff 的状态孪生测试世界
人工智能
数字化转型分享点滴40 分钟前
机加工车间上线 SH‑AIOT 物联网会遇到哪些常见实施难点
python·物联网
咖啡星人k41 分钟前
2025 AI编程进入“自动驾驶“时代:我用MonkeyCode把Agent、MCP和AI原生工作流跑通了
人工智能·自动驾驶·prompt·aigc·ai编程·ai-native
jike_20261 小时前
4款会议翻译转写工具对比:多语言、方言和线下会议怎么选?
人工智能·语音识别·iphone
闻道且行之1 小时前
图片处理助手|泊松融合原理 + C++ 工程实现,seamlessClone 三模式一次讲透
数据库·c++·人工智能·opencv
ages_1231 小时前
AI销售手机技术架构深度解析:从MDM终端管控到LLM业务赋能的完整闭环
人工智能·智能手机·ai销售手机·ai拓客·ai员工手机·剪流ai员工手机
正经教主1 小时前
AI提示词工程(专家级)第26课:对抗性提示与模型安全
人工智能
0566461 小时前
agent学习——流式响应与文本切分
网络·python·学习