向量数据库服务器

一个使用Neo4j作为纯向量数据库的MCP服务器,用于比较向量RAG与图RAG的搜索能力。

  • by neo4j-field
  • Python
  • 本地部署
  • 2 星标
  • 更新于
在 GitHub 查看 guerinjeanmarc/mcp-neo4j-vectordb

使用说明

Neo4j矢量数据库MCP服务器

使用Neo4j作为 纯矢量数据库 --没有图遍历,没有关系。

目的

此服务器旨在 比较矢量RAG与图形RAG。它提供的搜索功能与 mcp-neo4j-graphrag 但有意隐藏图特征,允许您测量图上下文为LLM响应添加的值。

特点 mcp-neo4j-vectordb (这个) mcp-neo4j-graphrag
矢量搜索 ✅ ✅
全文搜索 ✅ ✅
图形遍历 ❌ ✅
密码查询 ❌ ✅
关系 ❌ 隐藏 ✅ 可见

安装

步骤1:下载存储库

git clone https://github.com/guerinjeanmarc/mcp-neo4j-vectordb.git
cd mcp-neo4j-vectordb

步骤2:配置Claude桌面

编辑配置文件:

  • macOS/Linux: ~/Library/Application Support/Claude/claude_desktop_config.json
  • 窗户: %APPDATA%\Claude\claude_desktop_config.json

添加此服务器配置(更新克隆仓库的路径):

{
  "mcpServers": {
    "neo4j-vectordb": {
      "command": "uv",
      "args": [
        "--directory",
        "/path/to/mcp-neo4j-vectordb",
        "run",
        "mcp-neo4j-vectordb"
      ],
      "env": {
        "NEO4J_URI": "neo4j+s://demo.neo4jlabs.com",
        "NEO4J_USERNAME": "recommendations",
        "NEO4J_PASSWORD": "recommendations",
        "NEO4J_DATABASE": "recommendations",
        "OPENAI_API_KEY": "sk-...",
        "EMBEDDING_MODEL": "text-embedding-ada-002"
      }
    }
  }
}

步骤3:重新加载配置

退出并重新启动Claude Desktop以加载新配置。

工具

get_searchable_content

发现可用索引和可搜索节点属性(未显示关系)。

💡 代理应首先自动调用此工具,以了解可以搜索什么。

示例提示:

“我可以在这个数据库中搜索什么?”

vector_search

语义相似性搜索。

示例提示:

“寻找关于‘英雄太空之旅’的电影”

fulltext_search

使用Lucene语法进行关键字搜索。

示例提示:

“汤姆·汉克斯出生在哪里?”

get_node_by_id

按ID检索节点的属性(无关系)。

示例提示:

“从我的搜索结果中获取第一部电影的全部详细信息”


比较工作流程:矢量RAG与图形RAG

使用这两个服务器来比较图上下文如何改进LLM响应。

先决条件

下载两个存储库:

git clone https://github.com/guerinjeanmarc/mcp-neo4j-vectordb.git
git clone https://github.com/guerinjeanmarc/mcp-neo4j-graphrag.git

步骤1:在Claude Desktop中配置两个服务器

编辑 ~/Library/Application Support/Claude/claude_desktop_config.json:

{
  "mcpServers": {
    "neo4j-vectordb": {
      "command": "uv",
      "args": [
        "--directory",
        "/path/to/mcp-neo4j-vectordb",
        "run",
        "mcp-neo4j-vectordb"
      ],
      "env": {
        "NEO4J_URI": "neo4j+s://demo.neo4jlabs.com",
        "NEO4J_USERNAME": "recommendations",
        "NEO4J_PASSWORD": "recommendations",
        "NEO4J_DATABASE": "recommendations",
        "OPENAI_API_KEY": "sk-...",
        "EMBEDDING_MODEL": "text-embedding-ada-002"
      }
    },
    "neo4j-graphrag": {
      "command": "uv",
      "args": [
        "--directory",
        "/path/to/mcp-neo4j-graphrag",
        "run",
        "mcp-neo4j-graphrag"
      ],
      "env": {
        "NEO4J_URI": "neo4j+s://demo.neo4jlabs.com",
        "NEO4J_USERNAME": "recommendations",
        "NEO4J_PASSWORD": "recommendations",
        "NEO4J_DATABASE": "recommendations",
        "OPENAI_API_KEY": "sk-...",
        "EMBEDDING_MODEL": "text-embedding-ada-002"
      }
    }
  }
}

步骤2:仅使用VectorDB进行测试

  1. 在Claude Desktop中,单击 “搜索和工具” 对话界面中的按钮
  2. 禁用 neo4j-graphrag 工具(仅保留 neo4j-vectordb 活动)
  3. 提出测试问题:

“找到关于人工智能的电影,告诉我哪些导演制作了多部人工智能电影,以及他们通常从事哪些其他类型的电影。”

  1. 请注意克劳德的回答及其使用的工具

步骤3:仅使用GraphRAG进行测试

  1. 点击 “搜索和工具” 再次
  2. 禁用 neo4j-vectordb 工具和 启用 neo4j-graphrag 工具
  3. 问:

“您现在可以访问Neo4j工具,请回答同样的问题。”

  1. 请注意克劳德的回答及其使用的工具

步骤4:比较结果

请克劳德进行比较:

“比较你之前的两个答案。哪种方法能给你更好的背景来回答这个问题?请解释哪种技术更适合回答这个问题:VectorDB还是Neo4j?”

比较示例问题

问题 矢量RAG 图形RAG
“《黑客帝国》是关于什么的?” ✅ 好 ✅ 很好
“寻找科幻电影” ✅ 好 ✅ 很好
“哪些演员与斯皮尔伯格和诺兰都合作过?”⚠️ 有限 ✅ 太好了
“汤姆·汉克斯通常演什么类型的戏?” ⚠️ 有限 ✅ 太好了
“寻找与《盗梦空间》类似的电影,并展示导演的其他作品” ⚠️ 有限 ✅ 太好了

配置

环境变量

变量 必填 默认 描述
NEO4J_URI 是的 bolt://localhost:7687 Neo4j连接URI
NEO4J_USERNAME 是的 neo4j Neo4j用户名
NEO4J_PASSWORD 是的 password Neo4j密码
NEO4J_DATABASE 没有 neo4j 数据库名称
EMBEDDING_MODEL 没有 text-embedding-3-small 嵌入模型

嵌入提供者

支持所有 LiteLLM嵌入提供商:

  • OpenAI: text-embedding-ada-002, text-embedding-3-small
  • Azure: azure/deployment-name
  • 基岩: bedrock/amazon.titan-embed-text-v1
  • 科恩: cohere/embed-english-v3.0
  • 奥拉马: ollama/nomic-embed-text

相关

许可证

MIT许可证