Dify + OceanBase + MCP:三剑合璧,轻松构建 RAG 应用

在 AI 应用开发领域,检索增强生成(Retrieval Augmented Generation,RAG)已成为构建智能问答、文档分析等场景的核心技术。通过 RAG,AI 应用能够结合现有知识库,在生成回答时引入外部信息,从而为用户提供更准确、更智能的响应。本文将通过一个实践案例,展示如何使用 Dify、OceanBase 和 MCP,从零开始构建一个功能完备的 RAG 应用。
Dify 是一个开源的 LLM 应用开发平台,它提供了友好的图形化界面,让开发者可以快速编排和部署 AI 应用和工作流。
OceanBase 是由阿里巴巴和蚂蚁集团自主研发的分布式关系型数据库,专为大规模数据处理、高并发访问及金融级可用性场景而设计。它不仅支持传统的结构化数据管理与事务处理,从 4.3.3 版本开始,还原生支持向量数据类型,满足 AI 及语义检索等新兴应用需求。
MCP(Model Context Protocol,模型上下文协议) 是由 Anthropic 公司于 2024 年 11 月推出并开源的开放协议,旨在实现大语言模型(LLM)与外部工具、数据源的高效交互。MCP 通过标准化的接口,让 AI 系统能够实时访问和调用数据库、API 及其他服务,从而打破“数据孤岛”,提升 AI 应用的实时性、可操作性和协作能力。
部署 OceanBase
OceanBase 提供了多种部署方式,例如通过 Docker、Kubernetes、OBD(OceanBase Deployer)和 OceanBase 桌面版等。为了方便实验,本文将使用 OceanBase 桌面版来部署 OceanBase。
注意:OceanBase 桌面版仅适用于学习或测试场景,请不要应用于生产环境。
安装 OceanBase 桌面版,可以参考该文档:https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000002866370
OceanBase 桌面版安装完成后,将看到如下界面:

默认情况下,OceanBase 会创建两个租户 sys
和 test
,我们将在 test
租户下创建 Dify 使用的向量数据库。第一次需要为 test
租户设置密码。

在 数据库管理
页面中,新增一个名为 rag
的数据库。

