1. 背景
1.1 MCP
模型上下文协议(Model Context Protocol,简称MCP)是一个由Anthropic在2024年11月25日开源的新标准。MCP为AI模型连接不同数据源和工具提供了标准化方式,MCP通过统一的数据交互规范,让LLM能够像“即插即用”一样快速对接表格、数据库、API、外部工具等多样化资源。
1.2 云原生数据库PolarDB
PolarDB是阿里巴巴自研的新一代云原生数据库,在计算存储分离架构下,利用软硬件结合的优势,为用户提供具备极致弹性、高性能、海量存储、安全可靠的数据库服务。PolarDB MySQL版100%兼容原生MySQL的多个版本,包括MySQL 5.6、MySQL 5.7和MySQL 8.0。
PolarDB MySQL版推出的列存索引(In-Memory Column Index,简称IMCI)面向OLAP场景大数据量复杂查询。通过列存索引,PolarDB MySQL版实现了一体化的实时事务处理和实时数据分析的能力,成为一站式HTAP数据库产品解决方案。通过一套数据库系统,即可满足业务的OLTP及OLAP需求。PolarDB MySQL的AI节点内置各种AI大模型和机器学习组件,无需手动将PolarDB中的数据同步至其他AI平台,便可直接通过SQL语句调用内置的AI大模型来完成复杂的分析任务。
2. PolarDB MySQL MCP
2.1 环境准备
VScode IDE+Cline插件
下载VSCode,并安装Cline插件,在百炼中申请千问API;
Cline中配置LLM(qwen-max-latest)。
2.2 PolarDB MySQL MCP Server安装
具体安装参考:🔗 链接
Cline安装好MCP Server的效果:
MCP Server提供的功能
- tools
- execute_sql:执行符合PolarDB MySQL语法的SQL语句
- polar4ai_update_index_for_text_2_sql:利用PolarDB的AI节点,对当前库的表建索引,用于文本转SQL或者文本转chart;
- polar4ai_text_2_sql:利用PolarDB的AI节点,将用户的文本转换成SQL语句;
- polar4ai_text_2_chart:利用PolarDB的AI节点,将用户的文本统计需求直接转换成图表;
- polar4ai_create_models:使用polar4ai语法,创建各种自定义算法模型;
- polar4ai_import_doc:利用PolarDB的AI节点,将用户本地目录的文档导入到PolarDB中形成知识库;
- polar4ai_search_doc:利用PolarDB的AI节点,从PolarDB中的知识库中搜索用户问题并返回答案。
- resources
- polardb-mysql://tables:列出当前数据库所有表信息;
- polardb-mysql://models:列出当前已经创建的模型算法;
- polardb-mysql://{table}/field:列出具体表的字段信息;
- polardb-mysql://{table}/data:列出具体表的数据(默认读取50行)。
3. RAG
3.1 大模型幻觉
如下图所示,直接向LLM咨询:“介绍下PolarDB代理的全局一致性”,回答的结果完全是自己瞎编造的,将各种DB的通用特性瞎编在一起,对于不太熟悉PolarDB代理的同学,有明显的误导作用。
3.2 RAG是什么
RAG(Retrieval-Augmented Generation,检索增强生成)是一种结合信息检索技术与大语言模型(LLM)生成能力的技术框架,其核心思想是通过从外部知识库中检索相关信息,并将这些信息作为提示(Prompt)输入给LLM,从而提升模型回答的准确性、可控性和时效性,对于解决上述大模型幻觉有明显效果。
▶︎ 为何选择RAG而非直接微调
解决模型幻觉问题:RAG通过引入外部知识库的实时检索结果,为LLM提供事实依据,减少模型因知识缺失或过时而产生的“一本正经胡说八道”现象而微调仅能固化训练数据中的知识,无法动态更新,对幻觉问题的缓解有限。
实时性与时效性:RAG的知识库可动态更新(例如接入最新财报、政策文件),使LLM能应对时效性问题(如回答“2025年春运数据”)。相比之下,微调需要重新训练模型才能更新知识,成本高且耗时。
数据安全与隐私保护:企业可通过RAG将私有数据存储在本地知识库中,仅通过检索传递必要信息给LLM,避免将敏感数据上传至第三方模型进行微调,从而降低数据泄露风险。
成本与灵活性:微调需要大量计算资源和标注数据,且模型参数固定后难以适应新领域。RAG无需修改模型参数,仅需更新知识库即可快速适配新场景(如切换医疗、金融领域),显著降低维护成本。
可解释性与可控性:RAG的检索结果可作为生成答案的参考来源,增强输出的可追溯性;而微调后的模型决策过程难以透明化。
▶︎ RAG的核心流程
索引构建:将知识库中的文本分块(Chunking),通过嵌入模型(Embeddings)将文本转化为向量并存入向量数据库;
检索:用户提问时,将查询内容向量化后,在向量数据库中检索最相关的Top-K结果;
生成:将检索到的上下文与用户问题组合成Prompt,输入LLM生成最终答案。
▶︎ 本文的MCP Server在RAG流程中能扮演的角色
知识库建立:MCP Server提供了有如下能力的接口(Tool):读取本地文件、然后进行文本分块和向量化,最后存储到向量数据库中;
知识检索:MCP Server提供了向量数据库的检索接口(Tool),以便LLM回答问题前,先检索到相关的知识作为上下文Prompt,避免大模型幻觉产生。
4. 知识问答系统搭建和效果演示
4.1 演示
本演示讲述的通过PolarDB MySQL MCP Server来实现实时分析能力知识问答系统(RAG应用),通过在vscode的cline插件(其他客户端cursor等类似)描述一句话,即可以将本地的一个目录下所有的知识文件导入到PolarDB中,然后就可以进行知识问答,具体如下:
▶︎ 知识库建立
问题:将目录/Users/XXXXX/code/mcp/test/proxy中的文件导入到PolarDB中,形成知识库;
结果:成功将文件导入到知识库中,并告知导入了13个文件和163个条目。
▶︎ 知识问答
有MCP Server和知识库时(知识库的内容为PolarDB的代理介绍)
- 问题:介绍下PolarDB代理的全局一致性原理
- 结果:把PolarDB的全局一致性功能都给列出来了,相比于直接让模型回答,明显解决了大模型幻觉的问题。
4.2 问答系统原理说明
▶︎ 组件说明
PolarDB MySQL实例
- AI节点:PolarDB for AI是PolarDB MySQL版的分布式机器学习组件,内置多种AI大模型。您无需手动将PolarDB中的数据同步至其他AI平台,便可直接通过SQL语句调用内置的AI大模型来完成复杂的分析任务。此外,PolarDB for AI还支持通过SQL语句来构建自定义模型和加载外部模型,本文主要使用了AI节点的文本向量化能力;
- IMCI节点:PolarDB MySQL的列存节点,本文主要使用了列存节点的向量存储和检索召回功能。
PolarDB MCP Server 提供了下面两个tools
- import_doc:读取本地目录的所有文件,然后进行文本切片分割,并通过PolarDB AI节点进行向量化,最后存储到PolarDB的IMCI节点中的向量数据库中;
- search_doc:将需要搜索文本向量化,最后通过IMCI节点的向量数据库查询匹配到合适的条目。
▶︎ 具体的流程
知识库建立
检索召回
5. 总结
从上述案例可见,无论是PolarDB MySQL兼容MySQL语法的SQL执行功能,还是其特有的OLAP分析与AI能力,通过MCP协议向LLM开放接口后,显著降低了用户使用门槛,更为未来基于DB-Agent的智能体开发奠定了技术基础。
6. 附:PolarDB MCP获取/部署
Github仓库🔗链接
阿里云百炼
作者:峯华