RAG 技术通过在 AI 生成过程中引入外部知识检索,从基础的文档查询发展到多模态、Multi-Agent 体协同的智能架构,让 AI 回答更准确、更全面

核心组件

  • 嵌入模型: 将文本转换为向量表示
  • 生成模型: 负责最终的内容生成
  • 重排序模型: 优化检索结果的相关性
  • 向量数据库: 存储和检索向量化的内容
  • 提示模板: 规范化的查询处理模板
  • AI Agent: 智能决策和任务协调

图例 1

RAG 架构图解:从基础到高级(一)Naive RAG、Retrieve-and-rerank、Multimodal RAG_人工智能

一、Naive RAG

RAG 架构图解:从基础到高级(一)Naive RAG、Retrieve-and-rerank、Multimodal RAG_人工智能_02

Naive RAG(Retrieval-Augmented Generation)是最基础的一种架构,用于结合检索和生成来处理复杂的任务,比如问答或内容生成。

其基本架构如下:

1.检索模块(Retriever)

  • 负责从知识库(如文档集合或数据库)中找到与输入查询相关的上下文。
  • 通常基于向量检索技术,使用嵌入模型(如 Sentence Transformers 或 OpenAI Embeddings)将查询和文档嵌入到向量空间中,计算相似性并返回最相关的文档。

2.生成模块(Generator)

  • 接收用户输入和检索到的上下文,生成最终的回答或内容。
  • 通常使用大型语言模型(如 GPT 或 T5)来生成自然语言输出。

3.流程

  1. 用户输入一个查询(如问题)。
  2. 检索模块从知识库中找出与查询相关的文档片段。
  3. 将检索结果连同查询一起传递给生成模块。
  4. 生成模块基于上下文生成回答或内容。

特点

  • 简单高效:由于模块化设计,容易实现和调试。
  • 可扩展性强:检索模块和生成模块可以独立优化或替换。
  • 存在局限性:Naive RAG 通常假设检索的上下文是完备的,这在知识库更新不及时或检索效果不佳时可能导致生成结果不准确。

应用场景

  • 文档问答:基于企业内部文档或外部知识库回答用户提问。
  • 内容生成:辅助生成新闻、摘要等需要结合外部信息的内容。
  • 技术支持:从常见问题解答(FAQ)库中检索答案并生成自然语言响应。

Naive RAG 是 RAG 系列架构的起点,更复杂的变种(如使用多轮交互或强化学习优化)通常在此基础上扩展。

二、Retrieve-and-rerank

RAG 架构图解:从基础到高级(一)Naive RAG、Retrieve-and-rerank、Multimodal RAG_人工智能_03

Retrieve-and-Rerank 是在基础 RAG 架构上的增强版本,通过引入重排序(Reranking)步骤,进一步优化检索结果的相关性。这种方法非常适合在需要高精度答案的任务中使用。

架构增强点:重排序步骤

在基础 RAG 的检索阶段(Retriever)之后,加入一个额外的重排序模块,以更好地筛选检索结果,提高传递给生成模块(Generator)上下文的质量。


核心流程

  1. 初步检索(Initial Retrieval)
  • 检索模块从知识库中找到一批初步相关的文档(例如,前 50 个文档)。
  • 使用向量检索(如基于余弦相似度或欧几里得距离)快速生成候选文档集合。
  1. 重排序(Rerank)
  • 传统方法:BM25、TF-IDF 等。
  • 深度学习模型:基于 BERT 的交互式检索模型(如 Cross-Encoder)。
  • 混合方法:将检索分数与语义模型得分结合。
  • 将初步检索到的候选文档集合交给一个专门的重排序模型。
  • 重排序模型可以是:
  • 输出一个按相关性排序的高质量文档列表。
  1. 生成模块(Generator)
  • 仅使用重排序后的前 N 个文档作为上下文,生成回答或内容。
  • 高相关性的上下文能显著提升生成质量。

Retrieve-and-Rerank 优势

  1. 提升检索精度
    初步检索模块通常快速但粗略,可能引入较多噪声;重排序能更精准地选择最相关的文档。
  2. 减少生成错误
    提供高相关性上下文,避免生成模块在不相关或错误信息基础上生成答案。
  3. 模块灵活性
    重排序模块可以独立优化,例如微调 BERT 模型,加入领域知识等。
  4. 适配长尾查询
    对于少见或复杂的查询,重排序能进一步优化初步检索效果。