部署 Dify
在本文中,我们将使用 OceanBase 作为 Dify 的向量数据库,用于存储 RAG 应用所需的知识库内容。与此同时,Dify 还需要一个关系型数据库来存储元数据。目前 Dify 官方仓库(最新版为 v1.5.0)仅支持 PostgreSQL,尚不支持 MySQL。
OceanBase 社区基于 Dify v0.14.2 分支进行了改造,使其支持使用兼容 MySQL 协议的数据库来存储结构化数据,相关代码和文档在 oceanbase-devhub/dify 仓库中。如果你希望同时使用 OceanBase 作为向量数据库和关系型数据库,可以参考该版本进行部署。
此前,OceanBase 社区也曾向 Dify 官方提交支持 MySQL 的 PR(Make Dify compatible with MySQL database:https://github.com/langgenius/dify/pull/8364 ),但该 PR 未被 Dify 社区采纳。为了能够使用 Dify 的最新功能(例如 MCP Server 插件),本文将基于官方最新的 v1.5.0 版本,分别使用 OceanBase 和 PostgreSQL 作为向量数据库和关系型数据库。
启动 Dify 服务器最简单的方式是通过 Docker Compose。首先,克隆 Dify 仓库。进入 Dify 的 docker
目录,复制一份环境变量配置文件。
然后,编辑 .env
文件,将 VECTOR_STORE
设置为 oceanbase
,并填入 OceanBase 的连接信息。
OceanBase 的 IP 地址可以在 OceanBase 桌面版部署所使用的虚拟机中获取。在 macOS 上,OceanBase 桌面版是通过 OrbStack 启动虚拟机进行部署的。你可以在 OrbStack 的 Machines
界面点击 Terminal
按钮进入对应虚拟机,并通过 ip addr
命令查看其 IP 地址。

在输出信息中找到 eth0
网卡的 inet
地址,例如 198.19.249.160
,这就是连接 OceanBase 所需要用到的 IP。
修改完环境变量配置后,执行以下命令启动 Dify 服务。
可选:Dify 的
docker-compose.yaml
文件中其实也包含了 OceanBase 的容器配置。但由于我们已经通过 OceanBase 桌面版完成了部署,因此可以选择将其中的 OceanBase 容器配置注释掉,避免启动一个多余的容器。
服务启动后,浏览器输入 http://localhost
即可访问 Dify 的 Web 界面。第一次登录需要设置用户名和密码。

设置模型供应商
点击右上角的头像,选择设置
进入设置页面。

点击模型供应商
,这里我选择将通义千问作为模型供应商。读者也可以自行选择其他模型供应商。

在 API Key
中填入通义千问的 API Key,然后点击 保存
。

选择默认的系统模型
,这里主要需要设置系统推理模型
和 Embedding 模型
,大家可以根据自己的喜好自行选择。

索引知识库
完成模型设置后,接下来可以开始索引知识库了。回到首页,点击顶端的 知识库
标签页,进入知识库管理界面,点击创建知识库
。

选择导入已有文本
,可以直接拖入文件进行索引。这里我上传了两篇关于大模型推理优化技术 Chunked Prefill 的论文。

然后设置文本的分段规则,这里可以保留默认设置。点击预览块
可以在右侧预览分段后的结果。确认没问题后,点击 保存并处理
。

创建对话应用
点击工作室
标签页,进入应用管理界面,点击创建空白应用
。

选择聊天助手
,并填写应用名称
。输入完成后点击创建
按钮。

添加上一步索引的知识库作为聊天助手的上下文。然后可以在右侧聊天框里进行应用调试,例如询问什么是 Chunked Prefill?
。从输出可以看到,AI 会根据文档内容生成回答,并附上引用的来源片段。

点击文件图标,可以看到具体引用的内容。

确认无误后,点击右上角的发布
按钮。

然后就可以在聊天助手中进行提问了。

将 Dify 应用转换为 MCP Server
Dify 也可以作为一个 MCP Server,使你构建的 AI 应用能够被其他 MCP 客户端(如 Cursor、Windsurf、Cherry Studio 等)调用,从而拓展更多使用场景。mcp-server 插件由 Dify 社区贡献,是一种扩展类型插件。安装后,可将任意 Dify 应用转化为符合 MCP 标准的服务端点,供外部 MCP 客户端直接访问。
在 Dify 的 Marketplace
中选择 MCP server
插件进行安装。

接下来,设置 MCP Server,App
选择上一步发布的聊天助手应用。

按照 MCP 规范,我们需要为工具提供一个清晰的输入模式。对于聊天 Dify 应用,确保在输入模式中包含一个 query
字段,格式如下:
配置完 MCP Server 后,就可以得到一个 MCP Server 的端点,Dify 提供了 SSE 和 Streamable HTTP 两种端点,这里我们选择 /mcp
后缀的 Streamable HTTP 端点。

将端点 URL 复制到 MCP Client,这里我使用 Cherry Studio。

配置完成后,在聊天界面选择配置的 Dify MCP Server。

接着我们尝试询问一个与知识库内容相关的问题。但调用 Dify MCP Server 后并没有得到预期的回答,展开返回结果可以看到仅返回了 <think>
。这是因为我此前选择的推理模型 qwen3-32b
采用了混合思维模式,该模式允许 Qwen3 根据用户需求在“深度思考”和“快速响应”之间灵活切换。看起来是因为模型进入了深度思考模式,导致未能正常返回 Dify MCP Server 的调用结果。

解决方法就是将推理模型切换为没有深度思考模式的模型,例如 qwen-turbo
。

现在再次询问一个与知识库内容相关的问题,就能从 Dify MCP Server 得到预期的回答了。

总结
本文详细介绍如何结合 Dify、OceanBase 和 MCP 从零开始构建一个功能完备的 RAG 应用。教程涵盖了从部署环境、创建知识库、到构建聊天助手并进行调试的全过程。最后,文章还演示了如何将 Dify 应用转化为一个标准的 MCP Server,使其能被外部客户端调用,从而极大地扩展了 AI 应用的集成与协作能力。
参考资料
欢迎关注

版权声明: 本文为 InfoQ 作者【Se7en】的原创文章。
原文链接:【http://xie.infoq.cn/article/0bf313d7f9cc4948af8297335】。文章转载请联系作者。
评论