news 2026/4/18 0:25:20

【干货收藏】Agentic RAG系统构建全攻略:LangGraph与Qwen实战

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【干货收藏】Agentic RAG系统构建全攻略:LangGraph与Qwen实战

本文详细介绍了Agentic RAG系统的构建方法,这是一种具备动态查询分析和自我纠错能力的先进RAG策略。文章基于LangGraph和Qwen模型,展示了如何实现智能查询路由、动态知识获取和多阶段质量保障等核心功能。通过完整代码实现,从状态管理到系统集成,构建了一个能够根据查询复杂度自适应调整策略的RAG系统,显著提升了答案的准确性、可靠性和时效性。

一、理解Agentic RAG

Agentic 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_name="qwen-max", streaming=True, temperature=0) # 加载嵌入模型 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_directory=chroma_path, embedding_function=embed_model, collection_name="rag-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_size=250, # 每段大小约 250 tokens chunk_overlap=0 # 不重叠 ) doc_splits = text_splitter.split_documents(docs_list) # 构建 Chroma 向量存储并持久化到本地 vectorstore = Chroma.from_documents( documents=doc_splits, collection_name="rag-chroma", embedding=embed_model, persist_directory=chroma_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}

这一环节是整个知识库的核心,流程可以拆解为以下几个部分:

  1. 加载环境变量
    通过load_dotenv读取配置文件,方便灵活调用不同模型或参数,减少硬编码带来的维护成本。
  2. 定义高质量知识源
    我们选取了三篇技术文章作为示例,作为知识库的基础内容,后续也可以根据业务需要进行扩展。
  3. 加载网页内容
    利用WebBaseLoader抓取网页内容,并转换为标准的文档对象,便于后续处理。
  4. 文本智能切分
    通过ChineseRecursiveTextSplitter将长文本切分成250 tokens的小片段,且不设置重叠。这种切分方式可以兼顾语义完整性和检索效率,确保模型在检索时定位更加精准。
  5. 构建本地向量存储
    调用Chroma向量数据库,将切分后的文本片段向量化,并结合嵌入模型生成高质量语义向量,再持久化存储到本地。这意味着即使重启环境,也能快速加载,无需重复构建。
  6. 实现检索节点
    当用户输入问题时,检索器会从本地数据库中找到语义相关度最高的文档,为后续的生成环节提供精准上下文。

通过这一流程,RAG系统具备了高效、稳定的语义检索能力。后续再结合评分和决策机制,就能进一步过滤噪声信息,仅保留高质量、强相关的文档,从而显著提升生成内容的准确性与可靠性

第5步:构建网络搜索节点

为了扩展知识覆盖范围**,Agentic RAG系统引入网络搜索节点,用于处理实时信息或**本地知识库未覆盖的领域问题。****

# 初始化 Tavily 搜索工具,最多返回 3 条结果 web_search_tool = TavilySearch(max_results=3) 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_content=joined_tavily_result) # 将搜索结果加入文档列表 if documents: documents.append(web_results) else: documents = [web_results] return {"documents": documents, "question": question}

网络搜索节点的引入是为了弥补本地向量数据库的局限,在处理实时问题未覆盖的领域知识时显得尤为重要:

  1. 接入Tavily搜索

    Tavily是针对AI应用优化的搜索API,能够快速找到与问题最相关的网页内容。每次搜索最多返回3条结果,确保信息简洁且精准。

  2. 合并搜索结果

    搜索完成后,系统会将多条网页内容合并为一个Document对象,并追加到当前的文档集合中。

  3. 实现混合知识检索

    系统可同时利用本地向量库处理领域专业问题,也可通过网络搜索获取最新、全面的答案。

这种**“本地知识+网络搜索”的混合策略,让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}

其工作机制可以拆解为以下三点:

  1. 结构化输出

    通过GradeDocuments模型强制生成yesno的结果,确保后续处理简单且稳定。

  2. 精准提示词

    同时检查关键词匹配语义匹配,实现更全面的相关性评估。

  3. 质量把控

    若检索内容不相关,则直接丢弃,避免误导生成;当无合格文档时,系统会自动触发网络搜索,补充缺失信息。

这种评分机制让检索模块在效率与准确性之间实现最佳平衡:本地知识库命中率高时响应更快,而在知识覆盖不足时,又能自适应扩展搜索范围,从而保障用户始终获得完整、准确的答案

第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, }

生成节点的核心特点:

  1. 优化提示模板

    我们直接从LangChain Hub拉取专为**检索增强生成(RAG)**场景优化的Prompt模板。这个模板能更好地融合检索到的上下文信息,帮助模型生成更准确、更有逻辑的回答。

  2. 输出结构化

    通过StrOutputParser,输出会被规范化为干净的纯文本格式,方便后续进行评分、质检或二次处理。

  3. 核心价值

    生成链将用户问题、检索文档、提示模板有机结合,确保回答不仅完整、准确,还能直接用于答案质量评估幻觉检测

