当前位置: 首页 > article >正文

从零开始构建Agentic RAG系统:LangGraph+Qwen打造智能自适应RAG

本文详细介绍Agentic RAG系统的构建方法该系统融合动态查询分析和自我纠错机制能够根据查询复杂度自适应选择检索与生成策略。文章基于LangGraph和Qwen模型从状态管理、查询路由、文档检索、网络搜索到幻觉检测等11个步骤完整展示了智能自适应RAG系统的实现过程并通过多阶段质量保障确保答案准确可靠为开发者提供了一套可复用、可扩展的工程落地方案。一、理解Agentic RAGAgentic RAG是一种更先进的RAG策略它融合了两大核心能力动态查询分析和自我纠错机制。它被认为是RAG发展中最成熟的形态其核心理念是查询的复杂度各不相同。研究表明现实场景中的查询复杂度差异显著简单查询如“成都是哪个省的省会”—— 语言模型即可直接回答。多跳查询如“清朝时期康熙皇帝什么时候派人修建圆明园并由谁主持设计”—— 需要经过多轮推理才能得出准确答案。Agentic RAG系统工作流程图Agentic RAG的核心流程分为以下几步1. 查询路由与分类系统首先通过训练好的复杂度分类器对输入问题进行分析这不是简单的关键词匹配而是基于语义的智能评估以确定是否需要检索模型自身知识是否足以回答。如果需要检索问题需要多复杂的处理路径。最终将问题路由到最优策略无需检索、单步检索处理或多跳推理。2. 动态知识获取策略根据分类结果系统会动态选择最合适的知识获取方式基于索引的检索适用于已有知识库即可覆盖的问题。网络搜索适用于需要最新信息或本地知识不足的场景。无需检索模型自身知识即可快速生成答案。3. 多阶段质量保障在生成答案的多个环节系统通过多层评估确保结果的准确性与可靠性文档相关性评估通过置信度评分判断检索内容的匹配度。幻觉检测识别并避免无依据的生成内容。答案质量评估确保最终输出完整、准确且符合查询需求。二、Agentic RAG实现指南本文将落地一套自适应Agentic RAG系统对用户查询做细粒度判断在检索与路由之间做出智能决策强调可复用、可扩展与工程落地。该实现展示了智能查询分析根据问题类型与难度自动选择最优执行路径系统化评估框架以离线与在线指标校验回答确保可靠与一致自适应架构设计在向量库、内部API与互联网搜索之间自由路由与切换。本方案在原始LangChain实现基础上完成重构显著提升代码可读性与可维护性并优化开发者体验。我们将使用以下技术栈和组件LangGraph编排复杂的有状态工作流Qwen作为主要语言模型向量数据库用于高效文档检索网络搜索集成获取实时信息全链路的评估框架从数据到答案的质量保障。接下来我们将循序渐进地构建一个Agentic RAG系统并按照最有助于理解整体流程的逻辑顺序逐一拆解各组件的功能与实现细节。第1步定义状态管理系统与核心常量在Agentic RAG系统中状态管理是整个流程的基础它决定了信息在图结构中的流动方式也是系统能实现动态自适应决策的核心环节。import os from typing import List, TypedDict, Dict, Any, Literal from dotenv import find_dotenv, load_dotenv from pydantic import BaseModel, Field from langchain_core.prompts import ChatPromptTemplate from langchain_core.runnables import RunnableSequence from langchain_core.output_parsers import StrOutputParser from langchain.text_splitter import RecursiveCharacterTextSplitter from langchain_chroma import Chroma from langchain_community.chat_models.tongyi import ChatTongyi from langchain_community.document_loaders import WebBaseLoader from langchain_community.embeddings import HuggingFaceBgeEmbeddings from langchain.schema import Document from langchain import hub from langgraph.graph import END, StateGraph from chinese_recursive_text_splitter import ChineseRecursiveTextSplitter from langchain_tavily import TavilySearch class GraphState(TypedDict): 表示图中每个节点的状态。 属性 question: 用户输入的问题 generation: LLM生成的回答 web_search: 是否需要进行网络搜索 documents: 存放本地或网络检索到的文档列表 fallback: 是否由LLM直接生成 question: str generation: str web_search: bool documents: List[str] fallback: bool在开始编码前我们引用了相关的依赖库。然后我们使用TypedDict来定义图中每个节点的状态既保证类型安全又保留工作流动态处理的灵活性。接下来定义图中各节点的名称常量RETRIEVE retrieve GRADE_DOCUMENTS grade_documents GENERATE generate WEBSEARCH websearch LLM_FALLBACK llm_fallback这些常量有助于保持代码一致性集中管理节点名称不仅方便重构也能减少在工作流中引用节点时出现错误的可能性。第2步初始化模型文件这段代码的作用是初始化核心模型文件为后续构建Agentic RAG系统做准备包含两个部分初始化大语言模型和嵌入模型。# 加载环境变量 load_dotenv(find_dotenv()) # 加载大语言模型 llm_model ChatTongyi(model_nameqwen-max, streamingTrue, temperature0) # 加载嵌入模型 embed_model HuggingFaceBgeEmbeddings( model_name../bge-large-zh-v1.5, model_kwargs{device: cuda}, encode_kwargs{normalize_embeddings: True} )第3步构建查询路由链在Agentic RAG系统中查询路由器是首个决策环节其核心任务是智能判断用户问题的类型并选择最优知识来源**确保系统能够高效、准确地响应各种查询。**# 定义路由输出结构 class RouteQuery(BaseModel): 将用户的问题路由到最相关的数据源 datasource: Literal[vectorstore, websearch, llm_fallback] Field( ..., description根据用户问题将其路由到向量数据库、网络搜索或直接由LLM生成, ) # 将 LLM 包装成结构化输出模式输出 RouteQuery 类型 structured_llm_router llm_model.with_structured_output(RouteQuery) # 系统提示词 system 你是一个专家级的路由器负责判断用户问题应该选择哪个路径。 1. 如果问题是闲聊或寒暄如“你好”、“讲个笑话”、“你是谁”选择llm_fallback 2. 如果问题与AI技术文档相关选择vectorstore 3. 如果需要最新实时信息选择websearch 只输出vectorstore、websearch或llm_fallback即可。 # 构建提示模板 route_prompt ChatPromptTemplate.from_messages( [ (system, system), (human, {question}), ] ) # 组合提示模板与结构化路由模型 question_router route_prompt | structured_llm_router def route_question(state: GraphState) - str: 根据路由器决定问题走向 print(state) print(---路由问题---) source: RouteQuery question_router.invoke({question: state[question]}) if source.datasource websearch: return WEBSEARCH elif source.datasource vectorstore: return RETRIEVE else: return LLM_FALLBACK在这一环节系统会对用户问题进行智能分类并选择最合适的处理路径vectorstore当问题涉及AI技术内容时直接从向量数据库检索答案。websearch当问题需要最新实时信息时调用网络搜索获取数据。llm_fallback对于闲聊、寒暄等问题直接由LLM生成答案。通过这一智能化路由策略Agentic RAG系统在知识覆盖、实时性与灵活性之间实现了平衡本地知识库命中时快速返回高质量答案知识库覆盖不足时网络搜索补充最新信息对于无需检索的场景LLM_FALLBACK确保系统仍能生成合理且连贯的回应。第4步构建文档向量检索节点文档向量检索是RAG系统的知识核心负责将用户问题与本地知识库中的高相关内容匹配为生成答案提供可靠上下文。def create_vectorstore(): 创建或加载向量存储用于文档检索 chroma_path ./chroma_langchain_db # 如果本地已经存在向量数据库直接加载 if os.path.exists(chroma_path): print(正在加载本地向量存储...) vectorstore Chroma( persist_directorychroma_path, embedding_functionembed_model, collection_namerag-chroma, ) return vectorstore.as_retriever() # 如果没有构建新的向量数据库 print(正在创建新的向量存储...) urls [ https://aws.amazon.com/cn/what-is/large-language-model/, https://zhuanlan.zhihu.com/p/659386520, https://zhuanlan.zhihu.com/p/620342675, ] # 从网页加载内容 docs [WebBaseLoader(url).load() for url in urls] docs_list [item for sublist in docs for item in sublist] # 将长文本拆分为小片段 text_splitter ChineseRecursiveTextSplitter( chunk_size250, # 每段大小约 250 tokens chunk_overlap0 # 不重叠 ) doc_splits text_splitter.split_documents(docs_list) # 构建 Chroma 向量存储并持久化到本地 vectorstore Chroma.from_documents( documentsdoc_splits, collection_namerag-chroma, embeddingembed_model, persist_directorychroma_path, ) print(向量存储创建完成) return vectorstore.as_retriever() # 初始化检索器 retriever create_vectorstore() def retrieve(state: Dict[str, Any]) - Dict[str, Any]: 从向量存储中检索相关文档 print(---RETRIEVE---) question state[question] # 使用预先配置好的检索器获取最语义相关的文档 documents retriever.invoke(question) return {documents: documents, question: question}这一环节是整个知识库的核心流程可以拆解为以下几个部分加载环境变量通过load_dotenv读取配置文件方便灵活调用不同模型或参数减少硬编码带来的维护成本。定义高质量知识源我们选取了三篇技术文章作为示例作为知识库的基础内容后续也可以根据业务需要进行扩展。加载网页内容利用WebBaseLoader抓取网页内容并转换为标准的文档对象便于后续处理。文本智能切分通过ChineseRecursiveTextSplitter将长文本切分成250 tokens的小片段且不设置重叠。这种切分方式可以兼顾语义完整性和检索效率确保模型在检索时定位更加精准。构建本地向量存储调用Chroma向量数据库将切分后的文本片段向量化并结合嵌入模型生成高质量语义向量再持久化存储到本地。这意味着即使重启环境也能快速加载无需重复构建。实现检索节点当用户输入问题时检索器会从本地数据库中找到语义相关度最高的文档为后续的生成环节提供精准上下文。通过这一流程RAG系统具备了高效、稳定的语义检索能力。后续再结合评分和决策机制就能进一步过滤噪声信息仅保留高质量、强相关的文档从而显著提升生成内容的准确性与可靠性。第5步构建网络搜索节点为了扩展知识覆盖范围**Agentic RAG系统引入网络搜索节点用于处理实时信息或**本地知识库未覆盖的领域问题。****# 初始化 Tavily 搜索工具最多返回 3 条结果 web_search_tool TavilySearch(max_results3) def web_search(state: GraphState) - Dict[str, Any]: print(---WEB SEARCH---) question state[question] # 获取已有文档若无则创建空列表 documents state.get(documents, []) # 调用网络搜索 tavily_results web_search_tool.invoke({query: question})[results] joined_tavily_result \n.join( [tavily_result[content] for tavily_result in tavily_results] ) web_results Document(page_contentjoined_tavily_result) # 将搜索结果加入文档列表 if documents: documents.append(web_results) else: documents [web_results] return {documents: documents, question: question}网络搜索节点的引入是为了弥补本地向量数据库的局限在处理实时问题或未覆盖的领域知识时显得尤为重要接入Tavily搜索Tavily是针对AI应用优化的搜索API能够快速找到与问题最相关的网页内容。每次搜索最多返回3条结果确保信息简洁且精准。合并搜索结果搜索完成后系统会将多条网页内容合并为一个Document对象并追加到当前的文档集合中。实现混合知识检索系统可同时利用本地向量库处理领域专业问题也可通过网络搜索获取最新、全面的答案。这种**“本地知识网络搜索”的混合策略让RAG系统既能保持生成结果的准确性**又具备广度和灵活性从而应对从技术深研到新闻热点等多样化的查询场景。第6步创建文档检索评分节点文档检索评分器是整个流程的质量把控环节用于校验从向量数据库检索出的文档是否真正契合用户问题。这一步至关重要因为向量相似度≠语义相关性有时检索结果看似匹配但实际语境并不契合。# 定义评分输出结构 class GradeDocuments(BaseModel): 用于检查检索文档是否与问题相关的二元评分 binary_score: str Field( description判断文档是否与问题相关仅输出 yes 或 no ) # 将 LLM 模型封装为结构化输出模式 structured_llm_grader llm_model.with_structured_output(GradeDocuments) # 系统提示词 system_prompt 你是一个负责评估检索结果相关性的评分器。 如果文档内容包含了与问题相关的关键词或者语义上与问题匹配请评为 yes。 如果完全无关则返回 no。 请严格输出 yes 或 no用于标记该文档是否与用户问题相关。 # 构建提示模板 grade_prompt ChatPromptTemplate.from_messages([ (system, system_prompt), (human, 检索到的文档:\n\n {document} \n\n 用户问题: {question}), ]) # 组合评分链 retrieval_grader grade_prompt | structured_llm_grader # 评分函数 def grade_documents(state: Dict[str, Any]) - Dict[str, Any]: 判断检索到的文档是否与问题相关。 如果有任何文档不相关将触发 web 搜索标记。 Args: state (dict): 当前图状态 Returns: state (dict): 筛选出相关文档并更新 web_search 状态 print(---检查文档与问题的相关性---) question state[question] documents state[documents] filtered_docs [] web_search False for d in documents: # 使用检索评分器评估文档相关性 score retrieval_grader.invoke({ question: question, document: d.page_content }) grade score.binary_score if grade.lower() yes: print(---评分结果文档相关---) filtered_docs.append(d) else: print(---评分结果文档不相关---) web_search True continue return {documents: filtered_docs, question: question, web_search: web_search}其工作机制可以拆解为以下三点结构化输出通过GradeDocuments模型强制生成yes或no的结果确保后续处理简单且稳定。精准提示词同时检查关键词匹配与语义匹配实现更全面的相关性评估。质量把控若检索内容不相关则直接丢弃避免误导生成当无合格文档时系统会自动触发网络搜索补充缺失信息。这种评分机制让检索模块在效率与准确性之间实现最佳平衡本地知识库命中率高时响应更快而在知识覆盖不足时又能自适应扩展搜索范围从而保障用户始终获得完整、准确的答案。第7步构建生成节点生成节点是RAG系统的大脑**负责将用户问题与检索到的上下文信息结合生成最终答案实现从检索到生成的完整闭环。**# 从 LangChain Hub 拉取优化好的 RAG Prompt prompt hub.pull(rlm/rag-prompt) # 构建生成链提示模板 → LLM → 输出解析器 generation_chain prompt | llm_model | StrOutputParser() def generate(state: GraphState) - Dict[str, Any]: 使用文档和问题生成答案 print(---GENERATE---) question state[question] documents state[documents] # 调用生成链生成最终答案 generation generation_chain.invoke({context: documents, question: question}) return {documents: documents, question: question, generation: generation} def llm_fallback(state: GraphState) - Dict[str, Any]: 当问题无需检索或搜索时直接由 LLM 生成答案 print(---LLM FALLBACK---) question state[question] generation llm_model.invoke(question).content return { question: question, generation: generation, documents: [], web_search: False, fallback: True, }生成节点的核心特点优化提示模板我们直接从LangChain Hub拉取专为**检索增强生成RAG**场景优化的Prompt模板。这个模板能更好地融合检索到的上下文信息帮助模型生成更准确、更有逻辑的回答。输出结构化通过StrOutputParser输出会被规范化为干净的纯文本格式方便后续进行评分、质检或二次处理。核心价值生成链将用户问题、检索文档、提示模板有机结合确保回答不仅完整、准确还能直接用于答案质量评估和幻觉检测。通过这个节点RAG系统真正实现了**“从检索到生成”的完整闭环生成的内容能够无缝支持答案质量评估与幻觉检测**等后续流程。第8步构建生成内容幻觉检测系统幻觉检测器是RAG系统中至关重要的质量保障组件**用于确保生成答案基于事实避免出现“貌似合理但错误”的内容。**# 定义幻觉评分输出结构 class GradeHallucinations(BaseModel): 用于检测生成答案中是否存在幻觉的二元评分 binary_score: bool Field( description答案是否基于事实仅输出 True 或 False ) # 将 LLM 封装为结构化输出模式 structured_llm_grader llm_model.with_structured_output(GradeHallucinations) # 系统提示词 system 你是一个评分器用于判断 LLM 生成的回答是否基于一组检索到的事实。 请严格给出二元评分 yes 或 no。 Yes 表示答案基于/支持所提供的事实No 表示答案未得到事实支持。 # 构建提示模板 hallucination_prompt ChatPromptTemplate.from_messages( [ (system, system), (human, 事实集合: \n\n {documents} \n\n LLM 生成内容: {generation}), ] ) # 组合成可执行评分链 hallucination_grader: RunnableSequence hallucination_prompt | structured_llm_grader幻觉检测器是RAG系统最关键的组件之一用于确保生成内容真实且有事实依据验证生成答案的真实性将模型输出与检索到的文档逐一对比判断信息是否有可靠支撑。二元评分采用布尔值或**‘yes’/‘no’**的结果避免模棱两可的判断。防止“貌似合理但错误”的回答一旦检测到幻觉系统会触发重新生成或补充检索确保输出内容准确可靠。这一环节显著提升了RAG系统的可信度与安全性让最终生成结果既智能又可靠。第9步创建答案质量评分器答案质量评分器负责评估生成内容是否真正回应用户问题**确保输出不仅基于事实还具有针对性和实用性。**# 定义答案评分输出结构 class GradeAnswer(BaseModel): binary_score: bool Field( description答案是否有效回应问题仅输出 True 或 False ) # 将 LLM 封装为结构化输出模式 structured_llm_grader llm_model.with_structured_output(GradeAnswer) # 系统提示词 system 你是一个评分器用于判断生成的答案是否解决了用户的问题。 请严格给出二元评分 yes 或 no。 Yes 表示答案有效回应并解决了问题No 表示未解决。 # 构建提示模板 answer_prompt ChatPromptTemplate.from_messages( [ (system, system), (human, 用户问题: \n\n {question} \n\n LLM 生成内容: {generation}), ] ) # 组合成可执行评分链 answer_grader: RunnableSequence answer_prompt | structured_llm_grader答案质量评分器用于评估生成内容是否真正回应用户问题验证回答的针对性即便答案基于事实也需判断其是否直接解决了用户的具体需求。二元化评分采用**‘yes’或’no’**标记确保评估结果清晰、易于处理。触发补救措施若答案未能有效回应问题将启动额外检索或网络搜索以获取更匹配的信息。借助答案质量评分器系统输出能够做到准确且切题进一步提升用户体验与整体可靠性。第10步构建完整图工作流这一环节是Agentic RAG系统的核心将前面构建的检索、生成、评分和搜索模块有机整合形成一个端到端智能闭环。# 决策是否进入生成环节 def decide_to_generate(state): 根据文档评分决定走 web 搜索还是直接生成答案 print(---评估文档---) return WEBSEARCH if state[web_search] else GENERATE # 对生成内容进行幻觉与答案质量评分 def grade_generation_grounded_in_documents_and_question(state): 评分生成答案的真实性与有效性 print(---检查幻觉与答案质量---) question state[question] documents state[documents] generation state[generation] # 检查是否基于事实 score hallucination_grader.invoke({documents: documents, generation: generation}) if score.binary_score: # 检查答案是否有用 score answer_grader.invoke({question: question, generation: generation}) return useful if score.binary_score else not useful else: return not supported # 构建工作流 workflow StateGraph(GraphState) workflow.add_node(RETRIEVE, retrieve) workflow.add_node(GRADE_DOCUMENTS, grade_documents) workflow.add_node(GENERATE, generate) workflow.add_node(WEBSEARCH, web_search) workflow.add_node(LLM_FALLBACK, llm_fallback) workflow.set_conditional_entry_point( route_question, {WEBSEARCH: WEBSEARCH, RETRIEVE: RETRIEVE, LLM_FALLBACK: LLM_FALLBACK}, ) workflow.add_edge(RETRIEVE, GRADE_DOCUMENTS) workflow.add_conditional_edges( GRADE_DOCUMENTS, decide_to_generate, {WEBSEARCH: WEBSEARCH, GENERATE: GENERATE}, ) workflow.add_conditional_edges( GENERATE, grade_generation_grounded_in_documents_and_question, {not supported: GENERATE, useful: END, not useful: WEBSEARCH}, ) workflow.add_edge(WEBSEARCH, GENERATE) workflow.add_edge(LLM_FALLBACK, END) app workflow.compile() # 导出图可视化 app.get_graph().draw_mermaid_png(output_file_pathgraph.png)这个图工作流是Agentic RAG系统的核心将前面构建的各模块有机整合形成完整闭环条件入口点系统根据路由器的判断将问题分配至本地检索或网络搜索。自适应决策逻辑decide_to_generate根据文档评分决定生成答案或进入网络搜索流程。grade_generation_grounded_in_documents_and_question执行自我纠错机制检测生成内容的真实性与质量必要时触发重新生成或补充检索。route_question负责初始问题的智能路由。动态工作流编译后的工作流能根据每一步的信息质量动态调整执行路径确保最终输出可靠、准确。可视化最终导出graph.png直观展示整个系统的执行流程。通过这一环节Agentic RAG系统完成了智能、自适应的端到端问答闭环从用户提问到答案输出每一步都可控、可验证确保生成内容高质量、高可靠性。LangGraph状态流程图第11步创建主应用入口主应用入口是Agentic RAG系统的用户交互界面为系统提供了一个简洁、直观的命令行测试环境。****def format_response(result): 提取并格式化工作流输出 if isinstance(result, dict): return result.get(generation) or result.get(answer, ) return str(result) def main(): 自适应 RAG 系统命令行界面 print( Adaptive RAG System ) print(输入 quit 退出程序。\n) while True: question input(Question: ).strip() if question.lower() in [quit, exit, q, ]: break print(Processing...) try: # 调用工作流生成答案 for output in app.stream({question: question}): result next(iter(output.values())) print(f\nAnswer: {format_response(result)}\n) except Exception as e: print(fError: {e}) if __name__ __main__: main()核心解析加载环境变量确保程序能正确读取API密钥和模型配置。调用工作流通过已编译的app利用app.stream()实现流式输出。结果处理format_response函数从输出中提取生成的答案方便直观展示。交互体验用户在终端输入问题即可获得完整的Adaptive RAG问答体验。有了这个入口文件整个系统即可完成端到端运行和测试轻松展示其智能、灵活的自适应问答能力。四、运行系统完成环境配置与代码准备后即可启动Agentic RAG系统正在加载本地向量存储... 流程图导出为 graph.png Adaptive RAG System 输入 quit 退出程序。 Question: 明天天津天气怎么样有雨吗 Processing... {question: 明天天津天气怎么样有雨吗} ---路由问题--- {question: 明天天津天气怎么样有雨吗} ---WEB SEARCH--- {question: 明天天津天气怎么样有雨吗, documents: [Document(metadata{}, page_content... 明天上午阴有阵雨,下午阴转多云,南风3-4级转微风,今天夜间最低气温23度,明天白天最高气温27度,相对湿度90%到67%.今夜我市有明显降雨过程,降雨时伴有雷电,短时强降\n今起三天我国降雨将分为南北两条雨带北方降雨集中在华北、东北等地明天起新一轮降雨将来袭南方雨带位于云南、贵州、四川盆地西部一带部分地区有大到暴雨。\n星期五 08/22. 阴. 西北风 ; 星期六 08/23. 雷阵雨. 北风 ; 星期日 08/24. 雷阵雨. 东北风 ; 星期一 08/25. 晴. 北风 ; 星期二 08/26. 多云. 东风.)]} ---GENERATE--- {documents: [Document(metadata{}, page_content... 明天上午阴有阵雨,下午阴转多云,南风3-4级转微风,今天夜间最低气温23度,明天白天最高气温27度,相对湿度90%到67%.今夜我市有明显降雨过程,降雨时伴有雷电,短时强降\n今起三天我国降雨将分为南北两条雨带北方降雨集中在华北、东北等地明天起新一轮降雨将来袭南方雨带位于云南、贵州、四川盆地西部一带部分地区有大到暴雨。\n星期五 08/22. 阴. 西北风 ; 星期六 08/23. 雷阵雨. 北风 ; 星期日 08/24. 雷阵雨. 东北风 ; 星期一 08/25. 晴. 北风 ; 星期二 08/26. 多云. 东风.)], question: 明天天津天气怎么样有雨吗, generation: 明天天津上午有阵雨下午转为多云。全天南风3-4级转微风气温在23到27度之间。} ---检查幻觉与答案质量--- Answer: 明天天津上午有阵雨下午转为多云。全天南风3-4级转微风气温在23到27度之间。从运行示例可以看到系统完整执行了自适应的推理流程。首先它会对问题进行智能分析判断是直接检索本地知识库还是调用网络搜索。在这个示例中问题涉及最新天气情况因此系统选择了实时搜索从互联网上获取了最新的气象信息。接着系统将检索到的内容与问题进行匹配生成自然语言回答。生成结果会经过幻觉检测与质量评估以确保信息准确、逻辑合理并且与上下文一致。最终系统输出了一条可靠的回答明天天津上午有阵雨下午转为多云南风 3-4 级转微风气温在 23 到 27 度之间。整个过程充分体现了Agentic RAG系统的自适应能力——它能灵活选择信息来源快速整合数据并通过多重验证机制保证回答的准确性和可信度。总结与未来方向本文深入探讨了Agentic RAG系统的核心理念与实现路径详细解析了如何基于LangGraph构建有状态的工作流并结合Qwen模型、本地向量检索与网络搜索实现具备动态路由、智能决策、自我纠错的增强生成系统。该方案能够精准识别查询复杂度灵活选择最优检索与生成策略并通过多阶段质量控制大幅提升答案的准确性、可靠性和时效性。展望未来Agentic RAG将向多模态融合与自主智能化方向持续演进。一方面引入图像、视频、表格等多模态数据进行统一检索与生成扩展系统在复杂任务中的适用性与表达能力另一方面结合强化学习RLHF及反馈驱动的优化机制系统将具备持续迭代、动态学习的能力实现更加精准的任务决策与答案优化。此外借助大规模知识图谱与分布式检索架构Agentic RAG有望实现更高效、更低延迟的知识利用推动智能应用迈向更智能、更自适应的新阶段。这里给大家精心整理了一份全面的AI大模型学习资源包括AI大模型全套学习路线图从入门到实战、精品AI大模型学习书籍手册、视频教程、实战学习、面试题等资料免费分享扫码免费领取全部内容1. 成长路线图学习规划要学习一门新的技术作为新手一定要先学习成长路线图方向不对努力白费。这里我们为新手和想要进一步提升的专业人士准备了一份详细的学习成长路线图和规划。可以说是最科学最系统的学习成长路线。2. 大模型经典PDF书籍书籍和学习文档资料是学习大模型过程中必不可少的我们精选了一系列深入探讨大模型技术的书籍和学习文档它们由领域内的顶尖专家撰写内容全面、深入、详尽为你学习大模型提供坚实的理论基础。书籍含电子版PDF3. 大模型视频教程对于很多自学或者没有基础的同学来说书籍这些纯文字类的学习教材会觉得比较晦涩难以理解因此我们提供了丰富的大模型视频教程以动态、形象的方式展示技术概念帮助你更快、更轻松地掌握核心知识。4. 2026行业报告行业分析主要包括对不同行业的现状、趋势、问题、机会等进行系统地调研和评估以了解哪些行业更适合引入大模型的技术和应用以及在哪些方面可以发挥大模型的优势。5. 大模型项目实战学以致用当你的理论知识积累到一定程度就需要通过项目实战在实际操作中检验和巩固你所学到的知识同时为你找工作和职业发展打下坚实的基础。6. 大模型面试题面试不仅是技术的较量更需要充分的准备。在你已经掌握了大模型技术之后就需要开始准备面试我们将提供精心整理的大模型面试题库涵盖当前面试中可能遇到的各种技术问题让你在面试中游刃有余。7. 资料领取全套内容免费抱走学 AI 不用再找第二份不管你是 0 基础想入门 AI 大模型还是有基础想冲刺大厂、了解行业趋势这份资料都能满足你现在只需按照提示操作就能免费领取扫码免费领取全部内容

