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

news2026/3/16 11:53:40
本文详细介绍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 大模型还是有基础想冲刺大厂、了解行业趋势这份资料都能满足你现在只需按照提示操作就能免费领取扫码免费领取全部内容

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2416051.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SpringBoot-17-MyBatis动态SQL标签之常用标签

文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…

wordpress后台更新后 前端没变化的解决方法

使用siteground主机的wordpress网站,会出现更新了网站内容和修改了php模板文件、js文件、css文件、图片文件后,网站没有变化的情况。 不熟悉siteground主机的新手,遇到这个问题,就很抓狂,明明是哪都没操作错误&#x…

网络编程(Modbus进阶)

思维导图 Modbus RTU(先学一点理论) 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议,由 Modicon 公司(现施耐德电气)于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…

UE5 学习系列(二)用户操作界面及介绍

这篇博客是 UE5 学习系列博客的第二篇,在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下: 【Note】:如果你已经完成安装等操作,可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作,重…

IDEA运行Tomcat出现乱码问题解决汇总

最近正值期末周,有很多同学在写期末Java web作业时,运行tomcat出现乱码问题,经过多次解决与研究,我做了如下整理: 原因: IDEA本身编码与tomcat的编码与Windows编码不同导致,Windows 系统控制台…

利用最小二乘法找圆心和半径

#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …

使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式

一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明&#xff1a;假设每台服务器已…

XML Group端口详解

在XML数据映射过程中&#xff0c;经常需要对数据进行分组聚合操作。例如&#xff0c;当处理包含多个物料明细的XML文件时&#xff0c;可能需要将相同物料号的明细归为一组&#xff0c;或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码&#xff0c;增加了开…

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造&#xff0c;完美适配AGV和无人叉车。同时&#xff0c;集成以太网与语音合成技术&#xff0c;为各类高级系统&#xff08;如MES、调度系统、库位管理、立库等&#xff09;提供高效便捷的语音交互体验。 L…

(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)

题目&#xff1a;3442. 奇偶频次间的最大差值 I 思路 &#xff1a;哈希&#xff0c;时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况&#xff0c;哈希表这里用数组即可实现。 C版本&#xff1a; class Solution { public:int maxDifference(string s) {int a[26]…

【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型

摘要 拍照搜题系统采用“三层管道&#xff08;多模态 OCR → 语义检索 → 答案渲染&#xff09;、两级检索&#xff08;倒排 BM25 向量 HNSW&#xff09;并以大语言模型兜底”的整体框架&#xff1a; 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后&#xff0c;分别用…

【Axure高保真原型】引导弹窗

今天和大家中分享引导弹窗的原型模板&#xff0c;载入页面后&#xff0c;会显示引导弹窗&#xff0c;适用于引导用户使用页面&#xff0c;点击完成后&#xff0c;会显示下一个引导弹窗&#xff0c;直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…

接口测试中缓存处理策略

在接口测试中&#xff0c;缓存处理策略是一个关键环节&#xff0c;直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性&#xff0c;避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明&#xff1a; 一、缓存处理的核…

龙虎榜——20250610

上证指数放量收阴线&#xff0c;个股多数下跌&#xff0c;盘中受消息影响大幅波动。 深证指数放量收阴线形成顶分型&#xff0c;指数短线有调整的需求&#xff0c;大概需要一两天。 2025年6月10日龙虎榜行业方向分析 1. 金融科技 代表标的&#xff1a;御银股份、雄帝科技 驱动…

观成科技:隐蔽隧道工具Ligolo-ng加密流量分析

1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具&#xff0c;该工具基于TUN接口实现其功能&#xff0c;利用反向TCP/TLS连接建立一条隐蔽的通信信道&#xff0c;支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式&#xff0c;适应复杂网…

铭豹扩展坞 USB转网口 突然无法识别解决方法

当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…

未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?

编辑&#xff1a;陈萍萍的公主一点人工一点智能 未来机器人的大脑&#xff1a;如何用神经网络模拟器实现更智能的决策&#xff1f;RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战&#xff0c;在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…

Linux应用开发之网络套接字编程(实例篇)

服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …

华为云AI开发平台ModelArts

华为云ModelArts&#xff1a;重塑AI开发流程的“智能引擎”与“创新加速器”&#xff01; 在人工智能浪潮席卷全球的2025年&#xff0c;企业拥抱AI的意愿空前高涨&#xff0c;但技术门槛高、流程复杂、资源投入巨大的现实&#xff0c;却让许多创新构想止步于实验室。数据科学家…

深度学习在微纳光子学中的应用

深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向&#xff1a; 逆向设计 通过神经网络快速预测微纳结构的光学响应&#xff0c;替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…