AI

通俗易懂理解大模型RAG,看这篇就够了

转载:https://blog.csdn.net/m0_48891301/article/details/149194764

转载:https://blog.csdn.net/jbkjhji/article/details/153721303

什么是 RAG(检索增强生成)🔖


未来,每个产品经理都是 AI 产品经理,而每个 AI 产品经理都必须懂 RAG。

所谓RAG(Retrieval – Augmented Generation),即信息检索(Retrieval)+内容生成(Generation)。

我们平常使用的大模型(比如 ChatGPT)非常聪明,但它有一个问题:
它的“知识”是训练时学到的,不会自动更新。如果我们问它一些很新的问题,或者我们公司的内部资料,它可能就不知道。所以,RAG 技术就是为了解决这个问题而出现的。

RAG 的核心思路🔖


RAG 的全称是 Retrieval-Augmented Generation,中文叫“检索增强生成”。
简单理解就是:

先去找资料,再用AI来写答案。

它分成两个主要步骤:

1. 检索(Retrieval):当用户提问后,系统会先去一个“知识库”里找相关内容,这个知识库可以是。

  • 我们公司内部的文档;
  • 产品资料;
  • 客服问答;

甚至是技术手册等。系统不是靠关键词搜索,而是用“语义搜索”——也就是理解意思后再匹配。
(比如你问“怎么退货?”,它也能找到“退款流程”的内容。)