相关文章:

从零开始构建Agentic RAG系统:LangGraph+Qwen打造智能自适应RAG

本文详细介绍Agentic RAG系统的构建方法,该系统融合动态查询分析和自我纠错机制,能够根据查询复杂度自适应选择检索与生成策略。文章基于LangGraph和Qwen模型,从状态管理、查询路由、文档检索、网络搜索到幻觉检测等11个步骤,完整…...

‌智慧校园系统价格解析:如何看懂报价背后的逻辑与选择适合自己的方案?

✅作者简介:合肥自友科技 📌核心产品:智慧校园平台(包括教工管理、学工管理、教务管理、考务管理、后勤管理、德育管理、资产管理、公寓管理、实习管理、就业管理、离校管理、科研平台、档案管理、学生平台等26个子平台) 。公司所有人员均有多…...

别再死磕 Python 了!这 4 款低代码工具也能做深度数据分析!

目录 一、FineBI 二、活字格 BI 插件 三、钉钉宜搭 QuickBI 四、Power BI 五、工具总结与对比 常见问答 想用数据驱动业务,却被代码给困住了? 业务那边急着要数据,你还在和Python库的版本兼容问题较劲……卡在脚本报错里寸步难行。 …...

计科-Linux4-中文件查看命令的详细介绍「整理」

