语义搜索服务器

一个基于Superlinked向量搜索框架的MCP服务器,提供语义搜索和RAG能力,支持多维度搜索(文本相似性、时效性、类别和数字)。

  • by hovav698
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 hovav698/superlinked_mcp_server

使用说明

超级链接MCP服务器

一种模型上下文协议(MCP)服务器,使用以下方式提供语义搜索和RAG功能 超级链接的矢量搜索框架。该服务器使AI助手能够从结构化数据文件中创建和查询矢量索引,并支持多个搜索维度(文本相似性、新近性、类别和数字)。

概述

该项目创建了一个MCP服务器,该服务器封装了Superlinked的InMemoryExecutor,允许任何兼容MCP的客户端(如Claude Desktop)对结构化数据执行复杂的语义搜索操作。服务器提供工具来预览数据文件、创建多维向量索引,并使用自然语言进行查询。

运作原理

服务器使用Superlink的矢量搜索功能来创建结合多个搜索维度的内存索引:

  1. 文本相似度:使用句子变换器嵌入的语义搜索
  2. 近期性:时间戳字段的基于时间的排名
  3. 数字:数值排名(价格、评级等)
  4. 类别:类别匹配和过滤

创建索引时,服务器:

  • 分析数据文件结构
  • 根据列映射创建适当的向量空间
  • 将自定义权重应用于每个维度
  • 将数据摄取到内存索引中
  • 使其可用于语义查询

特性

  • 多格式支持:CSV和JSON数据文件
  • 灵活的架构:基于数据的动态模式创建
  • 多维搜索:组合文本、时间、数字和类别
  • 自定义称重:控制每个搜索维度的重要性
  • 内存执行:无外部依赖的快速查询
  • MCP兼容性:适用于任何MCP客户端

安装

先决条件

  • Python 3.10+
  • pip包管理器

设置

  1. 克隆此存储库:
git clone <repository-url>
cd rag_repo
  1. 安装依赖项:
pip install -r requirements.txt
  1. 设置所需的环境变量:
# Required for Streamlit demo
export ANTHROPIC_API_KEY=your_api_key_here

# Optional: Change Claude model (default: claude-haiku-4-5-20251001)
export CLAUDE_MODEL=claude-haiku-4-5-20251001

MCP服务器工具

服务器提供三个主要工具:

1. preview_file

在索引之前预览数据文件的结构和内容。使用此工具了解您的数据结构,并决定创建哪些空间用于索引。

参数:

  • file_path (string):数据文件的路径(CSV或JSON)
  • rows (整数,可选):要预览的样本行数(默认值:5)

退货:

  • 总行数
  • 列名和数据类型
  • 样品记录

示例用例: “显示sample_data/business_news.json中的内容”

2. create_index

从结构化数据创建可搜索的向量索引。

参数:

  • file_path (string):要索引的数据文件的路径
  • column_mapping (dict):将列名映射到空间类型
    • text_similarity:用于文本字段(语义搜索)
    • recency:用于时间戳/日期字段(Unix时间戳)
    • number:用于数字字段
    • category:用于分类字段
  • weights (dict):将列名映射到权重值(0.0到1.0)
    • 权重越高=对排名的影响越大
    • 例子: {"description": 0.8, "timestamp": 0.3}

退货:

  • 索引名称(从文件名派生)
  • 列配置
  • 摄入统计
  • 应用重量

示例用例: “从business_news.json中创建一个索引,在描述字段上进行文本搜索,在日期字段上进行近距搜索。对描述赋予更多权重。”

3. query_index

使用自然语言查询搜索索引。

参数:

  • index_name (string):索引的名称(不带扩展名的文件名)
  • query_text (string):自然语言搜索查询
  • limit (整数,可选):返回的最大结果(默认值:5)

退货:

  • 结果数组包含:
    • id:记录标识符
    • score:相似性得分
    • fields:所有索引字段及其值

示例用例: “在business_news索引中搜索有关罢工的文章”

与外部MCP客户端集成

克劳德桌面

要将此服务器与Claude Desktop一起使用,请执行以下操作:

  1. 找到您的Claude Desktop配置文件:

    • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
    • 窗户: %APPDATA%\Claude\claude_desktop_config.json
  2. 添加服务器配置:

{
  "mcpServers": {
    "superlinked-rag": {
      "command": "python",
      "args": ["/absolute/path/to/rag_repo/mcp_server.py"],
      "type": "stdio"
    }
  }
}
  1. 重新启动克劳德桌面

  2. 服务器工具现在可供Claude使用。你可以要求克劳德:

    • 预览您的数据文件
    • 创建向量索引
    • 执行语义搜索

Streamlit演示应用程序

此存储库包含一个Streamlit聊天机器人演示,该演示使用Claude Agent SDK作为MCP客户端。这演示了如何与MCP服务器构建对话界面。

运行演示

  1. 运行Streamlit应用程序:
streamlit run streamlit_chatbot.py
  1. 打开浏览器到提供的URL(通常 http://localhost:8501)

  2. 重要提示:未修复的小错误-在新环境安装后,MCP服务器可能无法在第一次启动应用程序时加载。只需在Streamlit应用程序加载后刷新浏览器一次,您只需执行一次即可解决问题。

演示功能

  • 实时流媒体:查看AI推理步骤
  • 对话记忆:带上下文的多回合对话
  • 工具可视化:观看AI使用MCP工具
  • 交互式用户界面:带有执行步骤显示的干净界面

对话流程示例

  1. “我有一个文件:sample_data/business_news.json。告诉我里面有什么。”
  2. “在描述字段上创建语义搜索索引,在日期字段上创建基于时间的排名。”
  3. “谁想罢工?”
  4. “这个消息已经过时了,把更多的注意力放在日期上。”
  5. “有关于天然气的消息吗?上面说什么?”

资源