魅力程序猿

  • 首页
  • Java
  • Android
  • APP
    • 扑克计分器
    • Video Wallpaper
  • 联系我
  • 关于我
  • 资助
道子
向阳而生
  1. 首页
  2. AI技术
  3. 正文

大模型基础(五):RAG入门-让大模型学会"开卷考试"

2026年5月5日 2点热度 0人点赞 0条评论

📰 来源: 博客园


大模型最头疼的问题是什么?"幻觉"——一本正经地胡说八道。RAG(检索增强生成)是如何解决这个问题的?这篇文章带你从零理解RAG技术。

一、大模型的三大"知识痛点"

1.1 痛点一:知识效率低

你以为大模型读了那么多书,应该记得很牢?

实际上,模型对知识的记忆效率惊人地低:

大模型就像一个"记忆力很差的学生",读了100遍才记住一个知识点,而且还会记错。

1.2 痛点二:知识是静态的

大模型的知识来自预训练数据,有一个致命问题:时效性。

问:"2024年世界杯冠军是谁?"

GPT-4(训练数据截止2023年):"我无法回答这个问题..."

1.3 痛点三:幻觉问题严重

最可怕的问题:幻觉(Hallucination)

模型会编造看似合理但完全错误的内容:

问:"请介绍一下《星际穿越》这部电影"

模型错误回答:"这部电影由詹姆斯·卡梅隆执导..."
实际:克里斯托弗·诺兰执导!

模型自信地说出错误信息,用户很难辨别!

二、RAG:从闭卷考试到开卷考试

2.1 什么是RAG?

RAG(Retrieval-Augmented Generation,检索增强生成)的核心思想:

不要让模型死记硬背,而是让它"现场查资料"!

2.2 RAG的工作原理

f: Q × D → A

Q = 用户问题(Query)
D = 数据源(Documents)
A = 答案(Answer)

2.3 RAG解决了什么?

研究人员把RAG任务分为四个层级:

问题:"公司成立于哪年?"
文档:"公司成立于2010年..."
回答:"2010年"(直接找到)
问题:"复旦计算机学院和法学院在一个校区吗?"
文档A:"计算机学院在张江校区"
文档B:"法学院在邯郸校区"
回答:"不在一个校区,计算机学院在张江,法学院在邯郸"
问题:"患者发热、咳嗽、乏力,可能是什么病?"
文档A:"流感症状包括发热、咳嗽..."
文档B:"新冠症状包括发热、咳嗽、乏力..."
回答:"可能是流感或新冠,建议就医确诊"
问题:"当前经济形势如何影响公司发展?"
需要:宏观经济知识 + 行业分析 + 公司具体情况
回答:需要深层专业知识,可能涉及多步推理

四、RAG系统的六大模块

4.2 模块一:索引模块

作用:把文档划分成可管理的片段(Chunk)

  • 文档太长,直接检索效率低
  • 4.3 模块二:检索前优化

    作用:让用户查询更精准,更容易找到相关文档

    原问题:"Python如何读取文件"
    
    扩展后:
    - "Python文件读取方法"
    - "Python open函数用法"
    - "Python读取txt文件"
    
    原问题(模糊):"那个东西怎么弄"
    
    改写后:"如何在Python中读取文本文件"
    

    3. HyDE方法(有趣!)

    原问题:"什么是机器学习?"
    
    先让模型"脑补"一个假设答案
    然后拿这个假设答案去检索文档
    为什么?因为"答案和答案"比"问题和答案"语义更相似!
    

    4.4 模块三:检索模块

    作用:从知识库中找到相关文档

    文档A:"人工智能是一门重要技术"
    文档B:"机器学习是人工智能核心技术"
    
    词汇表:["人工智能", "机器学习", "技术"]
    
    查询:"人工智能技术"
    向量:[1, 0, 1]
    
    文档A向量:[1, 0, 1] → 完全匹配!
    文档B向量:[1, 1, 1] → 匹配度较高
    
    查询向量:[0.2, 0.8, -0.3, ...](语义向量)
    文档A向量:[0.21, 0.79, -0.28, ...]
    文档B向量:[0.1, 0.5, 0.3, ...]
    
    计算相似度:A比B更相似
    即使文档A没有"机器学习"这个词,但因为语义接近,也能检索出来
    

    4.5 模块四:检索后优化

    作用:精炼检索结果,提升质量

  • 检索结果可能包含噪声(不相关内容)
  • 模型对长文本有"中间遗忘"问题
  • 检索结果:[文档3, 文档1, 文档5, 文档2]
    (按相似度排序)
    
    用更精细的模型重新排序:
    [文档1, 文档2, 文档3, 文档5]
    (把最相关的放前面)
    
    原始文档(1000字):"人工智能是...发展历程...应用领域..."
    
    压缩后(200字):"人工智能是模拟人类智能的技术,应用包括..."
    

    3. MMR算法
    在"相关性"和"新颖性"之间平衡,避免返回内容都太相似。

    4.6 模块五:生成模块

    作用:基于检索结果生成答案

    4.7 模块六:编排模块

    作用:智能调度,决定流程走向

  • 路由:根据问题类型选择不同处理流程
  • 调度:动态调整检索和生成
  • 融合:整合多个分支的结果
  • 5.1 线性模式(最简单)

    适用:简单直接的查询任务

    5.2 条件模式(智能路由)

  • 医学问题 → 选择可靠来源 + 严格约束
  • 闲聊问题 → 允许创意回答 + 宽松约束
  • 5.3 分支模式(并行处理)

    优点:提高全面性和多样性

    5.4 循环模式(迭代优化)

    适用:需要多轮完善的复杂问题

    7.1 企业知识库问答

    场景:企业内部文档、手册、政策查询

    场景:产品FAQ、售后支持

    7.3 法律/医疗专业问答

    场景:法律条文查询、医学文献检索

    场景:个人笔记、文档检索

    工具:Obsidian + RAG插件、Notion AI等

    # 用LangChain实现简单RAG
    from langchain.vectorstores import Chroma
    from langchain.embeddings import OpenAIEmbeddings
    from langchain.llms import OpenAI

    # 1. 加载文档
    documents = load_documents("my_docs/")


    🔗 原文链接: 点击阅读原文

    标签: AI 人工智能 技术博客
    最后更新:2026年5月5日

    daozi

    这个人很懒,什么都没留下

    点赞
    < 上一篇

    文章评论

    razz evil exclaim smile redface biggrin eek confused idea lol mad twisted rolleyes wink cool arrow neutral cry mrgreen drooling persevering
    取消回复
    搜索
    联系方式

    QQ群:179730949
    QQ群:114559024
    欢迎您加入Android大家庭
    本人QQ:136049925

    赐我一丝安慰
    给我一点鼓励

    COPYRIGHT © 2023 魅力程序猿. ALL RIGHTS RESERVED.

    Theme Kratos Made By Seaton Jiang

    豫ICP备15000477号