...

妥妥的豪华局 —— 让 AI 来做照片分析

虽然 AI 无法给出所有的准确分析。 尝试使用 AI 分析一张照片,照片上的不少细节 AI 都注意到了,尤其是对中美使用餐具的情况做了对比。 同时,口味判断是准确的。 同时,给出的照片中,删除了所有的 EXIF 信息&#xff…...

静止同步调相机——01 无功补偿原理

无功补偿原理...

黄金悖论:无用的巅峰

“僭越者”的冠冕:黄金的终极悖论这一次,黄金的暴涨显得如此理所当然,甚至带着一丝命定的傲慢。然而,在其君临天下的价格曲线之下,涌动着一个深刻而古老的悖论:它正因其“无用”,而达至了“大用…...

仓库管理五大法:收、管、存、发、盘

目录 头条标题:仓库管理必看:收、管、存、发、盘5大方法 一、收:入库管理,把好物料入口关 1、单据到达 2、实物核对 3、办理入库 4、信息更新 二、管:在库管理,做好物料日常管控 1、分区分类 2、货…...

基于有源阻尼的PMSM高阻尼复矢量电流控制仿真、有参考文献

✅作者简介:热爱科研的Matlab仿真开发者,擅长数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。🍎 往期回顾关注个人主页:Matlab科研工作室🍊个人信条:格物致知,完整Matlab代码及仿真咨询…...

