轻松搭建AI知识问答系统,阿里云PolarDB MCP深度实践

简介: 无论是PolarDB MySQL兼容MySQL语法的SQL执行功能,还是其特有的OLAP分析与AI能力,通过MCP协议向LLM开放接口后,显著降低了用户使用门槛,更为未来基于DB-Agent的智能体开发奠定了技术基础

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;

image.png

Cline中配置LLM(qwen-max-latest)。

image.png

2.2 PolarDB MySQL MCP Server安装

具体安装参考:🔗 链接


Cline安装好MCP Server的效果:

image.png


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代理的同学,有明显的误导作用。

image.png

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个条目。

image.png


▶︎ 知识问答

有MCP Server和知识库时(知识库的内容为PolarDB的代理介绍)

  • 问题:介绍下PolarDB代理的全局一致性原理
  • 结果:把PolarDB的全局一致性功能都给列出来了,相比于直接让模型回答,明显解决了大模型幻觉的问题。

image.png

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节点的向量数据库查询匹配到合适的条目。

▶︎ 具体的流程

知识库建立

image.png

检索召回

image.png

5. 总结

从上述案例可见,无论是PolarDB MySQL兼容MySQL语法的SQL执行功能,还是其特有的OLAP分析与AI能力,通过MCP协议向LLM开放接口后,显著降低了用户使用门槛,更为未来基于DB-Agent的智能体开发奠定了技术基础。


6. 附:PolarDB MCP获取/部署

Github仓库🔗链接


阿里云百炼

  • PolarDB for MySQL  🔗链接
  • PolarDB for PostgreSQL 🔗链接

作者:峯华

作者介绍
目录

相关产品

  • 云原生数据库 PolarDB