应用场景

  1. 问答系统
    在文档问答中,Retrieve-and-Rerank 常用于优化检索阶段,确保提供与问题高度相关的上下文。
  2. 推荐系统
    在搜索和推荐场景中,重排序步骤可以显著提高最终推荐内容的相关性和用户满意度。
  3. 技术支持
    从技术文档或 FAQ 中筛选最相关的答案,减少生成模块的错误回答率。

示例技术栈

  • 检索模块
    FAISS、ElasticSearch、BM25 等。
  • 重排序模块
    BERT、MiniLM、ColBERT(使用 Cross-Encoder)等。
  • 生成模块
    GPT、T5、LLaMA 等。

通过这种方式,Retrieve-and-Rerank 在原始 RAG 架构的基础上增强了检索的相关性,显著提升了最终生成的质量。

三、Multimodal RAG

RAG 架构图解:从基础到高级(一)Naive RAG、Retrieve-and-rerank、Multimodal RAG_大模型_04

与基础 RAG 类似,Multimodal RAG 也由检索模块(Retriever)和生成模块(Generator)组成,但增强了对多模态数据的支持:

  1. 多模态检索模块
  • 能处理和索引不同模态的数据,如图像、视频或音频的特征。
  • 通常利用预训练模型将非文本模态(如图像)转换为嵌入向量,存储在统一的向量数据库中。
  • 检索时,将用户输入(文本或其他模态)编码为嵌入向量,与数据库中的嵌入进行匹配。
  1. 多模态生成模块
  • 接受多模态的上下文,例如文本和图像的组合。
  • 利用专门设计的多模态生成模型(如 Flamingo、BLIP-2)生成回答或内容。
  • 能够根据上下文模态灵活调整生成策略。
  1. 流程
  2. 用户输入可以是文本(如问题)或其他模态(如图像)。
  3. 多模态检索模块找到与输入相关的多模态上下文。
  4. 将检索结果传递给生成模块,结合上下文生成多模态回答或内容。

关键技术点

  1. 模态对齐
  • 在多模态数据之间建立共同表示,例如将图像特征和文本特征映射到同一个向量空间。
  • 常用技术:CLIP、Align-before-Fuse、BLIP 等。
  1. 模态融合
  • 将检索到的不同模态的上下文信息进行有效融合,为生成模块提供统一的输入。
  • 方式:早期融合(将模态特征直接拼接)、晚期融合(分别处理后再结合)。
  1. 生成模型支持
  • 多模态生成需要具备同时处理文本和非文本模态的能力。
  • 模型:Flamingo、BLIP-2、Visual ChatGPT 等。

Multimodal RAG 的优势

  1. 支持多种输入类型
  • 不仅可以回答文本问题,还能处理图像相关的查询,如“这张图片中的物体是什么?”。
  1. 丰富的信息来源
  • 检索和利用跨模态的信息,比如从图片和相关描述中生成答案。
  1. 增强的上下文理解
  • 将文本、图像等模态上下文结合起来,生成更精确、更有深度的内容。
  1. 广泛的应用场景
  • 可用于医学影像分析、教育、内容创作等需要多模态数据结合的任务。

应用场景

  1. 多模态问答
  • 结合文本和图像回答问题,例如“这张 X 光片有什么异常?”
  1. 图像描述生成
  • 为图像生成自然语言描述,适用于教育或辅助工具。
  1. 跨模态搜索
  • 用户输入文本,系统从图像库中检索相关图像(或反之)。
  1. 医疗诊断
  • 结合医学文本和影像数据,生成诊断报告或建议。
  1. 内容生成
  • 从视频或音频中提取关键信息并生成摘要或分析报告。

技术实现示例

  1. 检索模块
  • 图像:使用 CLIP、DINO 等模型提取图像特征。
  • 文本:使用 Sentence Transformers 或 OpenAI Embeddings。
  1. 生成模块
  • 使用多模态生成模型,如 Flamingo、BLIP-2、Visual ChatGPT 等。
  1. 数据库
  • 存储跨模态嵌入的向量数据库,如 FAISS、Weaviate。

通过 Multimodal RAG,可以实现复杂的跨模态任务,为各种应用提供更强大的解决方案。