尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

【强烈推荐】智能体式RAG深度解析:从传统RAG到智能体增强,一篇就够了

【强烈推荐】智能体式RAG深度解析:从传统RAG到智能体增强,一篇就够了 1.介绍随着我们从2024年进入2025年AI领域的焦点正从检索增强生成RAG转向更具突破性的技术——智能体式RAG。本文将向您介绍智能体式RAG的概念、实现方法以及其优点和局限性。1.1 智能体式RAG概述检索增强生成RAG代表了人工智能领域的重大进步它将大型语言模型LLM的生成能力与实时数据检索相结合。虽然LLM在自然语言处理方面展示了卓越的能力但它们对静态预训练数据的依赖往往导致过时或不完整的响应。RAG通过动态检索外部源的相关信息并将其整合到生成过程中解决了这一限制从而实现上下文准确和最新的输出。图片来源AgenticRAG-Survey1.2 RAG与智能体式RAG对比RAG系统的架构集成了三个主要组件图片来源AgenticRAG-Survey•检索负责查询外部数据源如知识库、API或向量数据库。高级检索器利用密集向量搜索和基于transformer的模型来提高检索精度和语义相关性。•增强处理检索到的数据提取和总结最相关的信息以与查询上下文对齐。•生成将检索到的信息与LLM的预训练知识相结合生成连贯、上下文适当的响应。智能体式RAG通过使用AI智能体引入自主决策和编排实现了更强大和灵活的检索-生成工作流。其高级流程包括•步骤1面向智能体的查询分析用户查询被路由到一个AI智能体该智能体解释查询的意图和上下文。•步骤2记忆和策略智能体利用短期会话和长期历史记忆来跟踪上下文。然后它制定动态检索和推理策略。•步骤3工具选择和数据收集智能体智能地选择工具——如向量搜索、API连接器甚至其他智能体——并从相关知识库例如MCP服务器、图数据库、文档存储中检索数据。•步骤4提示构建检索到的内容通过结构化上下文和系统指令进行丰富。这个丰富的提示被传递给LLM。•步骤5LLM响应生成LLM处理优化和上下文化的提示产生高度相关、可解释和自适应的响应。2.RAG范式的演进检索增强生成RAG领域已经显著演进以解决现实世界应用日益增长的复杂性其中上下文准确性、可扩展性和多步推理至关重要。从简单的基于关键词的检索开始已经转变为复杂的、模块化和自适应系统能够集成多样化的数据源和自主决策过程。这一演进突显了RAG系统高效有效处理复杂查询的日益增长的需求。本节考察了RAG范式的进展呈现了关键发展阶段朴素RAG、高级RAG、模块化RAG、GraphRAG和智能体式RAG2.1 朴素RAG朴素RAG代表了检索增强生成的基础实现。图3说明了朴素RAG的简单检索-读取工作流专注于基于关键词的检索和静态数据集。这些系统依赖于简单的基于关键词的检索技术如TF-IDF和BM25从静态数据集中获取文档。然后检索到的文档用于增强语言模型的生成能力。朴素RAG的特点是其简单性和易于实现使其适用于涉及基于事实的查询且上下文复杂性最小的任务。然而它有几个限制•缺乏上下文感知由于依赖词汇匹配而非语义理解检索到的文档往往无法捕捉查询的语义细微差别。•碎片化输出缺乏高级预处理或上下文整合通常导致不连贯或过于通用的响应。•可扩展性问题基于关键词的检索技术在处理大型数据集时遇到困难通常无法识别最相关的信息。尽管有这些限制朴素RAG系统为将检索与生成集成提供了关键的概念验证为更复杂的范式奠定了基础。2.2 高级RAG高级RAG系统通过整合语义理解和增强的检索技术建立在朴素RAG的限制之上。图4强调了高级RAG在检索中的语义增强和迭代、上下文感知的管道。这些系统利用密集检索模型如密集段落检索DPR和神经排序算法来提高检索精度。2.3 模块化RAG模块化RAG代表了RAG范式的最新演进强调灵活性和定制化。这些系统将检索和生成管道分解为独立的、可重用的组件实现领域特定优化和任务适应性。图5展示了模块化架构展示了混合检索策略、可组合管道和外部工具集成。2.4 GraphRAGGraphRAG通过集成基于图的数据结构扩展了传统的检索增强生成系统如图6所示。这些系统利用图数据中的关系和层次结构来增强多跳推理和上下文丰富化。通过整合基于图的检索GraphRAG能够实现更丰富和更准确的生成输出特别是对于需要关系理解的任务。然而GraphRAG有一些限制•有限的可扩展性对图结构的依赖可能限制可扩展性特别是对于广泛的数据源。•数据依赖高质量的图数据对于有意义的输出至关重要限制了其在非结构化或注释不良的数据集中的适用性。•集成的复杂性将图数据与非结构化检索系统集成增加了设计和实现的复杂性。GraphRAG非常适合于医疗诊断、法律研究和其他需要对结构化关系进行推理的领域等应用。2.5 智能体式RAG智能体式RAG通过引入能够动态决策和工作流优化的自主智能体代表了范式转变。与静态系统不同智能体式RAG采用迭代优化和自适应检索策略来解决复杂的、实时的和多领域查询。这种范式利用了检索和生成过程的模块化同时引入了基于智能体的自主性。当涉及到扩展检索增强生成RAG系统以解决现实世界业务问题时没有单一、僵化的模板。架构必须根据您的独特用例、数据环境和领域需求进行演进。要有效地做到这一点理解驱动智能体式RAG管道的模块化组件至关重要。让我们分解核心阶段并探索它们如何交互1. 分析查询第一步涉及将原始用户查询传递给一个由语言模型驱动的智能体负责深度分析和转换。这个阶段包括• 查询重写智能体可能会重新表述输入生成精炼或替代版本以更好地提取相关知识。• 决策逻辑它评估查询是否可以直接回答或者是否需要额外数据。2. 额外数据源如果需要更多上下文系统会激活一个或多个检索智能体负责获取最相关的数据。这些智能体可能获取• 实时用户数据例如用户当前位置或状态• 私有/内部文档项目文件、报告、手册• 公共或基于网络的内容API数据、索引文章等每个检索路径都是动态的通常根据查询的意图和性质进行选择。3. 重新排序搜索结果一旦检索到候选文档它们会通过一个重新排序模型——通常比基础嵌入器更强大和上下文感知。这一步• ⚖️过滤噪声仅提取语义最相关的数据点。• 压缩范围确保下游步骤使用精确、高信号的上下文。4. 生成答案在LLM智能体确定它已经有足够知识的情况下它直接进行答案合成可能产生• ✅ 单个事实响应• 建议操作列表• 甚至执行任务的智能体驱动工作流5. 分析答案最后生成的答案由另一个智能体或重新调用的同一智能体进行关键评估• 如果准确和相关则与最终用户共享。• ♻️ 如果不足系统可能会重新表述原始查询并重新启动循环——由预定义的重试限制限制以避免无限循环。本质上智能体式RAG系统更像是自主决策者而不是简单的检索工具。它们动态适应、推理并在各阶段演进——全部由您的业务上下文指导。 设计您的系统意味着选择正确的智能体定义它们的决策边界并仔细编排它们的交互。3.传统RAG系统的挑战和局限性检索增强生成RAG通过将生成与实时数据结合推进了LLM但在复杂的现实世界场景中仍然有几个关键挑战限制了其性能上下文整合即使RAG系统成功检索到相关信息它们也常常难以将其无缝整合到生成的响应中。检索管道的静态性质和有限的上下文感知导致碎片化、不一致或过于通用的输出。示例当被问及阿尔茨海默病研究的最新进展及其对早期治疗的影响是什么“时RAG可能会提取相关研究但未能将这些发现连接到患者护理的可操作见解。同样对于干旱地区小规模农业的最佳可持续实践是什么”它可能检索到广泛的农业方法但错过了干旱特定的可持续技术。2. 多步推理复杂问题通常需要跨多个步骤进行推理但传统RAG通常在单次跳转中检索信息错过了更深层次的合成。示例像欧洲可再生能源政策的哪些经验可以应用于发展中国家潜在的经济影响是什么这样的查询需要结合政策数据、当地背景和经济预测。RAG通常无法将所有这些部分整合成一个连贯的答案。3. 可扩展性和延迟问题随着外部数据的增长搜索和排序大型数据集会减慢响应时间这对实时用例来说是有问题的。示例在实时金融分析或客户支持中获取和处理大型数据集的延迟可能是代价高昂的——例如由于检索缓慢而在高频交易期间错过市场趋势。4.智能体式RAG分类4.1 单智能体智能体式RAG路由器单智能体智能体式RAG作为一个集中式决策系统其中单个智能体管理信息的检索、路由和整合如图所示。这种架构通过将这些任务整合到一个统一的智能体中来简化系统使其在工具或数据源数量有限的设置中特别有效。单智能体RAG概述 | 图片来源AgenticRAG-Survey工作流查询提交和评估用户提交查询协调智能体分析并确定适当的数据源知识源选择• 结构化数据库例如通过Text-to-SQL的PostgreSQL、MySQL。• 语义搜索例如对PDF、书籍、内部记录进行基于向量的搜索。• 网络搜索实时在线数据。• 推荐系统基于用户档案的个性化建议。数据整合和LLM合成检索到的数据传递给LLM合成为连贯的响应。输出生成系统为用户生成简洁、可操作的响应。尽管有其进步智能体式RAG面临一些挑战• 协调复杂性管理智能体之间的交互需要复杂的编排机制。• 计算开销使用多个智能体增加了复杂工作流的资源需求。• 可扩展性限制虽然可扩展但系统的动态性质可能会对高查询量的计算资源造成压力。智能体式RAG在客户支持、金融分析和自适应学习平台等领域表现出色其中动态适应性和上下文准确性至关重要。4.2 多智能体智能体式RAG系统多个专业智能体协作工作每个专注于特定的数据源或任务实现对复杂查询的可扩展、模块化处理。工作流查询提交协调智能体接收查询并将其分发给专业智能体。2. 专业检索智能体智能体1结构化数据对PostgreSQL、MySQL进行SQL查询。智能体2语义搜索PDF、书籍、内部非结构化数据。智能体3实时网络搜索新闻、政策更新。智能体4推荐系统个性化内容、专家建议。工具访问和数据检索并行利用向量搜索、Text-to-SQL、网络搜索和外部API。数据整合和LLM合成聚合的数据传递给LLM合成为全面输出。输出生成 最终、整合的响应交付给用户。挑战• 跨智能体协调复杂性增加。• 更高的计算资源消耗。• 跨异构输出的复杂数据整合。4.3 层次化智能体式RAG系统层次化智能体式RAG系统采用结构化的、多层次的方法进行信息检索和处理如图18所示提高了效率和战略决策。智能体按层次组织高级智能体监督和指导低级智能体。这种结构实现了多级决策确保查询由最合适的资源处理。一种分层架构其中顶级智能体管理多个下属智能体为高度复杂的任务实现动态委托和合成。工作流查询接收用户提交查询由负责初始评估和任务委托的顶级智能体接收。战略决策顶级智能体评估查询复杂性并根据领域相关性和数据可靠性选择优先考虑哪些下属智能体、数据库、API或检索工具。委托给下属智能体任务分配给专业的低级智能体例如SQL数据库、网络搜索、专有API它们独立执行检索。聚合和合成下属智能体将结果返回给顶级智能体顶级智能体整合和合成信息为连贯、统一的响应。响应交付最终、合成的答案呈现给用户确保完整性和上下文准确性。挑战• 协调复杂性跨多个级别的强大智能体间通信增加了编排开销。• 资源分配跨层的高效任务分配复杂需要仔细管理以避免瓶颈。4.4 智能体式纠正RAG纠正RAG引入了自我纠正机制迭代优化检索结果通过将智能智能体嵌入工作流来增强文档利用率和响应质量。工作流上下文检索智能体从向量数据库检索初始上下文文档。相关性评估智能体评估检索到的文档的相关性标记不相关或模糊的文档以进行纠正。查询优化智能体使用语义理解重写和优化查询以改善检索结果。外部知识检索智能体如果上下文仍然不足进行网络搜索或访问替代数据源。响应合成智能体将所有验证和优化的信息合成为连贯、准确的响应。纠正RAG的关键思想• 文档相关性评估评估检索到的文档低相关性文档触发纠正步骤。• 查询优化和增强查询由查询优化智能体重写以改善检索确保为响应生成提供更高质量的输入。4.5 自适应智能体式RAG自适应RAG通过根据每个查询的复杂性定制检索策略引入动态查询处理增强了灵活性和效率。自适应RAG的关键思想• 直接查询对于基于事实的问题直接生成而不检索例如“水的沸点是多少”。• 简单查询对于中等复杂任务进行单步检索例如“我最新的电费账单状态是什么”。• 复杂查询对于需要分层推理的复杂查询进行多步检索和迭代优化例如“X市的人口在过去十年中如何变化贡献因素是什么”。工作流分类器角色• 一个较小的LLM使用基于历史结果自动标记的数据集分析查询复杂性。2. 动态策略选择• 对于直接查询直接LLM响应。• 对于简单查询单步检索。• 对于需要迭代推理的复杂查询多步检索。3. LLM集成• 检索到的信息合成为连贯的响应。• LLM和分类器之间的迭代交互优化复杂任务的输出。4.6 基于图的智能体式RAG4.6.1 Agent-GGraphRAG的智能体式框架Agent-G引入了一种新颖的架构将图知识库与非结构化文档检索相结合增强了RAG系统中的推理和检索准确性。Agent-G的关键思想• 图知识库提取结构化关系例如医疗保健中的疾病到症状映射。• 非结构化文档用文本源的上下文信息补充结构化数据。• 批评模块评估检索数据的相关性和质量在需要时触发纠正操作。• 反馈循环通过验证和重新查询迭代优化检索和合成。工作流检索器库模块化智能体专门从事图或非结构化数据检索根据查询需求动态选择源。批评模块验证检索信息的相关性和置信度标记不确定结果以进行优化。动态智能体交互任务特定智能体协作将结构化和非结构化数据源集成到统一工作流中。LLM集成将验证的数据合成为连贯的响应通过批评反馈循环持续优化。4.6.2 GeAR图增强的RAG智能体GeAR通过集成基于图的检索和智能体控制增强了传统RAG改善了复杂查询的多跳检索。GeAR的关键思想• 图扩展通过整合图结构数据扩展基础检索器例如BM25捕获复杂的实体关系和依赖关系。• 智能体框架利用智能体动态管理检索策略根据查询复杂性自主选择图扩展路径。工作流图扩展模块将图数据集成到检索中扩展搜索空间以包括连接的实体以实现更好的多跳推理。基于智能体的检索智能体动态选择和组合检索策略在必要时利用图扩展检索。LLM集成使用LLM将图丰富和非结构化数据合成为连贯、上下文丰富的响应。4.7 智能体式RAG中的智能体式文档工作流ADWADW通过编排以文档为中心的流程中的端到端知识工作自动化扩展了传统RAG将解析、检索、推理和结构化输出与智能智能体集成。工作流文档解析和信息结构化• 使用企业工具例如LlamaParse解析文档提取发票号码、日期、供应商、行项目和付款条件等字段。• 为下游任务结构化提取的数据。跨流程状态维护在多个处理阶段维护文档上下文和跟踪工作流进展。3. 知识检索• 从外部知识库例如LlamaCloud和向量索引检索相关参考。• 融入实时、特定领域的指导原则以支持决策。智能体式编排智能智能体应用业务规则执行多跳推理并协调解析器、检索器和API等组件。可操作输出生成生成结构化输出在简洁、可操作的报告中提供合成建议和见解。智能体式RAG框架的比较分析表2提供了三种架构框架的全面比较分析传统RAG、智能体式RAG和智能体式文档工作流ADW。该分析突出了它们各自的优点、缺点和最适合的场景为它们在不同用例中的适用性提供了有价值的见解。构建智能体式RAG系统在本教程中我们将构建一个检索智能体。当您希望LLM决定是否从向量存储库检索上下文或直接响应用户时检索智能体非常有用。在本教程结束时我们将完成以下工作获取和预处理将用于检索的文档。为这些文档建立索引以进行语义搜索并为智能体创建检索器工具。构建一个智能体式RAG系统可以决定何时使用检索器工具。设置让我们下载所需的包并设置我们的API密钥pip install -U --quiet langgraph langchain[openai] langchain-community langchain-text-splitters plaintext import getpassimport osdef _set_env(key: str): if key not in os.environ: os.environ[key] getpass.getpass(f{key}:)_set_env(OPENAI_API_KEY)6.1 预处理文档获取将在我们的RAG系统中使用的文档。我们将使用Lilian Weng的优秀博客的最新三页。我们将首先使用WebBaseLoader工具获取页面的内容from langchain_community.document_loaders import WebBaseLoaderurls [\ https://lilianweng.github.io/posts/2024-11-28-reward-hacking/,\ https://lilianweng.github.io/posts/2024-07-07-hallucination/,\ https://lilianweng.github.io/posts/2024-04-12-diffusion-video/,\]docs [WebBaseLoader(url).load() for url in urls] plaintext docs[0][0].page_content.strip()[:1000]将获取的文档分割成更小的块以便索引到我们的向量存储库中from langchain_text_splitters import RecursiveCharacterTextSplitterdocs_list [item for sublist in docs for item in sublist]text_splitter RecursiveCharacterTextSplitter.from_tiktoken_encoder( chunk_size100, chunk_overlap50)doc_splits text_splitter.split_documents(docs_list) plaintext doc_splits[0].page_content.strip()6.2 创建检索工具现在我们有了分割的文档我们可以将它们索引到我们将用于语义搜索的向量存储中。使用内存向量存储和OpenAI嵌入from langchain_core.vectorstores import InMemoryVectorStorefrom langchain_openai import OpenAIEmbeddingsvectorstore InMemoryVectorStore.from_documents( documentsdoc_splits, embeddingOpenAIEmbeddings())retriever vectorstore.as_retriever()使用LangChain预构建的create_retriever_tool创建检索器工具from langchain.tools.retriever import create_retriever_toolretriever_tool create_retriever_tool( retriever, retrieve_blog_posts, Search and return information about Lilian Weng blog posts.,)测试工具retriever_tool.invoke({query: types of reward hacking})6.3 生成查询现在我们将开始为我们的智能体式RAG图构建组件节点和边。请注意这些组件将在[MessagesState](https://archive.ph/o/irT5D/https://langchain-ai.github.io/langgraph/concepts/low_level%23messagesstate)上操作——包含带有聊天消息列表的messages键的图状态。构建一个generate_query_or_respond节点。它将调用LLM根据当前图状态消息列表生成响应。给定输入消息它将决定使用检索器工具进行检索或直接响应用户。请注意我们通过.bind_tools让聊天模型访问我们之前创建的retriever_toolfrom langgraph.graph import MessagesStatefrom langchain.chat_models import init_chat_modelresponse_model init_chat_model(openai:gpt-4.1, temperature0)def generate_query_or_respond(state: MessagesState): Call the model to generate a response based on the current state. Given the question, it will decide to retrieve using the retriever tool, or simply respond to the user. response ( response_model .bind_tools([retriever_tool]).invoke(state[messages]) ) return {messages: [response]}在随机输入上尝试input {messages: [{role: user, content: hello!}]}generate_query_or_respond(input)[messages][-1].pretty_print()6.4 文档评分添加一个条件边——grade_documents——以确定检索到的文档是否与问题相关。我们将使用具有结构化输出模式GradeDocuments的模型进行文档评分。grade_documents函数将根据评分决策返回要去的节点名称generate_answer或rewrite_questionfrom pydantic import BaseModel, Fieldfrom typing import LiteralGRADE_PROMPT ( You are a grader assessing relevance of a retrieved document to a user question. \n Here is the retrieved document: \n\n {context} \n\n Here is the user question: {question} \n If the document contains keyword(s) or semantic meaning related to the user question, grade it as relevant. \n Give a binary score yes or no score to indicate whether the document is relevant to the question.)class GradeDocuments(BaseModel): Grade documents using a binary score for relevance check. binary_score: str Field( descriptionRelevance score: yes if relevant, or no if not relevant )grader_model init_chat_model(openai:gpt-4.1, temperature0)def grade_documents( state: MessagesState,) - Literal[generate_answer, rewrite_question]: Determine whether the retrieved documents are relevant to the question. question state[messages][0].content context state[messages][-1].content prompt GRADE_PROMPT.format(questionquestion, contextcontext) response ( grader_model .with_structured_output(GradeDocuments).invoke( [{role: user, content: prompt}] ) ) score response.binary_score if score yes: return generate_answer else: return rewrite_question在工具响应中使用不相关文档运行from langchain_core.messages import convert_to_messagesinput { messages: convert_to_messages( [\ {\ role: user,\ content: What does Lilian Weng say about types of reward hacking?,\ },\ {\ role: assistant,\ content: ,\ tool_calls: [\ {\ id: 1,\ name: retrieve_blog_posts,\ args: {query: types of reward hacking},\ }\ ],\ },\ {role: tool, content: meow, tool_call_id: 1},\ ] )}grade_documents(input)确认相关文档被如此分类input { messages: convert_to_messages( [\ {\ role: user,\ content: What does Lilian Weng say about types of reward hacking?,\ },\ {\ role: assistant,\ content: ,\ tool_calls: [\ {\ id: 1,\ name: retrieve_blog_posts,\ args: {query: types of reward hacking},\ }\ ],\ },\ {\ role: tool,\ content: reward hacking can be categorized into two types: environment or goal misspecification, and reward tampering,\ tool_call_id: 1,\ },\ ] )}grade_documents(input)6.5 重写问题构建rewrite_question节点。检索器工具可能返回不相关的文档这表明需要改进原始用户问题。为此我们将调用rewrite_question节点REWRITE_PROMPT ( Look at the input and try to reason about the underlying semantic intent / meaning.\n Here is the initial question: \n ------- \n {question} \n ------- \n Formulate an improved question:)def rewrite_question(state: MessagesState): Rewrite the original user question. messages state[messages] question messages[0].content prompt REWRITE_PROMPT.format(questionquestion) response response_model.invoke([{role: user, content: prompt}]) return {messages: [{role: user, content: response.content}]}尝试input { messages: convert_to_messages( [\ {\ role: user,\ content: What does Lilian Weng say about types of reward hacking?,\ },\ {\ role: assistant,\ content: ,\ tool_calls: [\ {\ id: 1,\ name: retrieve_blog_posts,\ args: {query: types of reward hacking},\ }\ ],\ },\ {role: tool, content: meow, tool_call_id: 1},\ ] )}response rewrite_question(input)print(response[messages][-1][content])6.6 生成答案构建generate_answer节点如果我们通过了评分检查我们可以基于原始问题和检索到的上下文生成最终答案GENERATE_PROMPT ( You are an assistant for question-answering tasks. Use the following pieces of retrieved context to answer the question. If you dont know the answer, just say that you dont know. Use three sentences maximum and keep the answer concise.\n Question: {question} \n Context: {context})def generate_answer(state: MessagesState): Generate an answer. question state[messages][0].content context state[messages][-1].content prompt GENERATE_PROMPT.format(questionquestion, contextcontext) response response_model.invoke([{role: user, content: prompt}]) return {messages: [response]}尝试input { messages: convert_to_messages( [\ {\ role: user,\ content: What does Lilian Weng say about types of reward hacking?,\ },\ {\ role: assistant,\ content: ,\ tool_calls: [\ {\ id: 1,\ name: retrieve_blog_posts,\ args: {query: types of reward hacking},\ }\ ],\ },\ {\ role: tool,\ content: reward hacking can be categorized into two types: environment or goal misspecification, and reward tampering,\ tool_call_id: 1,\ },\ ] )}response generate_answer(input)response[messages][-1].pretty_print()6.7 组装图从generate_query_or_respond开始确定我们是否需要调用retriever_tool使用tools_condition路由到下一步• 如果generate_query_or_respond返回了tool_calls调用retriever_tool检索上下文• 否则直接响应用户评估检索到的文档内容是否与问题相关grade_documents并路由到下一步• 如果不相关使用rewrite_question重写问题然后再次调用generate_query_or_respond• 如果相关继续到generate_answer并使用带有检索文档上下文的ToolMessage生成最终响应from langgraph.graph import StateGraph, START, ENDfrom langgraph.prebuilt import ToolNodefrom langgraph.prebuilt import tools_conditionworkflow StateGraph(MessagesState)# Define the nodes we will cycle betweenworkflow.add_node(generate_query_or_respond)workflow.add_node(retrieve, ToolNode([retriever_tool]))workflow.add_node(rewrite_question)workflow.add_node(generate_answer)workflow.add_edge(START, generate_query_or_respond)# Decide whether to retrieveworkflow.add_conditional_edges( generate_query_or_respond, # Assess LLM decision (call retriever_tool tool or respond to the user) tools_condition, { # Translate the condition outputs to nodes in our graph tools: retrieve, END: END, },)# Edges taken after the action node is called.workflow.add_conditional_edges( retrieve, # Assess agent decision grade_documents,)workflow.add_edge(generate_answer, END)workflow.add_edge(rewrite_question, generate_query_or_respond)# Compilegraph workflow.compile()可视化图from IPython.display import Image, displaydisplay(Image(graph.get_graph().draw_mermaid_png()))6.8 运行智能体式RAGfor chunk in graph.stream( { messages: [\ {\ role: user,\ content: What does Lilian Weng say about types of reward hacking?,\ }\ ] }): for node, update in chunk.items(): print(Update from node, node) update[messages][-1].pretty_print() print(\n\n)输出Update from node generate_query_or_respond Ai Message Tool Calls: retrieve_blog_posts (call_cZehDWOxAfSV1RQdw1RHzKwG) Call ID: call_cZehDWOxAfSV1RQdw1RHzKwG Args: query: types of reward hackingUpdate from node retrieve Tool Message Name: retrieve_blog_postsDetecting Reward Hacking#In-Context Reward Hacking#(Note: Some work defines reward tampering as a distinct category of misalignment behavior from reward hacking. But I consider reward hacking as a broader concept here.)At a high level, reward hacking can be categorized into two types: environment or goal misspecification, and reward tampering.Why does Reward Hacking Exist?#Update from node generate_answer Ai Message Lilian Weng categorizes reward hacking into two types: environment or goal misspecification, and reward tampering. She considers reward hacking as a broader concept that includes both of these categories. Some work defines reward tampering separately, but Weng includes it under the umbrella of reward hacking.结论从传统检索增强生成RAG系统到智能体式RAG的演进代表了我们在复杂现实世界应用中处理推理、检索和响应生成方式的范式转变。正如我们所探索的智能体式RAG架构通过使智能体能够迭代推理、委托任务、自我纠正和动态适应解锁了智能的新维度——这是传统RAG管道难以做到的。从单智能体路由到层次化和纠正性多智能体工作流进一步通过Agent-G和GeAR等框架将图结构和智能体式推理融合我们现在拥有了构建真正模块化、弹性和上下文感知的检索系统的基础构建块。每个抽象层次——从自适应到文档工作流智能体——都为RAG生命周期注入了一种新的自主性和决策精细度。然而智能体式RAG并非万能解决方案。它需要仔细的编排、强大的提示工程、深思熟虑的分类学设计和持续的监控以确保可靠性和可扩展性。随着该领域继续成熟未来的机会在于标准化评估协议、构建可互操作的智能体框架以及通过多模态和记忆增强能力推动边界。最后为什么要学AI大模型当下⼈⼯智能市场迎来了爆发期并逐渐进⼊以⼈⼯通⽤智能AGI为主导的新时代。企业纷纷官宣“ AI ”战略为新兴技术⼈才创造丰富的就业机会⼈才缺⼝将达 400 万DeepSeek问世以来生成式AI和大模型技术爆发式增长让很多岗位重新成了炙手可热的新星岗位薪资远超很多后端岗位在程序员中稳居前列。与此同时AI与各行各业深度融合飞速发展成为炙手可热的新风口企业非常需要了解AI、懂AI、会用AI的员工纷纷开出高薪招聘AI大模型相关岗位。最近很多程序员朋友都已经学习或者准备学习 AI 大模型后台也经常会有小伙伴咨询学习路线和学习资料我特别拜托北京清华大学学士和美国加州理工学院博士学位的鲁为民老师给大家这里给大家准备了一份涵盖了AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频全系列的学习资料这些学习资料不仅深入浅出而且非常实用让大家系统而高效地掌握AI大模型的各个知识点。这份完整版的大模型 AI 学习资料已经上传CSDN朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】AI大模型系统学习路线在面对AI大模型开发领域的复杂与深入精准学习显得尤为重要。一份系统的技术路线图不仅能够帮助开发者清晰地了解从入门到精通所需掌握的知识点还能提供一条高效、有序的学习路径。但知道是一回事做又是另一回事初学者最常遇到的问题主要是理论知识缺乏、资源和工具的限制、模型理解和调试的复杂性在这基础上找到高质量的学习资源不浪费时间、不走弯路又是重中之重。AI大模型入门到实战的视频教程项目包看视频学习是一种高效、直观、灵活且富有吸引力的学习方式可以更直观地展示过程能有效提升学习兴趣和理解力是现在获取知识的重要途径光学理论是没用的要学会跟着一起敲要动手实操才能将自己的所学运用到实际当中去这时候可以搞点实战案例来学习。海量AI大模型必读的经典书籍PDF阅读AI大模型经典书籍可以帮助读者提高技术水平开拓视野掌握核心技术提高解决问题的能力同时也可以借鉴他人的经验。对于想要深入学习AI大模型开发的读者来说阅读经典书籍是非常有必要的。600AI大模型报告实时更新这套包含640份报告的合集涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师还是对AI大模型感兴趣的爱好者这套报告合集都将为您提供宝贵的信息和启示。AI大模型面试真题答案解析我们学习AI大模型必然是想找到高薪的工作下面这些面试题都是总结当前最新、最热、最高频的面试题并且每道题都有详细的答案面试前刷完这套面试题资料小小offer不在话下这份完整版的大模型 AI 学习资料已经上传CSDN朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】
返回列表