
MCP 实践:基于 MCP 架构实现知识库系统 原创
本文通过一个实际案例展示如何基于 MCP(Model Context Protocol)开发一个支持私有知识库的 AI Agent 问答系统。
1、AI Agent 问答系统整体流程
AI Agent 问答知识库系统整体由构建与检索流程组成。
第一、知识库构建流程
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 以及功能实现模块。每个部分在系统中扮演着不同的角色,共同协作以实现高效的知识管理和检索功能。
第一、知识库模块
知识库是系统的数据存储中心,包含两个主要的存储组件:
- 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
- 客户端(Client):使用 Python 编写,负责与大语言模型(LLM)进行交互。它通过 MCP 客户端获取所需的工具(Tools),并根据 LLM 的反馈来调用这些工具。客户端利用精心设计的提示(Prompt)实现了三个核心功能:知识库构建、检索和问答。
- 服务器端(Server):使用 Java 编写,基于 Spring AI 框架实现 MCP 服务器。由于底层存储采用的是 Tablestore,因此主体框架是基于相关文章的代码进行改造。
第二、知识库存储
我们选择 Tablestore 作为知识库的存储解决方案,原因如下:
- 简单易用:只需创建一个实例即可开始使用,采用 Serverless 模式,无需管理容量和后续运维。
- 低成本:完全按量计费,自动根据存储规模水平扩展,最大可扩展至PB级。虽然采用本地知识库可以实现零成本,但我们实现的是一个企业级、可通过云共享的知识库。
- 功能完备:支持全文、向量和标量等检索功能,支持混合检索。
第三、MCP 服务器
MCP服务器实现了四个工具(Tools),具体注册代码可参考 TablestoreMcp,相关描述如下:
第四、知识库构建
1.对文本进行切段并提取 FAQ
以上完全通过提示词来完成,可根据自己的要求进行调优。这种方式的优势是切段的文本能保证完整性以及语义一致性,能够比较灵活的对格式做一些处理。提取的 FAQ 很全面,对于简单问题的问答通过直接搜索 FAQ 是最准确直接的。最大的缺点就是执行比较慢并且成本较高,一次会消耗大量的 Token,不过好在是一次性的投入。
2.写入知识库和 FAQ 库
这一步也是通过提示词来完成,基于 MCP 架构可以非常简单的实现。
3.知识库检索
同样这一步也是通过提示词加 MCP 来实现,非常简便。通过提示词描述实现了一个稍微复杂点的检索:先对问题进行拆解,拆解为更原子的子问题;每个子问题分别检索知识库和 FAQ,检索结果汇总后筛选留下与问题最相关的内容;按照格式返回结果。
4.知识库问答
直接查看提示词和效果。从 MCP 服务器的日志中可以看到自动调用了知识库和 FAQ 的检索工具,并能根据之前导入的内容进行回答。
通过这种方式,我们实现了一个高效、灵活且功能完备的知识库系统。
本文转载自公众号玄姐聊AGI 作者:玄姐
原文链接:https://mp.weixin.qq.com/s/n56zgMe3FtH3pOW9k4vp2w