2.生成(Generation):找到相关资料后,系统会把这些内容交给大模型(比如 GPT)。

    模型会结合用户的问题和这些资料,生成一段自然、准确的回答。

    这样生成的结果有两个好处:

    • 更准确 —— 因为用到了我们提供的最新资料。
    • 更及时 —— 知识库一更新,答案也会自动更新。

    举个生活化的例子:想象一下你在公司做客服,客户问:

    “你们的会员积分可以兑换什么?”

    普通AI可能不知道,因为这属于公司的内部政策,但如果我们用了RAG系统:

    • 它会先在公司知识库里找到“会员积分兑换规则”;
    • 再让AI根据这些资料生成一段自然、清晰的回答。

    结果:客户得到准确的信息,AI也不会“乱编”,总结一句话, RAG 就像是:

    “AI的大脑 + 公司的知识库 = 会查资料又会说话的AI。”

    这样我们既能利用AI的语言能力,又能确保回答内容可靠、实时、贴合业务。

    相比于仅依赖大型语言模型的生成,RAG技术可以从外部知识库中检索信息,避免了模型的幻觉问题,并提升了对实时性要求较高问题的处理能力。与传统的知识库问答系统相比,RAG技术更加灵活,可以处理非结构化的自然语言文本。

    RAG 的详细工作流程通俗版🔖


    ① 向量化(理解问题)

    用户输入问题,比如:

    “如何报销差旅费?”
    

    系统先把这句话转成“向量”(一种能让电脑理解语义的数字形式),方便后续去匹配相似内容。

    ② 检索(查找相关内容)

    系统去知识库里找“意思最接近”的内容,比如:

    找到公司文档里一段:“差旅报销需提交发票和行程单,由财务审核。”
    

    ③ 增强(把资料塞给AI)

    系统把这些相关文档内容,和用户的问题一起发给AI模型,
    告诉它:“这是最新的资料,请参考这些内容来回答。”

    ④ 生成(写出最终回答)

    AI根据知识库内容,用自然语言生成一段完整的回答。
    这样生成的结果:

    • 更可靠(因为有依据)
    • 更及时(知识库更新就能反映)
    • 更可控(回答范围限定在业务知识内)

    RAG的核心理念是:先查资料,再回答问题。它让AI变成一个: 既能理解人话,又能查资料,还能生成准确答案的助手。

    通过 RAG,可以让大模型从指定的内部知识库“检索”准确的内容,再根据准确的内容“生成”回答内容,从而有效避免幻觉。

    比如,如果直接让大模型进行医疗诊断,由于大模型的本质是概率模型,因此它会提供大量错误或者不相关的信息。

    有了RAG,大模型就可以从海量的医学文献、病例库中直接检索与患者病症相关的知识,再生成诊断建议供医生参考,从而提高内容的准确性。

    接下来给大家介绍 RAG 的 7 个核心概念,看完以后,你会对 RAG 有更深入的认识。

    向量数据库🔖


    向量数据库是 RAG 最重要的基础设施之一。

    传统数据库的内容查询主要依赖“关键词匹配”,对查询的精确度要求很高。

    比如,如果你查询“如何提高工作效率”,而数据库只有“时间管理技巧”内容,那么就无法搜索出任何内容。

    而向量数据库就可以有效解决这个问题,它会把各种知识都转换成一组组数字(向量),这些数字能代表知识的内容和特点,

    当你在 RAG 系统中输入查找信息时,它会把输入信息也转换成一组数字(向量),然后在数据库中找出最相关的知识,从而实现“语义检索”。

    比如,下面的每个知识都转化为了一个 3 维向量(实际应用中可能把一个知识转化为几十甚至几千维的向量):

    • 时间管理:[0.12,0.23,0.46]
    • 工作地点:[0.92,0.82,0.65]
    • 考勤制度:[0.83,0.93,0.78]

    当用户查询“工作效率”,向量数据库就可以把“工作效率”转化为向量: [0.12,0.23,0.53]。

    显然它和“时间管理”的向量 [0.12,0.23,0.46] 相似度很高——从业务上来说,是因为“时间管理”是提高“工作效率”的一种有效方法,这就导致两者的语义高度相关。

    其实,这就是“语义检索”的过程。

    在传统客服系统中,由于依赖“关键词匹配”,在面对复杂咨询时,就很难给出用户想要的答案。

    而 AI 客服使用向量数据库,当用户咨询时,可以通过 “语义检索”快速找到最相关的答案,从而提升用户体验和满意度。

    混合检索🔖


    基于向量知识库的语义检索虽然很好,但是也存在 2 个问题:

    首先是面对超大数据量,语义检索的速度不如传统的关键词检索。

    其次是对于一些需要精确匹配的场景,关键词匹配更有优势。比如在法律文件检索中,法律条文、案例等对措辞的精准要求就很高。

    因此,在很多场景下,RAG 会同时使用关键词检索和语义检索,从而尽可能的提升检索体验。

    比如,在电商平台上,用户搜索“无线蓝牙耳机”。纯语义检索可能会推荐一些带有“无线”或“蓝牙”字样的普通耳机,但混合检索除了语义匹配,还会根据关键词“无线蓝牙”进行精确匹配,确保优先推荐符合“无线蓝牙耳机”这一完整要求的产品。

    分块、嵌入与索引🔖


    RAG在存储知识时,为了更高效地管理和检索,通常会将原始文档按照一定的规则(如固定长度、语义单元等)分块。

    就如同一本很长的小说,如果把它切成一个个章节或者更小的段落块,那么在查找某个故事情节时就更方便快捷。

    分块以后,还需要把每一个块转化为向量,从而存储到向量数据库,这就是嵌入。

    嵌入以后,还可以把向量存储到一个高效的检索结构中,以便快速进行相似性计算和检索,这就是索引。

    比如,某法律咨询平台为用户提供在线法律咨询服务。

    由于法律领域的知识库通常非常庞大且复杂,包含大量的文本信息,如法律条文、司法解释、案例判决书等。

    在构建知识库时,就可以将法律条文、案例等长文本分割成多个小块,同时,利用索引结构记录每个小块的向量位置,以便快速检索。

    这样,当用户输入法律问题,如“合同违约的赔偿标准是什么”,RAG 就可以从数据库中快速找到最相关的多个小块,并通过上下文融合来生成更为准确和完整的答案。

    重排序(re-rank)🔖


    当 RAG 从数据库中检索出多个内容时,需要选取相关性最大的内容喂给大模型,从而提高大模型的回答质量。

    所谓重排序,是指 RAG 将初步检索出来的内容进行重新排序,其目的是将最相关的信息排在前面,从而选取出相对更为准确的内容。

    打个比方,你想让 AI 搜索一批书籍,RAG 会先大致找出一批可能你想要的书籍,然后仔细评估每一本书和你需求的契合程度,把最符合你心意的书排在最前面,方便你优先查看。

    重排序的应用非常广泛,比如电商平台根据用户需求初步筛选出一批商品后,就会通过“重排序”,根据用户的实时行为、偏好历史等,对推荐商品进行重新排序,把更符合用户当下需求的商品排在前面,提高推荐的准确性和实用性。

    上下文融合🔖


    上下文融合是指 RAG 将从多个来源检索到的知识进行整合,以便为大模型提供更全面、连贯的输入内容,这样大模型的回答才能条理清晰、内容完整。

    比如,在智能客服场景中,用户咨询:“我刚收到的商品有点瑕疵,我可以申请退货吗?”

    要回答好这个问题,RAG 就需要从多个来源检索信息,比如用户的订单信息、退货政策等,再把这些内容整理成统一的内容,以便大模型能够基于内容生成高质量的回答。

    准确率和召回率🔖


    准确率(Precision)是指在 RAG 检索到的内容中,与用户问题真正相关的内容的比例。

    例如,在一个问答系统中,检索到 10 条知识,其中有 8 条与用户问题高度相关,那么准确率就是 80%。

    准确率是衡量检索质量最重要的指标之一。

    比如,智能客服在回答用户问题时,如果准确率不高,就会提供大量不相关或错误的答案,影响用户体验。

    但是,只有高的准确率还不够,还必须有高的召回率。

    所谓召回率(Recall),是指与用户问题相关的所有知识中,被成功检索到的比例。

    例如,知识库中有 20 条与用户问题相关的知识,检索到 12 条,那么召回率就是 60%。

    在实际应用场景中,召回率和准确率往往会成为跷跷板。比如如果过度追求高召回率,可能会导致检索结果中包含大量不相关的信息,影响准确率。反之亦然。

    比如,在一个电商商品检索系统中,为了尽可能多地召回相关商品,降低了检索阈值,结果导致很多边缘相关甚至不相关的商品也出现在结果中。

    在这种情况下,我们可以引入 F1 值进行综合评估,从而找到召回率和准确率之间的平衡点。

    F1 值的计算公式是:F1= 2(准确率召回率)/(准确率+召回率)。

    在这个公式中,当准确率或者召回率中的任何一个非常低时,F1 值也会相应的降低。

    知识图谱🔖


    知识图谱就像是一个巨大的知识网络,把各种知识当作一个个节点,并且把有关系的节点进行连接。

    比如,通过知识图谱可以对菜谱知识进行管理,把各个菜谱、原材料、烹饪方法连接起来,这样,当用户询问“用鸡蛋可以做哪些菜”时,RAG 就可以通过“菜谱-原材料”的连接关系,准确找到使用“鸡蛋”的菜谱。

    通过知识图谱,RAG 能够捕捉到实体间的复杂关系,还能够基于已有的实体关系进行推理和扩展,发现更多潜在的相关信息,从而大大提升准确率和召回率。

    比如,一年级有 5 个班,RAG 数据库中记录了 5 个班各自的期末成绩,但是并没有存储“一年级所有同学的平均成绩”。

    这就导致,当用户询问“一年级期末平均成绩是多少”时,RAG 找不到相关内容,最后给出一个错误的答案。

    但是,如果我们通过知识图谱建立了“一年级”和“5 个班级”之间的实体关系,RAG 就能根据根据这个关系找到“5 个班级的期末成绩”,再通过计算给到用户一个准确的回答。

    最后,一个 RAG 系统的运行可能包含以下步骤:

    • 1、向量数据库提供知识存储的基础设施
    • 2、对内容进行分块、嵌入和索引,以方便检索
    • 3、再通过知识图谱建立相关实体的关系,从而提高检索和生成的准确度
    • 4、当用户查询时,通过混合检索、知识图谱等方式检索内容
    • 5、然后把检索出来的内容进行重排序,选出最相关的内容
    • 6、把选出的内容进行上下文融合,提供给大模型生成回答内容
    • 7、最后,通过 F1 值对 RAG 系统的准确率和召回率进行综合评估