但在真实的工程实践中,用户的问题往往不是一两个片段就能回答的。例如:“对比A公司和B公司过去三年的研发投入,并总结其战略重心差异。”这种任务需要多步推理、多次检索以及跨源数据的整合。传统的“检索 -> 生成”线性流程在这里会彻底失效。
本篇我们将进入【架构进化篇】,探讨如何通过引入“代理(Agent)”和“逻辑图谱”,让 RAG 系统进化为具备自主思考能力的智能体系统。
策略 9:代理式 RAG(Agentic RAG)
核心逻辑:不再硬编码检索流程,而是给 LLM 提供一组“工具(Tools)”,让它根据问题自主决定:是搜索向量库、查询 SQL 数据库,还是直接调取全文。
解决的问题:并非所有问题都适合向量检索。有些问题需要精准的数值(SQL),有些需要全局背景(Full Doc)。Agent 能像人类专家一样,根据任务性质动态切换策略。
核心代码实现:
from pydantic_ai import Agent# 定义一个具备多种检索工具的 Agentagent = Agent( 'openai:gpt-4o', system_prompt='你是一个全能 RAG 助手。根据用户提问,自主选择最合适的工具。')@agent.toolasync def search_knowledge_base(query: str, limit: int = 5) -> str: """针对具体事实进行语义搜索(向量检索)""" query_embedding = await embedder.embed_query(query) results = await db.match_chunks(query_embedding, limit) return format_results(results)@agent.toolasync def retrieve_full_policy(document_title: str) -> str: """当需要查看完整政策或合同条款时,调取全文""" result = await db.query( "SELECT content FROM docs WHERE title ILIKE %s", f"%{document_title}%" ) return result['content']@agent.toolasync def query_financial_data(sql_question: str) -> str: """针对数值、统计类问题,生成并执行 SQL 查询""" return await execute_safe_sql(sql_question)# 运行逻辑:# 用户问:“去年硬件部的研发支出是多少?对比下公司的退款政策。”# Agent 行为:# 1. 调用 query_financial_data 获取数值。# 2. 调用 retrieve_full_policy 获取完整政策。# 3. 整合答案。策略 10:自反思 RAG(Self-Reflective RAG)
核心逻辑:在生成答案之前,增加一个“自我评估”环节。如果检索到的内容质量不高,Agent 会自动修改查询语句重新搜索,直到满意为止。
解决的问题:初次检索往往会因为关键词不匹配而失败。自反思机制让系统具备了“重考”的能力,避免直接把错误或无关的信息喂给用户。
核心代码实现:
async def search_with_self_reflection(query: str, max_iterations: int = 2): """具备自我修正能力的搜索循环""" for i in range(max_iterations): # 1. 执行检索 results = await vector_search(query) # 2. 评分环节:让 LLM 充当裁判 grade_prompt = f"提问: {query}\n检索结果: {results}\n请给结果相关性打分 (1-5)。只返回数字。" score = int(await llm_call(grade_prompt)) # 3. 如果分数及格,直接返回 if score >= 4: return results # 4. 如果分数不及格,利用 LLM 反思为什么没搜到,并改写查询语句 refine_prompt = f"原查询 '{query}' 结果不佳。请根据已有噪音,提供一个更精准的搜索词。" query = await llm_call(refine_prompt) return results # 尽力而为后的最终结果策略 11:知识图谱(GraphRAG)
核心逻辑:将非结构化文本转化为“实体-关系-实体”的图结构。检索时结合向量相似度与图路径遍历。
解决的问题:向量检索擅长“长得像”,但看不出“逻辑关联”。例如,“张三丰是武当派的CEO”与“武当派的总部在武当山”,向量检索很难直接推导出“张三丰在武当山工作”。知识图谱能精准捕获这种显式关联。
核心代码思路:
from graphiti_core import Graphiti# 初始化图谱(连接 Neo4j 数据库)graph = Graphiti("neo4j://localhost:7687", "neo4j", "password")async def search_hybrid_graph(query: str): """混合搜索:语义相似度 + 关键词 + 图路径遍历""" # Graphiti 会自动提取实体并进行多跳查询 results = await graph.search(query=query, num_results=5) # 格式化输出:不仅有文本,还有实体间的关联路径 formatted_data = [] for res in results: formatted_data.append( f"实体: {res.node.name} ({res.node.type})\n" f"关联关系: {res.relationships}" ) return "\n---\n".join(formatted_data)学AI大模型的正确顺序,千万不要搞错了
🤔2026年AI风口已来!各行各业的AI渗透肉眼可见,超多公司要么转型做AI相关产品,要么高薪挖AI技术人才,机遇直接摆在眼前!
有往AI方向发展,或者本身有后端编程基础的朋友,直接冲AI大模型应用开发转岗超合适!
就算暂时不打算转岗,了解大模型、RAG、Prompt、Agent这些热门概念,能上手做简单项目,也绝对是求职加分王🔋
📝给大家整理了超全最新的AI大模型应用开发学习清单和资料,手把手帮你快速入门!👇👇
学习路线:
✅大模型基础认知—大模型核心原理、发展历程、主流模型(GPT、文心一言等)特点解析
✅核心技术模块—RAG检索增强生成、Prompt工程实战、Agent智能体开发逻辑
✅开发基础能力—Python进阶、API接口调用、大模型开发框架(LangChain等)实操
✅应用场景开发—智能问答系统、企业知识库、AIGC内容生成工具、行业定制化大模型应用
✅项目落地流程—需求拆解、技术选型、模型调优、测试上线、运维迭代
✅面试求职冲刺—岗位JD解析、简历AI项目包装、高频面试题汇总、模拟面经
以上6大模块,看似清晰好上手,实则每个部分都有扎实的核心内容需要吃透!
我把大模型的学习全流程已经整理📚好了!抓住AI时代风口,轻松解锁职业新可能,希望大家都能把握机遇,实现薪资/职业跃迁~