【独家原创】基于(蜜獾算法)HBA-Transformer单变量时序预测(单输入单输出) Matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,擅长数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。🍎 往期回顾关注个人主页:Matlab科研工作室🍊个人信条:格物致知,完整Matlab代码及仿真咨询…...

【独家原创】基于(黏菌算法)SMA-Transformer多变量回归预测(多输入单输出) Matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。🍎 往期回顾关注个人主页:Matlab科研工作室👇 关注我领取海量matlab电子书和…...

基于DE-Transformer多变量时序预测 (多输入单输出)Matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。🍎 往期回顾关注个人主页:Matlab科研工作室👇 关注我领取海量matlab电子书和…...

【路径规划】基于Q-Learning实现的多机器人路径规划演示附matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。🍎 往期回顾关注个人主页:Matlab科研工作室👇 关注我领取海量matlab电子书和…...

风电SCADA数据采集物联网解决方案

风电SCADA能够实时采集风电机组的运行数据,并对风力发电机组进行监视和控制,确保风电场安全高效地运行。现要求将SCADA数据采集到云服务器中,实现远程化的管理和应用。对此,物通博联(WideIOT)提供高效可靠的…...

并行算法在STL中的应用

1、非修改序列算法这些算法不会改变它们所操作的容器中的元素。1.1 find 和 find_iffind(begin, end, value):查找第一个等于 value 的元素,返回迭代器(未找到返回 end)。find_if(begin, end, predicate):查找第一个满…...

