网页
综合
更新时间 2026-11-13 19:52:27
集成Tablestore构建MCP服务实现向量与标量混合检索-开发者社区-阿里云
自动蜘蛛
developer.aliyun.com
正文约 1683 字
MCP(Model Context Protocol)是一个开放协议,旨在通过标准化API连接大型语言模型(LLM)与外部数据源及工具,让AI应用能够高效处理复杂任务。本项目构建了基于阿里云表格存储(Tablestore)的MCP服务实现,通过其向量、标量、全文检索的混合检索能力,为MCP工具提供高效的数据存储与检索解决方案。本文将系统讲解技术实现、部署流程及应用场景。
这里展示 2 个 tool 的能力,一个是存储工具,一个是搜索工具。 我们使用的软件是热门的开源软件 Cherry-Studio,使用的大模型是通义千问的 qwen-max 模型。
功能:将文本数据连同语义向量嵌入表格存储。
支持向量相似度+关键词/结构化条件的复合查询。Tablestore(表格存储) 的多元索引支持向量、标量、全文检索等各种类型的组合查询,该示例代码中使用了混合检索,如需更复杂的查询,可以参考文章最后的“贡献代码和二次开发”章节了解如何自定义开发。
MCP server 提供的 2 个工具十分简单:
与传统数据库和专用向量数据库相比,Tablestore(表格存储)在MCP场景中展现出显著优势:
我们支持 Java 和 Python 2种语言运行 MCP 服务。
代码需要 python3.10 版本以上进行构建,使用了 uv 进行包和环境管理。
如果本地有 python3.10 版本以上环境,无需执行这一小步。
我们项目至少需要 python3.10 版本,这里使用 python3.12 进行示例。
代码里所有的配置是通过环境变量来实现的,出完整的变量见下方表格。 主要依赖的数据库 表格存储 支持按量付费,使用该工具,表和索引都会自动创建,仅需要在控制台上申请一个实例即可。
TABLESTORE_INSTANCE_NAME
TABLESTORE_ACCESS_KEY_ID
TABLESTORE_ACCESS_KEY_SECRET
TABLESTORE_TABLE_NAME
TABLESTORE_INDEX_NAME
ts_mcp_server_py_index_v1
TABLESTORE_VECTOR_DIMENSION
TABLESTORE_TEXT_FIELD
TABLESTORE_VECTOR_FIELD
EMBEDDING_PROVIDER_TYPE
hugging_face(当前仅支持 hugging_face)
EMBEDDING_MODEL_NAME
BAAI/bge-base-zh-v1.5(维度是768,和 TABLESTORE_VECTOR_DIMENSION 呼应)
TOOL_STORE_DESCRIPTION
TOOL_SEARCH_DESCRIPTION
为了方便,这里不使用云服务的Embedding能力,而使用了内置的本地Embedding模型,示例代码仅支持了 HuggingFace 的本地Embedding模型,使用十分简单,如果网络不好,可以配置 HuggingFace 的镜像。
代码里所有的配置是通过环境变量来实现的,出完整的变量见下方表格。 主要依赖的数据库 Tablestore(表格存储) 支持按量付费,使用该工具,表和索引都会自动创建,仅需要在控制台上申请一个实例即可。
TABLESTORE_INSTANCE_NAME
TABLESTORE_ACCESS_KEY_ID
TABLESTORE_ACCESS_KEY_SECRET
TABLESTORE_TABLE_NAME
tablestore_java_mcp_server_v1
TABLESTORE_INDEX_NAME
tablestore_java_mcp_server_index_v1
TABLESTORE_VECTOR_DIMENSION
TABLESTORE_TEXT_FIELD
TABLESTORE_VECTOR_FIELD
TABLESTORE_TABLE_PK_NAME
EMBEDDING_MODEL_NAME
本页为82搜索生成的网页快照,内容来自站内索引;演示数据的原文链接仅作示例。