本项目借助 Couchbase 的向量搜索功能,实现了模型上下文协议(MCP)服务器,为用户提供《星球大战》行星的语义搜索能力,帮助用户便捷获取相关信息。
本项目实现的 MCP 服务器,为 AI 模型与外部工具和数据源的交互提供了标准方式。借助该服务器,AI 模型能够获取《星球大战》行星的详细信息,还能依据向量嵌入查找相似的行星。
服务器实现了两个主要的 MCP 工具,这些工具可被支持模型上下文协议的 AI 模型发现和调用:
{
tools: [
{
name: "fetch_planet_name",
description: "按名称获取《星球大战》行星",
inputSchema: // ... 行星名称的模式
},
{
name: "find_planets_which_are_similar",
description: "查找与给定名称相似的行星",
inputSchema: // ... 行星名称的模式
}
]
}
本实现使用 Couchbase 的向量搜索功能查找相似行星:
embedding 字段,其中包含表示行星特征的向量。COUCHBASE_URL=
COUCHBASE_USERNAME=
COUCHBASE_PASSWORD=
COUCHBASE_BUCKET=
COUCHBASE_SCOPE=
COUCHBASE_COLLECTION=
每个行星文档应遵循以下结构:
interface StarWarsCharacter {
name: string;
rotation_period: string;
orbital_period: string;
diameter: string;
climate: string;
gravity: string;
terrain: string;
surface_water: string;
population: string;
residents: string[];
films: string[];
created: string;
edited: string;
url: string;
embedding?: number[]; // 用于相似性搜索的向量嵌入
}
需在 Couchbase 中创建一个名为 vector-search-index 的向量搜索索引,该索引引用 embedding 字段。
npm start
// 获取行星详细信息
{
"name": "fetch_planet_name",
"arguments": {
"name": "Tatooine"
}
}
// 查找相似的行星
{
"name": "find_planets_which_are_similar",
"arguments": {
"name": "Tatooine"
}
}