通过这个节点,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系统最关键的组件之一,用于确保生成内容真实且有事实依据

  1. 验证生成答案的真实性

    将模型输出与检索到的文档逐一对比,判断信息是否有可靠支撑。

  2. 二元评分

    采用布尔值或**‘yes’/‘no’**的结果,避免模棱两可的判断。

  3. 防止“貌似合理但错误”的回答

    一旦检测到幻觉,系统会触发重新生成补充检索,确保输出内容准确可靠。

这一环节显著提升了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

答案质量评分器用于评估生成内容是否真正回应用户问题

  1. 验证回答的针对性

    即便答案基于事实,也需判断其是否直接解决了用户的具体需求。

  2. 二元化评分

    采用**‘yes’’no’**标记,确保评估结果清晰、易于处理。

  3. 触发补救措施

    若答案未能有效回应问题,将启动额外检索网络搜索,以获取更匹配的信息。

借助答案质量评分器,系统输出能够做到准确且切题,进一步提升用户体验与整体可靠性。

第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_path="graph.png")

这个图工作流是Agentic RAG系统的核心,将前面构建的各模块有机整合,形成完整闭环:

  1. 条件入口点
    系统根据路由器的判断,将问题分配至本地检索网络搜索
  2. 自适应决策逻辑
    decide_to_generate:根据文档评分决定生成答案或进入网络搜索流程。
    grade_generation_grounded_in_documents_and_question:执行自我纠错机制,检测生成内容的真实性与质量,必要时触发重新生成或补充检索。
    route_question:负责初始问题的智能路由。
  3. 动态工作流
    编译后的工作流能根据每一步的信息质量动态调整执行路径,确保最终输出可靠、准确
  4. 可视化
    最终导出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(f"Error: {e}") if __name__ == "__main__": main()

核心解析:

  1. 加载环境变量
    确保程序能正确读取API密钥和模型配置。

  2. 调用工作流

    通过已编译的app,利用app.stream()实现流式输出。

  3. 结果处理

    format_response函数从输出中提取生成的答案,方便直观展示。

  4. 交互体验
    用户在终端输入问题即可获得完整的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的人有竞争优势”。

这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。

我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。

我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。

这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

为什么要学习大模型?

我国在A大模型领域面临人才短缺,数量与质量均落后于发达国家。2023年,人才缺口已超百万,凸显培养不足。随着AI技术飞速发展,预计到2025年,这一缺口将急剧扩大至400万,严重制约我国AI产业的创新步伐。加强人才培养,优化教育体系,国际合作并进是破解困局、推动AI发展的关键。

大模型入门到实战全套学习大礼包

1、大模型系统化学习路线

作为学习AI大模型技术的新手,方向至关重要。 正确的学习路线可以为你节省时间,少走弯路;方向不对,努力白费。这里我给大家准备了一份最科学最系统的学习成长路线图和学习规划,带你从零基础入门到精通!


2、大模型学习书籍&文档

学习AI大模型离不开书籍文档,我精选了一系列大模型技术的书籍和学习文档(电子版),它们由领域内的顶尖专家撰写,内容全面、深入、详尽,为你学习大模型提供坚实的理论基础。

3、AI大模型最新行业报告

2025最新行业报告,针对不同行业的现状、趋势、问题、机会等进行系统地调研和评估,以了解哪些行业更适合引入大模型的技术和应用,以及在哪些方面可以发挥大模型的优势。

4、大模型项目实战&配套源码

学以致用,在项目实战中检验和巩固你所学到的知识,同时为你找工作就业和职业发展打下坚实的基础。

5、大模型大厂面试真题

面试不仅是技术的较量,更需要充分的准备。在你已经掌握了大模型技术之后,就需要开始准备面试,我精心整理了一份大模型面试题库,涵盖当前面试中可能遇到的各种技术问题,让你在面试中游刃有余

适用人群

第一阶段(10天):初阶应用

该阶段让大家对大模型 AI有一个最前沿的认识,对大模型 AI 的理解超过 95% 的人,可以在相关讨论时发表高级、不跟风、又接地气的见解,别人只会和 AI 聊天,而你能调教 AI,并能用代码将大模型和业务衔接。

  • 大模型 AI 能干什么?
  • 大模型是怎样获得「智能」的?
  • 用好 AI 的核心心法
  • 大模型应用业务架构
  • 大模型应用技术架构
  • 代码示例:向 GPT-3.5 灌入新知识
  • 提示工程的意义和核心思想
  • Prompt 典型构成
  • 指令调优方法论
  • 思维链和思维树
  • Prompt 攻击和防范
第二阶段(30天):高阶应用

