RAG 架构图解:从基础到高级的七种模式
「RAG 技术通过在 AI 生成过程中引入外部知识检索,从基础的文档查询发展到多模态、Multi-Agent 体协同的智能架构,让 AI 回答更准确、更全面」
「核心组件」
- 嵌入模型: 将文本转换为向量表示
- 生成模型: 负责最终的内容生成
- 重排序模型: 优化检索结果的相关性
- 向量数据库: 存储和检索向量化的内容
- 提示模板: 规范化的查询处理模板
- AI Agent: 智能决策和任务协调
图例 1
Naive RAG
Naive RAG(Retrieval-Augmented Generation)是最基础的一种架构,用于结合检索和生成来处理复杂的任务,比如问答或内容生成。
其基本架构如下:
1.检索模块(Retriever)
- 负责从知识库(如文档集合或数据库)中找到与输入查询相关的上下文。
- 通常基于向量检索技术,使用嵌入模型(如 Sentence Transformers 或 OpenAI Embeddings)将查询和文档嵌入到向量空间中,计算相似性并返回最相关的文档。
2.生成模块(Generator)
- 接收用户输入和检索到的上下文,生成最终的回答或内容。
- 通常使用大型语言模型(如 GPT 或 T5)来生成自然语言输出。
3.流程
- 用户输入一个查询(如问题)。
- 检索模块从知识库中找出与查询相关的文档片段。
- 将检索结果连同查询一起传递给生成模块。
- 生成模块基于上下文生成回答或内容。
特点
- 简单高效:由于模块化设计,容易实现和调试。
- 可扩展性强:检索模块和生成模块可以独立优化或替换。
- 存在局限性:Naive RAG 通常假设检索的上下文是完备的,这在知识库更新不及时或检索效果不佳时可能导致生成结果不准确。
应用场景
- 文档问答:基于企业内部文档或外部知识库回答用户提问。
- 内容生成:辅助生成新闻、摘要等需要结合外部信息的内容。
- 技术支持:从常见问题解答(FAQ)库中检索答案并生成自然语言响应。
Naive RAG 是 RAG 系列架构的起点,更复杂的变种(如使用多轮交互或强化学习优化)通常在此基础上扩展。
Retrieve-and-rerank
Retrieve-and-Rerank 是在基础 RAG 架构上的增强版本,通过引入重排序(Reranking)步骤,进一步优化检索结果的相关性。这种方法非常适合在需要高精度答案的任务中使用。
架构增强点:重排序步骤
在基础 RAG 的检索阶段(Retriever)之后,加入一个额外的重排序模块,以更好地筛选检索结果,提高传递给生成模块(Generator)上下文的质量。
核心流程
- 初步检索(Initial Retrieval)
- 检索模块从知识库中找到一批初步相关的文档(例如,前 50 个文档)。
- 使用向量检索(如基于余弦相似度或欧几里得距离)快速生成候选文档集合。
- 重排序(Rerank)
- 传统方法:BM25、TF-IDF 等。
- 深度学习模型:基于 BERT 的交互式检索模型(如 Cross-Encoder)。
- 混合方法:将检索分数与语义模型得分结合。
- 将初步检索到的候选文档集合交给一个专门的重排序模型。
- 重排序模型可以是:
- 输出一个按相关性排序的高质量文档列表。
- 生成模块(Generator)
- 仅使用重排序后的前 N 个文档作为上下文,生成回答或内容。
- 高相关性的上下文能显著提升生成质量。
Retrieve-and-Rerank 优势
- 提升检索精度
- 初步检索模块通常快速但粗略,可能引入较多噪声;重排序能更精准地选择最相关的文档。
- 减少生成错误
- 提供高相关性上下文,避免生成模块在不相关或错误信息基础上生成答案。
- 模块灵活性
- 重排序模块可以独立优化,例如微调 BERT 模型,加入领域知识等。
- 适配长尾查询
- 对于少见或复杂的查询,重排序能进一步优化初步检索效果。
应用场景
- 问答系统
- 在文档问答中,Retrieve-and-Rerank 常用于优化检索阶段,确保提供与问题高度相关的上下文。
- 推荐系统
- 在搜索和推荐场景中,重排序步骤可以显著提高最终推荐内容的相关性和用户满意度。
- 技术支持
- 从技术文档或 FAQ 中筛选最相关的答案,减少生成模块的错误回答率。
示例技术栈
- 检索模块:FAISS、ElasticSearch、BM25 等。
- 重排序模块:BERT、MiniLM、ColBERT(使用 Cross-Encoder)等。
- 生成模块:GPT、T5、LLaMA 等。
通过这种方式,Retrieve-and-Rerank 在原始 RAG 架构的基础上增强了检索的相关性,显著提升了最终生成的质量。
Multimodal RAG
与基础 RAG 类似,Multimodal RAG 也由检索模块(Retriever)和生成模块(Generator)组成,但增强了对多模态数据的支持:
- 多模态检索模块
- 能处理和索引不同模态的数据,如图像、视频或音频的特征。
- 通常利用预训练模型将非文本模态(如图像)转换为嵌入向量,存储在统一的向量数据库中。
- 检索时,将用户输入(文本或其他模态)编码为嵌入向量,与数据库中的嵌入进行匹配。
- 多模态生成模块
- 接受多模态的上下文,例如文本和图像的组合。
- 利用专门设计的多模态生成模型(如 Flamingo、BLIP-2)生成回答或内容。
- 能够根据上下文模态灵活调整生成策略。
- 流程
- 用户输入可以是文本(如问题)或其他模态(如图像)。
- 多模态检索模块找到与输入相关的多模态上下文。
- 将检索结果传递给生成模块,结合上下文生成多模态回答或内容。
关键技术点
- 模态对齐
- 在多模态数据之间建立共同表示,例如将图像特征和文本特征映射到同一个向量空间。
- 常用技术:CLIP、Align-before-Fuse、BLIP 等。
- 模态融合
- 将检索到的不同模态的上下文信息进行有效融合,为生成模块提供统一的输入。
- 方式:早期融合(将模态特征直接拼接)、晚期融合(分别处理后再结合)。
- 生成模型支持
- 多模态生成需要具备同时处理文本和非文本模态的能力。
- 模型:Flamingo、BLIP-2、Visual ChatGPT 等。
Multimodal RAG 的优势
- 支持多种输入类型
- 不仅可以回答文本问题,还能处理图像相关的查询,如“这张图片中的物体是什么?”。
- 丰富的信息来源
- 检索和利用跨模态的信息,比如从图片和相关描述中生成答案。
- 增强的上下文理解
- 将文本、图像等模态上下文结合起来,生成更精确、更有深度的内容。
- 广泛的应用场景
- 可用于医学影像分析、教育、内容创作等需要多模态数据结合的任务。
应用场景
- 多模态问答
- 结合文本和图像回答问题,例如“这张 X 光片有什么异常?”
- 图像描述生成
- 为图像生成自然语言描述,适用于教育或辅助工具。
- 跨模态搜索
- 用户输入文本,系统从图像库中检索相关图像(或反之)。
- 医疗诊断
- 结合医学文本和影像数据,生成诊断报告或建议。
- 内容生成
- 从视频或音频中提取关键信息并生成摘要或分析报告。
技术实现示例
- 检索模块
- 图像:使用 CLIP、DINO 等模型提取图像特征。
- 文本:使用 Sentence Transformers 或 OpenAI Embeddings。
- 生成模块
- 使用多模态生成模型,如 Flamingo、BLIP-2、Visual ChatGPT 等。
- 数据库
- 存储跨模态嵌入的向量数据库,如 FAISS、Weaviate。
通过 Multimodal RAG,可以实现复杂的跨模态任务,为各种应用提供更强大的解决方案。
Graph RAG
Graph RAG是对基础 RAG 架构的一种扩展,通过引入图数据库 来增强知识点之间的关联和文档间关系的理解。这种架构不仅提高了检索的精准性,还能更好地利用知识的上下文和结构化信息。
Graph RAG 架构
Graph RAG 的核心思想是在知识检索过程中利用图数据库(如 Neo4j、TigerGraph)来存储和管理数据。通过将文档、实体和它们之间的关系建模为图结构,可以更高效地处理复杂的知识连接和语义关系。
核心模块
- 图数据库(Graph Database)
- 图数据库存储文档及其结构化关系(节点和边),提供上下文的关系视图。
- 节点:可以表示实体(如人名、地名)、文档或知识片段。
- 边:表示节点之间的关系(如“引用”“从属”“因果”等)。
- 检索模块(Graph-based Retriever)
- 查询不仅基于文档内容,还利用图的结构进行关系推理。
- 可通过图查询语言(如 Cypher)实现复杂的知识检索。
- 生成模块(Generator)
- 将检索到的多层次上下文(文档和其相关节点)输入到生成模型。
- 生成模型结合图关系信息,生成更精准、更上下文相关的输出。
Graph RAG 工作流程
- 知识建模
- 文档:“爱因斯坦提出了相对论。”
- 节点:
爱因斯坦
、相对论
- 边:
提出
- 从知识库或文档集合中提取实体、关系和文本内容,构建图数据库。
- 示例:
- 用户查询
- 用户输入问题,如“相对论的提出者是谁?”。
- 将查询转换为图查询(例如,搜索与“相对论”相关的节点和边)。
- 图查询
- 检索与用户问题相关的子图,例如“相对论”节点及其直接连接的节点和关系。
- 上下文扩展
- 将检索到的子图中的信息转化为文本上下文,并传递给生成模块。
- 内容生成
- 生成模块结合用户问题和扩展上下文,生成自然语言回答。
Graph RAG 的优势
- 知识点间关系的深度挖掘
- 通过图结构,捕捉文档或知识点之间的复杂关系(如层次关系、因果关系等),提高检索结果的质量。
- 上下文的精准扩展
- 在检索阶段,图数据库可以帮助找到更相关的上下文,而不仅仅依赖向量相似性。
- 增强推理能力
- 利用图的结构化数据,可以进行关系推理,例如多跳检索(从一个节点找到间接相关的节点)。
- 动态更新与维护
- 图数据库支持动态更新,易于在知识库扩展时维护新数据的关系。
Graph RAG 应用场景
- 复杂问答
- 需要跨文档或跨实体推理的问答任务,如法律问答或科技文献分析。
- 知识管理
- 在企业或科研机构中,利用图数据库管理和查询大量关联文档或研究成果。
- 内容推荐
- 基于用户查询,利用图关系推荐相关内容或扩展知识。
- 因果推理
- 在科学或工程领域,回答因果关系复杂的问题(如“某实验的结果受到哪些因素的影响?”)。
示例技术栈
- 图数据库
- Neo4j、TigerGraph、ArangoDB 等。
- 关系提取
- 使用 NLP 模型提取实体和关系(如 spaCy、OpenIE、REBEL)。
- 生成模型
- GPT 系列、T5、BART 等。
- 检索与查询
- 使用 Cypher 查询语言或专门的图查询 API。
Graph RAG 将知识管理和自然语言生成相结合,利用图数据库强大的关系建模能力,大幅提升了文档间关系的理解和复杂问题的解决能力。
Hybrid RAG
Hybrid RAG 结合了多种技术的优势,包含图结构和传统检索方法
Graph RAG 是对基础 RAG 架构的一种扩展,通过引入图数据库 来增强知识点之间的关联和文档间关系的理解。这种架构不仅提高了检索的精准性,还能更好地利用知识的上下文和结构化信息。
Graph RAG 架构
Graph RAG 的核心思想是在知识检索过程中利用图数据库(如 Neo4j、TigerGraph)来存储和管理数据。通过将文档、实体和它们之间的关系建模为图结构,可以更高效地处理复杂的知识连接和语义关系。
核心模块
- 图数据库(Graph Database)
- 图数据库存储文档及其结构化关系(节点和边),提供上下文的关系视图。
- 节点:可以表示实体(如人名、地名)、文档或知识片段。
- 边:表示节点之间的关系(如“引用”“从属”“因果”等)。
- 检索模块(Graph-based Retriever)
- 查询不仅基于文档内容,还利用图的结构进行关系推理。
- 可通过图查询语言(如 Cypher)实现复杂的知识检索。
- 生成模块(Generator)
- 将检索到的多层次上下文(文档和其相关节点)输入到生成模型。
- 生成模型结合图关系信息,生成更精准、更上下文相关的输出。
Graph RAG 工作流程
- 知识建模
- 文档:“爱因斯坦提出了相对论。”
- 节点:
爱因斯坦
、相对论
- 边:
提出
- 从知识库或文档集合中提取实体、关系和文本内容,构建图数据库。
- 示例:
- 用户查询
- 用户输入问题,如“相对论的提出者是谁?”。
- 将查询转换为图查询(例如,搜索与“相对论”相关的节点和边)。
- 图查询
- 检索与用户问题相关的子图,例如“相对论”节点及其直接连接的节点和关系。
- 上下文扩展
- 将检索到的子图中的信息转化为文本上下文,并传递给生成模块。
- 内容生成
- 生成模块结合用户问题和扩展上下文,生成自然语言回答。
Graph RAG 的优势
- 知识点间关系的深度挖掘
- 通过图结构,捕捉文档或知识点之间的复杂关系(如层次关系、因果关系等),提高检索结果的质量。
- 上下文的精准扩展
- 在检索阶段,图数据库可以帮助找到更相关的上下文,而不仅仅依赖向量相似性。
- 增强推理能力
- 利用图的结构化数据,可以进行关系推理,例如多跳检索(从一个节点找到间接相关的节点)。
- 动态更新与维护
- 图数据库支持动态更新,易于在知识库扩展时维护新数据的关系。
Graph RAG 应用场景
- 复杂问答
- 需要跨文档或跨实体推理的问答任务,如法律问答或科技文献分析。
- 知识管理
- 在企业或科研机构中,利用图数据库管理和查询大量关联文档或研究成果。
- 内容推荐
- 基于用户查询,利用图关系推荐相关内容或扩展知识。
- 因果推理
- 在科学或工程领域,回答因果关系复杂的问题(如“某实验的结果受到哪些因素的影响?”)。
示例技术栈
- 图数据库
- Neo4j、TigerGraph、ArangoDB 等。
- 关系提取
- 使用 NLP 模型提取实体和关系(如 spaCy、OpenIE、REBEL)。
- 生成模型
- GPT 系列、T5、BART 等。
- 检索与查询
- 使用 Cypher 查询语言或专门的图查询 API。
Graph RAG 将知识管理和自然语言生成相结合,利用图数据库强大的关系建模能力,大幅提升了文档间关系的理解和复杂问题的解决能力。
Agentic RAG Router
Agentic RAG Router 使用 AI Agent 来路由和处理查询,可以选择最适合的处理路径
Agentic RAG Router 是一种更高级的 Retrieval-Augmented Generation (RAG) 架构,通过引入AI Agent 作为路由器,根据用户的查询动态选择最合适的处理路径或模块。它在复杂、多任务场景中具有明显优势,因为不同查询可能需要不同的数据源或处理逻辑。
Agentic RAG Router 架构
Agentic RAG 的核心是一个智能路由器(Agent),负责理解用户查询并决定如何处理。整个系统通常由以下模块组成:
- AI Router (Agent)
- 使用大型语言模型(如 GPT 或其他 LLM)作为路由器,分析查询的意图和类型。
- 基于查询选择最合适的检索模块和生成模块。
- 可以动态配置执行逻辑,比如调用特定知识库或外部 API。
- 多检索模块
- 文本检索:文档、FAQ。
- 图像检索:视觉数据库。
- 图数据库:复杂关系推理。
- 不同的检索模块可以处理不同的数据源或模态:
- Router 决定调用哪种检索模块或多模块组合。
- 多生成模块
- 自然语言生成(文本)。
- 图像生成或描述(视觉)。
- 表格生成或数据分析(结构化数据)。
- 针对不同任务优化的生成模块:
- 执行路径
- 直接回答(无需检索)。
- 检索后回答(RAG 流程)。
- 调用外部工具或 API(如计算器或代码执行器)。
- Router 分析用户查询,可能的处理路径包括:
工作流程
- 用户查询
- “这张图片中的内容是什么?”
- “帮我从文档中找出关于技术趋势的摘要。”
- 用户输入问题或任务描述,例如:
- 路由决策
- 任务分类:问答、生成、推理等。
- 数据模态识别:文本、图像、表格等。
- 优化目标:速度优先或准确性优先。
- Router 分析查询的意图和模态,可能包含:
- 模块选择
- 文本问答:调用文本检索模块 + GPT 生成模块。
- 图像问答:调用图像嵌入模型(如 CLIP) + 图像描述生成模块。
- 多模态组合:同时调用文本和图像检索模块,结合生成。
- 根据分析结果,Router 调用最适合的检索模块和生成模块。
- 示例:
- 内容生成
- 通过生成模块输出结果,可能是单一模态的回答,也可能是多模态结合的内容。
Agentic RAG 的优势
- 动态任务适配
- Router 能根据不同任务动态调整执行路径,无需固定流程,适合复杂场景。
- 多模态支持
- 通过灵活调用不同模态的模块(文本、图像、视频等),支持更广泛的应用场景。
- 智能资源管理
- 仅在需要时调用复杂模块,优化资源利用效率(如避免在简单问题上使用冗余计算)。
- 增强用户体验
- 通过选择最适合的路径,提供高质量、个性化的回答。
应用场景
- 多任务问答系统
- 支持用户提出多模态、多领域问题,并动态调整处理逻辑。
- 企业知识管理
- 在大规模知识库中,针对不同问题选择最相关的数据源和处理方法。
- 医疗辅助
- 动态调用医学图像分析模块、文献检索模块或诊断生成模块。
- 教育与内容生成
- 根据学生的问题选择合适的资料来源并生成解释。
- 自动化工作流
- 处理复杂查询时,调用外部工具(如计算器、翻译器、编程执行器)完成多步骤任务。
技术实现示例
- Router
- 使用大型语言模型(如 OpenAI GPT 系列、Claude、LLaMA)微调,理解用户意图。
- 检索模块
- 文本:FAISS、ElasticSearch。
- 图像:CLIP、DINO。
- 图数据库:Neo4j。
- 生成模块
- 文本生成:T5、BART、GPT。
- 图像生成:DALLE-2、Stable Diffusion。
- 数据生成:Pandas、NumPy。
- 执行引擎
- 调用工具链(如 LangChain)动态组织不同模块的调用。
Agentic RAG Router 的灵活性使其成为解决复杂问题的强大工具。通过将智能路由与强大的检索和生成能力相结合,它可以显著提升处理多模态、多任务场景的效率和准确性。
Agentic RAG Multi-Agent
Agentic RAG Multi-Agent 使用多个专门的 AI Agent 协同工作,可以调用不同的工具(如向量搜索、网页搜索、Slack、Gmail 等)
Agentic RAG Multi-Agent 是 Retrieval-Augmented Generation (RAG) 的进一步进化版本,它引入多个专门的 AI Agent,每个 Agent 负责不同的任务或工具调用。通过这些 Agent 的协同工作,系统能够在复杂、多源数据环境中灵活高效地处理任务,比如同时检索向量数据库、执行网页搜索、查询第三方 API,甚至与工具(如 Slack、Gmail)交互。
Agentic RAG Multi-Agent 架构
Agentic RAG Multi-Agent 的核心特性是多个专用 Agent 的协作,每个 Agent 可以完成特定任务或调用特定工具。整个系统由以下组件组成:
- Central Orchestrator (主控 Agent)
- 作为中央调度器,负责解析用户意图、分派任务,并整合多个 Agent 的输出。
- 主控 Agent 可以使用 LLM(如 GPT-4)来执行复杂的任务规划和路由。
- 专用 AI Agent
- 向量搜索 Agent:从向量数据库中检索相关内容。
- 网页搜索 Agent:实时从互联网获取最新信息。
- 通信工具 Agent:与 Slack、Gmail 等进行交互。
- 数据处理 Agent:处理结构化数据(如表格或数据库查询)。
- 模态特定 Agent:如图像分析、语音识别等。
- 每个 Agent 负责特定类型的任务或工具,例如:
- 工具与数据接口
- 每个 Agent 可调用专用工具或 API,比如向量检索工具(FAISS)、Web 搜索引擎(如 Google API)、生产力工具(Slack、Notion)。
- 输出整合模块
- 主控 Agent 收集和整合来自各 Agent 的结果,将最终答案以自然语言或多模态形式输出给用户。
工作流程
- 用户输入
- “帮我分析这份文件的摘要,并用邮件发送给团队。”
- “找出过去一周相关的行业趋势,并通知 Slack 频道。”
- 用户提出一个复杂的请求,例如:
- 任务分解
- 提取摘要:调用向量检索 Agent 或文本处理工具。
- 搜索趋势:调用网页搜索 Agent。
- 发送通知:调用 Slack 或 Gmail Agent。
- 主控 Agent 将任务分解为子任务:
- 任务分配
- 主控 Agent 将子任务分派给相关专用 Agent,按优先级并行处理。
- 执行任务
- 专用 Agent 调用相应工具或接口完成任务,返回结果。
- 整合与反馈
- 主控 Agent 收集所有 Agent 的结果,整合为用户可以理解的最终输出。
Agentic RAG Multi-Agent 的优势
- 模块化设计
- 各 Agent 独立工作,便于扩展和优化。例如,可新增图像处理 Agent 或语音处理 Agent。
- 多任务并行处理
- 多个 Agent 可并行运行,大幅提高复杂任务的处理效率。
- 工具支持广泛
- 能调用多种工具和 API,覆盖从数据检索到内容生成、任务执行等全流程。
- 动态任务适配
- 主控 Agent 可根据任务动态调整执行路径和 Agent 调用顺序。
- 复杂任务自动化
- 能自动化执行跨工具、跨数据源的多步骤任务,例如从检索数据到生成报告并发送通知。
应用场景
- 企业知识管理
- 检索企业文档、结合网页搜索实时更新信息,并将结果发送至团队协作工具(如 Slack)。
- 内容创作与分发
- 从向量数据库中检索素材,生成文章或报告,并分发至邮箱或内容管理系统。
- 多模态问答
- 同时调用文本、图像和视频分析 Agent,生成多模态回答。
- 实时数据分析
- 从网页和内部数据库中收集实时数据,生成趋势分析报告。
- 个人助理
- 处理日常任务,如查看邮件、管理日程、设置提醒等。
- 复杂客户支持
- 检索 FAQ、结合网页搜索和实时工具调用,为用户提供高质量的支持。
示例技术栈
- 主控 Agent
- 使用 GPT 系列或其他大型语言模型。
- 专用 Agent
- 向量检索:FAISS、Weaviate。
- 网页搜索:Google API、Bing Search API。
- 通信工具:Slack API、Gmail API。
- 数据分析:Pandas、NumPy。
- 协作框架
- LangChain:支持 Agent 编排。
- Tools SDK:实现与外部工具的接口。
示例场景:行业趋势通知
用户输入: “帮我从数据库和互联网找出过去一周的行业趋势,并用摘要发邮件给团队。”
系统执行:
- 主控 Agent 分解任务:
- 检索数据库:调用向量搜索 Agent。
- 搜索互联网:调用网页搜索 Agent。
- 生成摘要:调用文本生成 Agent。
- 发送邮件:调用 Gmail Agent。
- 各 Agent 独立工作并返回结果:
- 向量搜索 Agent:检索内部数据库的行业报告。
- 网页搜索 Agent:爬取过去一周的行业新闻。
- 文本生成 Agent:将数据整合为摘要。
- Gmail Agent:将摘要发送给团队。
- 主控 Agent 整合结果并完成任务。
通过 Agentic RAG Multi-Agent,复杂任务可以自动化完成,显著提升效率和用户体验,尤其在需要跨模态、跨工具协作的场景中表现尤为出色。
本文转载自 AI大模型世界,作者: rocLv