RAG(Retrieval-Augmented Generation,检索增强生成) 是一种结合信息检索大语言模型生成能力的技术框架,旨在让 AI 在回答问题时,基于真实、最新、特定领域的外部知识,而非仅依赖其训练时学到的静态参数知识。因为现在的知识更新迭代很快的,每天都有成千上万个人在网络上发问或者发布东西,当初用于训练ai的知识可能早已过时,想象一下,你请了一位学识渊博的老教授做顾问。他记忆力惊人,几乎无所不知——但仅限于他读书时学到的知识。2021年之后的事情?他只能摇摇头:"这个我不太清楚。"

这就是今天大多数大语言模型的真实写照。它们拥有海量的预训练知识,但知识截止日期一过,就变成了"老学究"。更麻烦的是,当被问到不知道的事情时,它们可能不会诚实地说"我不懂",而是开始编造听起来很专业的谎话——这叫做"幻觉"。

所以RAG就可以解决这个问题。

---------------------------------------------------------------------------------------------------------------------------------

一、RAG是啥

RAG的全称是Retrieval-Augmented Generation,中文叫"检索增强生成"。名字听起来很技术,但理念非常直观:让AI在回答问题前,先学会"查资料"

让我用一个比喻来解释:

普通的AI对话,就像让学生闭卷考试。问题来了,只能从自己的记忆中搜索答案。记对了得分,记错了丢分,没见过的问题只能瞎猜。

而RAG系统,就像让学生开卷考试。遇到问题,先允许他去图书馆查相关资料,然后基于查到的资料写出答案。他不需要记住所有知识,只需要知道如何查找和理解信息。

二、RAG如何发挥作用

基本结构(两阶段流程)

1.检索阶段(Retrieval)

当用户提出问题时,系统首先从外部知识库(如文档、数据库、企业知识库等)中检索与问题最相关的若干片段(称为“上下文”或“证据”)。检索通常使用向量数据库 + 嵌入模型(Embedding Model)实现语义搜索。

2.生成阶段(Generation)

将用户问题 + 检索到的相关文档片段一起作为提示(Prompt)输入给大语言模型(LLM)。LLM 基于这些实时、可信的上下文生成答案,并可引用来源。

其实就是先建立知识库,它不是简单地将你喂给它的文档存储为文字,而是转换成数学向量,以便于后期检索,第二步就是在用户提问时去此知识库里检索,会把用户问题转换为向量,检索知识库里与此向量最相近的反馈给用户,也就是最后一步--->生成答案

三、啥是什么是向量表示(Embeddings)

上面提到一个名词:向量,他是啥?

3.1

向量表示(Embeddings) 是将离散的符号信息(如图像、文档等)转换为连续的数值向量的技术。它是现代人工智能,尤其是自然语言处理(NLP)、计算机视觉和推荐系统的核心基础。

说白了,人类可能知道小猫是什么,长什么样子,虽然ai也能识别哪个是猫,但是它们思考的方式跟人类不一样,它们只能处理数字。

Embedding就让语义相近的东西,在向量空间中距离也近:

向量("国王") - 向量("男人") + 向量("女人") ≈ 向量("女王")

所以ai识别出猫的过程类似于:将图片/文字中的信息转换为向量-----去知识库中找和此向量最最相近的向量-----将此向量作为答案输出给用户

3.2向量数据库

知识库和向量数据库:一个是图书馆,一个是智能检索系统

知识库就像整座图书馆建筑,里面收藏着所有的书籍、期刊、文档,向量数据库不是另一个图书馆,而是图书馆里那位最懂书的智能检索员,上面说到的向量都存储在这里,俩库各司其职,分工明确。

3.3混合检索与RAG-Fusion

长话短说,普通检索各有缺点,混合检索能更好地取各自的精华而融之。RAG-Fusion通过大语言模型(LLM)将原始查询“扩展”为多个视角的子查询,分别检索后再融合结果,提升召回多样性与深度。

四、RAG的五大核心组件

4.1文档加载器

它的工作是从各种地方获取原始资料

用工具从文档中提取文本并将其清洗分块成语义完整的chunks。

4.2嵌入模型

Embedding使用嵌入模型(如 BGEtext-embedding-ada-002)将每个文本块转为高维向量.

比如它把"苹果很好吃"和"苹果是一种水果"这两句话,转换成两个数学向量。在向量空间里,这两个向量的距离会很近,因为它们都关于"苹果"这个主题。而"汽车"这个向量的位置就会离得很远。

这种转换的妙处在于,它捕捉的是语义,不是字面。即使两句话没有一个相同的词,只要意思相近,它们的向量就会靠近。比如"如何重置密码"和"忘记密码怎么办",虽然用词不同,但向量会很相似。

4.3检索器

将 query 用相同 embedding 模型转为向量;在向量库中搜索向量最相似的文本块

这个组件需要平衡召回率和精确率。召回率太低,可能漏掉重要信息;精确率太低,会混入无关信息,干扰AI判断。好的检索器就像一位经验丰富的侦探,既不会漏掉关键线索,也不会被无关信息误导。

4.4大语言模型

这是团队的最终输出者。他接收检索器提供的相关资料和用户的原始问题,然后生成回答。这个组件最怕的是"幻觉"——当资料不足时开始编造听起来合理但实际上错误的信息。好的RAG系统会通过Prompt工程给AI明确的指令:"请严格基于提供的资料回答,不要添加资料之外的信息。"

  • 本地:Qwen、Llama3(通过 Ollama/vLLM)
  • 云端:GPT-4、通义千问、Claude

4.5Prompt模板

使用清晰的结构:背景 + 任务 + 要求 + 格式

  • "(背景)这是我能给你的相关资料:xxxxxxx"

  • "(任务)这是用户问题:xxxxxxxxx"

  • "请基于资料回答问题,以表格形式输出(格式),不要乱编(要求)"

  • "如果资料不够,请说明"

Logo

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

更多推荐