MCP 实践:基于 MCP 架构实现知识库系统 原创

发布于 2025-4-30 06:57
浏览
0收藏

MCP 实践:基于 MCP 架构实现知识库系统-AI.x社区

本文通过一个实际案例展示如何基于 MCP(Model Context Protocol)开发一个支持私有知识库的 AI Agent 问答系统。

MCP 实践:基于 MCP 架构实现知识库系统-AI.x社区

1、AI Agent 问答系统整体流程

AI Agent 问答知识库系统整体由构建与检索流程组成。

MCP 实践:基于 MCP 架构实现知识库系统-AI.x社区

第一、知识库构建流程

1、文本切分

对输入的文本进行切分,确保切分后的文本段在保持完整性和语义连贯性的同时,便于后续处理和检索。

2、FAQ 提取

从文本中提取常见问题及其答案(FAQ),作为知识库的一部分,以增强检索的准确性和效率。

3、知识库导入

将切分后的文本段和提取的 FAQ 导入知识库,并进行 Embedding 处理,以便将文本转换为向量形式,便于检索。

第二、知识检索(RAG)流程

1、问题拆解

对用户提出的问题进行拆解,将其分解为更小、更具体的子问题,以提高检索的精确度。

2、检索策略

对每个子问题分别进行检索,包括:

对文本段进行向量检索,以找到最相关的文本内容。

对 FAQ 进行全文和向量混合检索,以确保检索结果的全面性和准确性。

3、内容筛选

对检索结果进行筛选,选择与子问题最相关的内容,作为生成回答的参考。

第三、优化策略

与传统的 Naive RAG 相比,本流程在知识库构建和检索阶段进行了以下优化:

1、Chunk 切分优化

改进文本切分方法,以更好地保持文本的完整性和语义连贯性。

2、FAQ 提取

自动从文本中提取 FAQ,丰富知识库内容,提高检索效果。

3、Query Rewrite

对用户问题进行重写,使其更易于检索。

4、混合检索

结合全文和向量检索方法,提高检索的准确性和效率。

通过这些优化,我们的知识库构建和检索流程能够更有效地处理和响应用户查询,提供更准确、更全面的答案。

2、基于 MCP 的 AI Agent 知识库架构设计

基于 MCP 的 AI Agent 知识库架构设计主要分为三个核心部分:知识库、MCP Server 以及功能实现模块。每个部分在系统中扮演着不同的角色,共同协作以实现高效的知识管理和检索功能。

MCP 实践:基于 MCP 架构实现知识库系统-AI.x社区

第一、知识库模块

知识库是系统的数据存储中心,包含两个主要的存储组件:

  • Knowledge Store:用于存储和管理文本内容。它支持向量检索和全文检索,以确保快速且准确的信息检索。
  • FAQ Store:专门用于存储常见问题及其答案(FAQ)。同样支持混合检索方式,以提高检索效率和准确性。

第二、MCP Server 模块

MCP Server 作为系统的操作核心,负责对 Knowledge Store 和 FAQ Store 进行读写操作。它提供了四个主要的工具(Tools),用于支持不同的操作需求:

  • storeKnowledge:用于将新的文本内容导入 Knowledge Store。
  • searchKnowledge:用于在 Knowledge Store 中检索文本内容。
  • storeFAQ:用于将新的 FAQ 导入 FAQ Store。
  • searchFAQ:用于在 FAQ Store 中检索 FAQ。

第三、功能实现部分模块

这一部分完全依赖于 Prompt 和 LLM(大语言模型)来实现对知识库的操作,包括:

  • 文档导入:通过 LLM 处理,将文档内容导入 Knowledge Store。
  • 检索:利用 LLM 的能力,对 Knowledge Store 或 FAQ Store 进行内容检索。
  • 问答:通过 LLM 解析用户问题,并在知识库中检索相关信息以生成答案。

这种设计使得系统能够灵活地处理各种知识管理和检索任务,同时保持高效的性能和准确性。

3、基于 MCP 的 AI Agent 知识库架构实现

第一、开源代码概览

阿里的这个项目代码已全部开源,主要分为两个部分:

Github 地址:

​https://github.com/aliyun/alibabacloud-tablestore-mcp-server​

MCP 实践:基于 MCP 架构实现知识库系统-AI.x社区

  • 客户端(Client):使用 Python 编写,负责与大语言模型(LLM)进行交互。它通过 MCP 客户端获取所需的工具(Tools),并根据 LLM 的反馈来调用这些工具。客户端利用精心设计的提示(Prompt)实现了三个核心功能:知识库构建、检索和问答。
  • 服务器端(Server):使用 Java 编写,基于 Spring AI 框架实现 MCP 服务器。由于底层存储采用的是 Tablestore,因此主体框架是基于相关文章的代码进行改造。

第二、知识库存储

我们选择 Tablestore 作为知识库的存储解决方案,原因如下:

  • 简单易用:只需创建一个实例即可开始使用,采用 Serverless 模式,无需管理容量和后续运维。
  • 低成本:完全按量计费,自动根据存储规模水平扩展,最大可扩展至PB级。虽然采用本地知识库可以实现零成本,但我们实现的是一个企业级、可通过云共享的知识库。
  • 功能完备:支持全文、向量和标量等检索功能,支持混合检索。

第三、MCP 服务器

MCP服务器实现了四个工具(Tools),具体注册代码可参考 TablestoreMcp,相关描述如下:


MCP 实践:基于 MCP 架构实现知识库系统-AI.x社区

第四、知识库构建

1.对文本进行切段并提取 FAQ


MCP 实践:基于 MCP 架构实现知识库系统-AI.x社区


MCP 实践:基于 MCP 架构实现知识库系统-AI.x社区

以上完全通过提示词来完成,可根据自己的要求进行调优。这种方式的优势是切段的文本能保证完整性以及语义一致性,能够比较灵活的对格式做一些处理。提取的 FAQ 很全面,对于简单问题的问答通过直接搜索 FAQ 是最准确直接的。最大的缺点就是执行比较慢并且成本较高,一次会消耗大量的 Token,不过好在是一次性的投入。

2.写入知识库和 FAQ 库


MCP 实践:基于 MCP 架构实现知识库系统-AI.x社区

这一步也是通过提示词来完成,基于 MCP 架构可以非常简单的实现。

3.知识库检索


MCP 实践:基于 MCP 架构实现知识库系统-AI.x社区

同样这一步也是通过提示词加 MCP 来实现,非常简便。通过提示词描述实现了一个稍微复杂点的检索:先对问题进行拆解,拆解为更原子的子问题;每个子问题分别检索知识库和 FAQ,检索结果汇总后筛选留下与问题最相关的内容;按照格式返回结果。

4.知识库问答

直接查看提示词和效果。从 MCP 服务器的日志中可以看到自动调用了知识库和 FAQ 的检索工具,并能根据之前导入的内容进行回答。


MCP 实践:基于 MCP 架构实现知识库系统-AI.x社区

通过这种方式,我们实现了一个高效、灵活且功能完备的知识库系统。


本文转载自公众号玄姐聊AGI  作者:玄姐

原文链接:​​https://mp.weixin.qq.com/s/n56zgMe3FtH3pOW9k4vp2w​


©著作权归作者所有,如需转载,请注明出处,否则将追究法律责任
已于2025-4-30 06:57:38修改
收藏
回复
举报
回复
相关推荐