东莞网站建设培训wordpress 分享后下载地址
2026/2/7 7:31:36 网站建设 项目流程
东莞网站建设培训,wordpress 分享后下载地址,河间网站建,宁波seo快速优化平台本文详细介绍了如何使用MCP架构从零实现Agentic RAG系统。文章分析了MCP与RAG的融合思路#xff0c;设计了Client/Server架构#xff0c;服务端使用LlamaIndex实现RAG管道与缓存机制#xff0c;客户端基于LangGraph构建Agent处理任务规划。系统支持文档索引创建、事实查询、…本文详细介绍了如何使用MCP架构从零实现Agentic RAG系统。文章分析了MCP与RAG的融合思路设计了Client/Server架构服务端使用LlamaIndex实现RAG管道与缓存机制客户端基于LangGraph构建Agent处理任务规划。系统支持文档索引创建、事实查询、摘要生成等功能通过端到端演示展示了系统效果。这种模块化设计提高了系统灵活性、可维护性和技术选型的自由度为构建企业级RAG应用提供了新思路。1、思考MCP与Agentic RAG的融合RAG是一种借助外部知识来给LLM提供上下文的AI应用范式。从这个角度来说RAG与MCP有着相似的意义给大模型补充上下文以增强其能力。只是MCP以提供外部工具为主而RAG则是以注入参考知识为主。这就像一个考试的学生MCP给你提供计算器而RAG则是给你一本书。当然两者的重点并不一样MCP强调的是提供工具的方式集成标准而RAG则是需要你实现的完整应用。所以两者并不冲突完全可以用MCP的方法来集成一个RAG应用。特别是在Agentic RAG系统如下图中由于通常涉及到多个RAG查询管道与Agent的融合这就与MCP的思想非常契合假设一个典型的Agentic RAG应用一个针对大量不同文档的问答Agent这些问答有事实性问题也有摘要性问题更有跨越多个文档的融合问题甚至需要搜索引擎来补充信息。现在我们来用MCP的标准设计并完整的实现这个场景。2、MCP标准下的Agentic RAG架构在MCP架构下无论是SSE还是stdio模式都是Client/Server模式。你必须在开始之前清晰的设计好MCP Server与Client应用的分工及交互。比如服务端提供的工具包括功能边界、输入输出服务功能粒度不能太大丧失模块化也不能太小复杂化缓存与持久化设计毕竟RAG是数据密集型应用客户端Agent设计模型、工作流、与服务端的交互等如果是多用户环境要考虑只是文档与索引的隔离【总体思想】我们基于如下的总体架构来实现在MCP Server上提供RAG管道构建与查询的工具在客户端创建使用这些工具的AI Agent提供查询任务规划与执行能力MCP Server借助LlamaIndex实现RAG管道在客户端借助LangGraph实现Agent让每个‘人’干更擅长的事。3、MCP ServerRAG管道的核心MCP Server是RAG功能实现的位置。我们对MCP Server拆解设计如下【工具Tools】create_vector_index输入文档、索引名与参数完成解析与索引创建。query_document查询事实问题的RAG管道输入索引名与查询问题。get_document_summary查询总结性问题的RAG管道输入文件和查询问题。list_indies等辅助工具包括一个自己实现的Web搜索工具。需要说明在这里的设计中不同的RAG管道查询的工具是一样的但参数索引名依赖于Agent推理不同。一个是推理工具一个推理参数效果一致。【缓存机制】服务端要对文档解析含分割与索引创建的信息进行缓存持久化存储以防止可能的重复解析与索引创建提高性能。文档节点缓存缓存文档解析分拆后的结果确保文档解析过一次后只要内容与参数如chunk_size不变就不会被重新解析。文档缓存的唯一名称是文档内容hash值解析参数的联合。比如“questions.csv_f4056ac836fc06bb5f96ed233d9e2b63_500_50”索引信息缓存缓存已经创建过的索引信息防止重复嵌入及向量库访问避免不必要的模型调用成本。索引缓存的唯一名称是每个文档关联的唯一索引名称。比如“questions_for_customerservice”以下情况下会导致索引被重建客户端强制要求重建索引信息缓存不存在文档节点缓存不存在这样的缓存管理方式可以增加处理的灵活性与健壮性。如更改文档内容或解析参数即时文档名与索引名不变仍然会触发索引重建。文档内容与参数不变但修改索引名会创建新索引但不会重新解析文档。【工具实现create_vector_index】这是服务端两个重要工具之一核心代码如下请参考注释理解..... app.tool()asyncdefcreate_vector_index(ctx: Context, file_path: str, index_name: str, chunk_size: int500, chunk_overlap: int50, force_recreate: boolFalse)-str:创建或加载文档向量索引使用缓存的节点 Args: ctx: 上下文对象 file_path: 文档文件路径 index_name: 索引名称 chunk_size: 文本块大小 chunk_overlap: 文本块重叠大小 force_recreate: 是否强制重新创建索引 Returns: 操作结果描述#用来判断索引是否存在storage_pathf{storage_dir}/{index_name}try:# 获取Chroma客户端chromactx.request_context.lifespan_context.chroma# 获取节点缓存路径文档内容hash_chunksize_chunovlerlapcache_pathget_cache_path(file_path, chunk_size, chunk_overlap)# 确定是否需要重建索引强制 or 索引不存在 or 文档有变need_recreate(force_recreate or not os.path.exists(storage_path)or not os.path.exists(cache_path))ifos.path.exists(storage_path)andnot need_recreate: returnf索引 {index_name} 已存在且参数未变化无需创建# 如果需要重新创建首先尝试删除现有的索引向量库try: chroma.delete_collection(nameindex_name)except Exception as e: logger.warning(f删除集合时出错 (可能是首次创建): {e})# 创建新的向量库collectionchroma.get_or_create_collection(nameindex_name)vector_storeChromaVectorStore(chroma_collectioncollection)# 加载与拆分文档nodesawait load_and_split_document(ctx, file_path, chunk_size, chunk_overlap)logger.info(f加载了 {len(nodes)} 个节点)# 创建向量索引storage_contextStorageContext.from_defaults(vector_storevector_store)vector_indexVectorStoreIndex(nodes,storage_contextstorage_context,embed_modelembedded_model)# 缓存索引信息这样下次不会重建vector_index.storage_context.persist(persist_dirstorage_path)returnf成功创建索引: {index_name}, 包含 {len(nodes)} 个节点except Exception as e:......【工具实现query_document】这是客户端调用的主要工具。其输入是索引名与查询问题。借助索引缓存可以快速加载并执行RAG查询。这里不再展示完整处理过程app.tool()async def query_document(ctx: Context, index_name: str, query: str, similarity_top_k: int5)-str:从文档中查询事实性信息用于回答具体的细节问题 Args: ctx: 上下文对象 index_name: 索引名称 query: 查询文本 similarity_top_k: 返回的相似节点数量 Returns: 查询结果......按类似方法再创建一个用于回答总结性问题的工具利用LlamaIndex的SummaryIndex类型索引此处不在赘述。4、MCP客户端实现Agent基于LangGraph客户端的工作流程如下客户端的几个设计重点简单说明如下【配置文件】客户端有两个重要的配置信息分别用于MCP Server与知识文档的配置。mcp_config.json:配置MCP Servers的信息支持多Server连接、工具加载与过滤这是一个在langgraph-mcp-adapers基础上扩展的版本。比如{ servers: { rag_server: { transport: sse, url: http://localhost:5050/sse, allowed_tools: [load_and_split_document, create_vector_index, get_document_summary, query_document] }, ...其他server... }doc_config.json:配置需要索引和查询的全部文档信息。这些信息还会在查询时被注入Agent提示词用来推理工具的使用参数{ data/c-rag.pdf: { description: c-rag技术论文可以回答c-rag有关问题, index_name: c-rag, chunk_size: 500, chunk_overlap: 50 }, data/questions.csv: { description: 税务问题数据集包含常见税务咨询问题和答案, index_name: tax-questions, chunk_size: 500, chunk_overlap: 50 }, ....其他需要索引和查询的文档..... }【主程序】客户端主程序流程非常简单基于一个封装的MCP客户端与AgenticRAG类型...... client MultiServerMCPClient.from_config(mcp_config.json) asyncwith client as mcp_client: logger.info(f已连接到MCP服务器: {, .join(mcp_client.get_connected_servers())}) # 创建智能体 rag AgenticRAGLangGraph(clientmcp_client, doc_configdoc_config) # 创建向量索引自动排重 await rag.process_files() # 构建智能体 await rag.build_agent() # 交互式对话 await rag.chat_repl()【创建智能体build_agent)】注意到这里的关键步骤是build_agent会借助LangGraph预置的create_react_agent快速创建Agent。如果你需要精细化的控制也可以自定义Graph...... async def build_agent(self) - None: # 获取服务端提供的工具列表 mcp_tools await self.client.get_tools_for_langgraph() ...略配置文件生成doc_info.... # 使用LangGraph创建ReAct智能体 self.agent create_react_agent( modelllm, toolsmcp_tools, promptSYSTEM_PROMPT.format( doc_info_strdoc_info_str, current_timedatetime.now().strftime(%Y-%m-%d %H:%M:%S)), ) logger.info( 智能体构建完成 )5、端到端效果演示现在让我们来测试下这个的“MCP化”的Agentic RAG应用的运行效果。按照如下步骤来进行启动MCP RAG-Server。这里用更复杂的SSE模式暂时未支持文档上传所以只能本机启动启动时会自动提取并展示服务端的工具清单。准备客户端知识文档与配置文件。将需要索引和查询的文档放在应用的data/目录配置好mcp_config与doc_config。不做任何其他处理。直接启动客户端应用python rag_agent_langgraph.py* 观察首次运行的跟踪信息如下图这里的过程是连接RAG-Server与初始化调用服务端工具创建向量索引。由于是首次访问服务端没有索引缓存所以会逐个对文件解析与创建向量索引最后会加载Server端工具创建LangGraph的Agent* 现在退出程序再次启动客户端观察输出如下图可以看到由于索引已经创建所以会显示“无需创建”。交互式测试进入交互式测试环节图中的服务端信息是通过MCP接口推送到客户端的远程日志方便观察服务端的工作状态关联两个文档信息的查询由于提供的文档有北京和上海的城市信息介绍所以看到这个问题调用了北京和上海的RAG管道查询还自作主张的调用了搜索引擎做补充然后输出答案查询知识库答案并要求和网络搜索结果核对。日志显示Agent先用本地向量索引查询然后通过搜索引擎对比非常准确。总结性问题测试。日志显示这里未加载向量索引而是由工具加载这个文档的节点并生成文档摘要后返回SummaryIndex的效率不太高有待优化最后一个很有意思的测试。由于我们把创建索引的过程“工具”化了所以甚至可以用自然语言来管理索引。比如这里我要求把csv文档的索引重建智能体准确的推理出工具及参数并重建了csv文档索引实际应用要考虑安全性以上展示了一个基于MCP架构的Agentic RAG系统的实现。总结这种架构下的一些明显的变化MCP要求对整个系统做模块化与松耦合的重新设计这会带来一系列工程上的好处。比如分工与效率提升、可维护性、独立扩展、部署更灵活等。MCP不依赖于某个技术堆栈。因此技术选择上更灵活比如服务端用LlamaIndex框架而客户端则用LangGraph甚至可以用不同的语言。MCP实现了基于标准的模块间互操作。这有助于资源共享减少重复开发比如其他人可以基于你的RAG Server构建Agent而无需了解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%免费】

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询