基于DE-Transformer单变量时序预测 (单输入单输出)Matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。🍎 往期回顾关注个人主页:Matlab科研工作室👇 关注我领取海量matlab电子书和…...

【数据分析】数据驱动预测控制策略的比较分析附matlab代码复现

✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。🍎 往期回顾关注个人主页:Matlab科研工作室👇 关注我领取海量matlab电子书和…...

P8638 [蓝桥杯 2016 省 A] 密码脱落【LCS】

P8638 [蓝桥杯 2016 省 A] 密码脱落 题目描述 X 星球的考古学家发现了一批古代留下来的密码。 这些密码是由 A、B、C、D 四种植物的种子串成的序列。 仔细分析发现,这些密码串当初应该是前后对称的(也就是我们说的回文串)。 由于年代久远…...

Spring Cloud Circuit Breaker 2.0.0 M1(Milestone 1)是 Spring Cloud 官方在 2022 年初发布的

Spring Cloud Circuit Breaker 2.0.0 M1(Milestone 1)是 Spring Cloud 官方在 2022 年初发布的 Spring Cloud Circuit Breaker 2.x 系列的首个里程碑版本,标志着该项目从旧版 spring-cloud-netflix-hystrix(已停更)和早期 spring-cloud-circuitbreaker(1.x)向统一、轻量…...

