项目简介

这是一个基于 Model Context Protocol (MCP) 构建的服务器应用,旨在为大型语言模型 (LLM) 提供一个功能强大的搜索工具。它通过与 Meilisearch 搜索引擎集成,允许 LLM 执行混合搜索,结合传统的关键词搜索和基于向量的语义搜索,以找到最相关的文档。

主要功能点

  • 混合搜索能力: 在配置好的 Meilisearch 索引中执行搜索,同时利用关键词匹配和向量相似性,提高搜索结果的相关性。
  • 参数控制: 允许通过参数调整关键词搜索与向量搜索的权重(语义比例)、设置结果的最低相关性分数阈值,以及根据特定属性进行过滤。
  • 标准MCP接口: 遵循 MCP 协议,以标准化的方式向兼容的 LLM 客户端提供搜索功能。

安装步骤

  1. 克隆仓库:
    git clone https://github.com/exhaustedgast/meilisearch-hybrid-search-mcp.git
    cd meilisearch-hybrid-search-mcp
  2. 构建可执行文件: 确保你已经安装了 Go 语言环境。
    • 对于 Linux/macOS:
      go build -o meilisearch-hybrid-search-mcp .
    • 对于 Windows:
      GOOS=windows GOARCH=amd64 go build -o meilisearch-hybrid-search-mcp.exe .

服务器配置

MCP 客户端需要配置与此服务器建立连接。配置信息通常以 JSON 格式提供,包含服务器的名称、启动命令及其参数。

请勿直接复制以下内容作为代码执行,这只是给 MCP 客户端配置时参考的 JSON 结构和参数说明。

{
  "serverName": "Meilisearch Hybrid Search MCP Server", // 服务器的标识名称
  "command": "./meilisearch-hybrid-search-mcp", // 启动服务器的命令(请根据你的操作系统和文件位置调整)
  "args": [ // 传递给服务器的参数列表
    "--host", "http://your-meilisearch-instance:7700", // Meilisearch 服务器地址
    "--api-key", "your_api_key", // Meilisearch API 密钥(如果需要)
    "--index", "your_index_name", // 要搜索的 Meilisearch 索引名称
    "--embedder", "your_embedder_name" // 在 Meilisearch 中配置的嵌入模型名称 (例如: 'default', 'myOpenai')
    // 也可以通过环境变量 MEILI_HOST, MEILI_API_KEY, MEILI_INDEX, MEILI_EMBEDDER 配置这些信息,此时 args 列表可以省略对应的参数。
  ]
}

注意: 在启动服务器之前,需要通过命令行参数或环境变量配置 Meilisearch 的连接信息(地址、API 密钥、索引名称、嵌入模型名称)。

基本使用方法

服务器配置并由 MCP 客户端成功启动连接后,LLM 客户端可以通过 MCP 协议调用服务器提供的 'hybrid_search' 工具。

'hybrid_search' 工具接受以下参数:

  • 'keywords' (字符串, 必需): 用于搜索的关键词或查询语句。
  • 'semantic_ratio' (数字, 可选, 默认值 0.5): 控制关键词搜索和语义搜索的平衡。0.0 为纯关键词搜索,1.0 为纯语义搜索。
  • 'filterable_attribute' (字符串, 可选): 要进行结果过滤的属性名称(例如:"类别")。
  • 'filter_word' (字符串, 可选): 与 'filterable_attribute' 对应的过滤值(例如:"小说")。
  • 'ranking_score_threshold' (数字, 可选, 默认值 0.9): 结果必须达到的最低相关性分数。

LLM 客户端在需要根据用户的提问搜索相关文档时,会构建一个 MCP 请求,调用 'hybrid_search' 工具并传递相应的关键词和参数。服务器执行搜索并将结果(通常是匹配文档的 JSON 列表)返回给 LLM 客户端,LLM 可以利用这些结果生成更准确的回复。

信息

分类

数据库与文件