该阶段我们正式进入大模型 AI 进阶实战学习,学会构造私有知识库,扩展 AI 的能力。快速开发一个完整的基于 agent 对话机器人。掌握功能最强的大模型开发框架,抓住最新的技术进展,适合 Python 和 JavaScript 程序员。

  • 为什么要做 RAG
  • 搭建一个简单的 ChatPDF
  • 检索的基础概念
  • 什么是向量表示(Embeddings)
  • 向量数据库与向量检索
  • 基于向量检索的 RAG
  • 搭建 RAG 系统的扩展知识
  • 混合检索与 RAG-Fusion 简介
  • 向量模型本地部署
第三阶段(30天):模型训练

恭喜你,如果学到这里,你基本可以找到一份大模型 AI相关的工作,自己也能训练 GPT 了!通过微调,训练自己的垂直大模型,能独立训练开源多模态大模型,掌握更多技术方案。

到此为止,大概2个月的时间。你已经成为了一名“AI小子”。那么你还想往下探索吗?

  • 为什么要做 RAG
  • 什么是模型
  • 什么是模型训练
  • 求解器 & 损失函数简介
  • 小实验2:手写一个简单的神经网络并训练它
  • 什么是训练/预训练/微调/轻量化微调
  • Transformer结构简介
  • 轻量化微调
  • 实验数据集的构建
第四阶段(20天):商业闭环

对全球大模型从性能、吞吐量、成本等方面有一定的认知,可以在云端和本地等多种环境下部署大模型,找到适合自己的项目/创业方向,做一名被 AI 武装的产品经理。

  • 硬件选型
  • 带你了解全球大模型
  • 使用国产大模型服务
  • 搭建 OpenAI 代理
  • 热身:基于阿里云 PAI 部署 Stable Diffusion
  • 在本地计算机运行大模型
  • 大模型的私有化部署
  • 基于 vLLM 部署大模型
  • 案例:如何优雅地在阿里云私有部署开源大模型
  • 部署一套开源 LLM 项目
  • 内容安全
  • 互联网信息服务算法备案

学习是一个过程,只要学习就会有挑战。天道酬勤,你越努力,就会成为越优秀的自己。

如果你能在15天内完成所有的任务,那你堪称天才。然而,如果你能完成 60-70% 的内容,你就已经开始具备成为一名大模型 AI 的正确特征了。

这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/18 8:28:44

CentOS图形化操作界面:理论解析与实践指南

目录 一、技术架构 二、配置原理 1. 桌面环境安装流程 2. 显示参数动态调整 3. 多用户会话管理 三、性能优化 1. 轻量化改造策略 2. 图形加速配置 3. 远程图形访问优化 四、故障诊断 1. 图形界面启动失败 2. 显示异常 3. 性能瓶颈 五、理论延伸 结语 作为企业级Linux发行…

作者头像 李华
网站建设 2026/4/18 8:18:59

java+vue基于springboot的旅游分享点评网系统

目录系统概述技术栈核心功能创新点应用场景部署与扩展开发技术源码文档获取/同行可拿货,招校园代理 :文章底部获取博主联系方式!系统概述 基于SpringBoot和Vue的旅游分享点评网系统是一个结合前后端分离架构的Web应用,旨在为用户提供旅游景点…

作者头像 李华
网站建设 2026/4/17 9:12:38

个人品牌建设:LinkedIn技术影响力提升技巧

在当今数字化时代,个人品牌已成为软件测试从业者职业发展的核心驱动力。LinkedIn作为全球最大的专业社交平台,不仅是求职的跳板,更是展示技术专长、扩大行业影响力的战略阵地。软件测试领域正经历快速变革——从手动测试向自动化、AI驱动测试…

作者头像 李华
网站建设 2026/4/17 18:37:02

在Spring Boot中处理POST请求的四种常见方式

package com.example.controller;import org.springframework.web.bind.annotation.*; import java.util.List;// 定义一个用户实体类 class User {private String name;private int age;private String email;// Getter 和 Setter 方法public String getName() { return name;…

作者头像 李华
网站建设 2026/4/18 6:29:50

‌经济波动下的副业安全网:测试技能多元化应用

经济波动中的测试从业者挑战与机遇‌在2026年的全球经济环境中,科技行业正经历显著波动——根据国际货币基金组织数据,软件行业增长率已从2025年的8%放缓至5%,导致裁员潮和项目不确定性。作为软件测试从业者,我们常被视为“成本中…

作者头像 李华
网站建设 2026/4/13 14:09:16

春节运维不慌!Deepoc具身模型外拓板破解人力短缺,让机器自主顶岗

春节临近,商场客流爆棚、物流订单激增、园区安防压力陡增,各行各业都陷入“人力短缺”的运营困境——迎宾接待忙不过来、物流分拣效率告急、安防巡检难以全覆盖,传统依赖人工的运营模式在节假日高峰面前频频“掉链”。而Deepoc具身模型外拓板…

作者头像 李华