PCL: CorrespondenceEstimationNormalShooting的使用【2026最新版】

目录 一、 算法简介 二、 代码实现 1、原始版本 2、2026新版 三、结果展示 本文由CSDN点云侠原创,原文链接,首发于:2020年5月11日。博客长期更新,本文最近一次更新时间为:2026年3月15日。 一、 算法简介 pcl::registration::CorrespondenceEstimationNormalShooting< …...

Elasticsearch相关技术点

目录 ES数据结构、倒排索引、写入流程、读取流程 ES检索快的核心原因 Elasticsearch 性能优化 Elasticsearch 和 Kafka 数据结构对比 什么场景下使用了ES?//todo 项目中什么场景用了ES ES 怎么用的?数据量级多少?为什么用ES 不用Hbase? 倒排索引 是什么讲一下? 为…...

Spring Cloud Config 2.2.2 是 Spring Cloud 的一个**配置中心组件版本**

Spring Cloud Config 2.2.2 是 Spring Cloud 的一个配置中心组件版本&#xff0c;发布于 2020 年 3 月&#xff08;属于 Spring Cloud Hoxton.SR3 版本栈&#xff09;&#xff0c;基于 Spring Boot 2.2.x 构建。该版本已停止官方维护&#xff08;EOL&#xff09;&#xff0c;Sp…...

Spring Cloud App Broker 1.0.5 是 Spring Cloud 团队发布的用于构建云原生服务代理(Service Broker)的开源框架的一个维护版本

Spring Cloud App Broker 1.0.5 是 Spring Cloud 团队发布的用于构建云原生服务代理&#xff08;Service Broker&#xff09;的开源框架的一个维护版本。该版本主要包含错误修复、安全补丁、依赖升级&#xff08;如 Spring Boot、Spring Cloud 及相关组件的兼容性更新&#xff…...

java毕业设计——基于JSP+sqlserver的网上书店系统设计与实现(毕业论文+程序源码)——网上书店

基于JSPsqlserver的网上书店系统设计与实现&#xff08;毕业论文程序源码&#xff09; 大家好&#xff0c;今天给大家介绍基于JSPsqlserver的网上书店系统设计与实现&#xff0c;文章末尾附有本毕业设计的论文和源码下载地址哦。需要下载开题报告PPT模板及论文答辩PPT模板等的…...

java毕业设计——基于JSP+sqlserver的网上购物系统设计与实现(毕业论文+程序源码)——网上购物系统

基于JSPsqlserver的网上购物系统设计与实现&#xff08;毕业论文程序源码&#xff09; 大家好&#xff0c;今天给大家介绍基于JSPsqlserver的网上购物系统设计与实现&#xff0c;文章末尾附有本毕业设计的论文和源码下载地址哦。需要下载开题报告PPT模板及论文答辩PPT模板等的…...

java毕业设计——基于JSP+sqlserver的网络远程作业处理系统设计与实现(毕业论文+程序源码)——网络远程作业处理系统

基于JSPsqlserver的网络远程作业处理系统设计与实现&#xff08;毕业论文程序源码&#xff09; 大家好&#xff0c;今天给大家介绍基于JSPsqlserver的网络远程作业处理系统设计与实现&#xff0c;文章末尾附有本毕业设计的论文和源码下载地址哦。需要下载开题报告PPT模板及论文…...

斜率计算2

斜率计算2 描述 现在给出两个点的坐标&#xff0c;要你求出斜率&#xff0c;这个斜率需要用最简分数表示&#xff0c;同时斜率不存在输出-1 输入 输入4个整数 x1,y1,x2,y2.分别是A,B两点的坐标。 输出 输出两点所确定直线的斜率&#xff0c;不存在则输出-1. 输入样例 1 2…...

C++做石头剪刀布

运作原理程序里1代表石头&#xff1b;2代表布&#xff1b;3代表剪刀&#xff0c;然后让计算机随机从1~3抽一个数&#xff0c;再来判断。界面std::cout << " 石头剪刀布 \n";std::cout << " Rock Paper Scissors \n";std::cout << …...

PCL 计算两点云之间的最小距离【2026最新版】

目录 一、 算法原理 二、 代码实现 三、 结果展示 四、 相关链接 本文由CSDN点云侠原创,原文链接,首发于:2023年11月24日。博客长期更新,本文最新更新时间为:2026年3月15日。 一、 算法原理 pcl::registration::CorrespondenceEstimation是确定目标和查询点集(或特征)之…...

NPU算力突破对其他行业的意义是什么?

NPU&#xff08;神经网络处理器&#xff09;算力突破100 TOPS&#xff08;每秒万亿次运算&#xff09;&#xff0c;不仅是手机行业的里程碑&#xff0c;更是汽车、医疗、工业和物联网等多个领域智能化转型的关键催化剂。这一算力阈值的跨越&#xff0c;意味着复杂的AI大模型可以…...