项目简介
Nexus是一个现代化的属性图数据库,专为读取密集型工作负载和混合RAG(检索增强生成)应用设计。它结合了图遍历和语义相似性搜索的强大功能,提供了强大的上下文管理能力。通过支持Model Context Protocol (MCP) 和 Universal Model Interoperability Protocol (UMICP),Nexus可以作为LLM应用的后端,以标准化的方式提供资源管理、工具调用和上下文信息服务。
主要功能点
- 属性图数据库: 支持节点、关系和属性,提供高效的图遍历能力和Neo4j兼容的Cypher查询子集。
- 原生向量搜索: 内置HNSW索引,实现快速近似最近邻(KNN)搜索,支持将向量相似性与图遍历结合的混合查询。
- AI集成协议: 通过Model Context Protocol (MCP) 和 Universal Model Interoperability Protocol (UMICP) 协议,向LLM客户端提供上下文和功能调用,包括图生成、模式识别等AI辅助工具,增强LLM对复杂数据的理解能力。
- 认证与安全: 支持API Key、JWT、RBAC和限速等功能,确保数据安全和访问控制。
- 高可用与可伸缩: 路线图包括主从复制、自动故障转移、分片和集群协调,以满足生产环境的需求。
- 代码关联分析: 能够从代码库数据中自动生成调用图、依赖图和数据流图,为LLM提供结构化的代码关系信息。
安装步骤
方式一:自动化安装 (推荐)
Linux/macOS: 打开终端,运行以下命令:
curl -fsSL https://raw.githubusercontent.com/hivellm/nexus/main/scripts/install.sh | bash
Windows: 打开PowerShell(以管理员身份),运行以下命令:
powershell -c "irm https://raw.githubusercontent.com/hivellm/nexus/main/scripts/install.ps1 | iex"
安装脚本将自动下载最新版本、安装'nexus-server'到系统路径,并创建系统服务(开机自启动)。
方式二:从源代码构建
- 克隆仓库:
git clone https://github.com/hivellm/nexus cd nexus - 构建 (发布模式):
确保已安装Rust nightly 1.85+ (edition 2024)。
cargo +nightly build --release --workspace - 运行服务器:
服务器默认在 'http://localhost:15474' 启动。./target/release/nexus-server
服务器配置 (适用于MCP客户端)
MCP客户端需要了解如何与Nexus服务器建立连接。以下是MCP客户端通常需要配置的关键信息,以及针对Nexus的建议值:
- 服务器名称 ('server_name'): 一个可读的名称,例如 "Nexus Graph Database"。
- 启动命令 ('command'): Nexus服务器的可执行文件路径。
- 如果通过自动化脚本安装,Nexus通常会作为一个系统服务运行,此时客户端可能不需要直接提供启动命令。
- 如果从源代码构建并手动运行,命令通常是 'target/release/nexus-server' (在Nexus仓库的根目录下执行)。
- 启动参数 ('args'): 启动Nexus服务器时传递的命令行参数列表。Nexus服务器主要通过环境变量进行配置,因此此列表通常可以留空 '[]'。
- 环境变量 ('env'): 启动Nexus服务器时设置的环境变量。重要变量包括:
- 'NEXUS_ADDR': 服务器监听的IP地址和端口,例如设置为 '"0.0.0.0:15474"' 表示监听所有网络接口的15474端口。
- 'NEXUS_DATA_DIR': 数据存储目录,例如 './data'。
- 'NEXUS_AUTH_ENABLED': 是否启用API密钥认证。当'NEXUS_ADDR'设置为'0.0.0.0'时,必须设置为'"true"'来启用认证,否则服务器将拒绝启动。
- 'RUST_LOG': 日志级别,例如 '"nexus_server=info"'。
- 协议端点 ('protocol_endpoint'): MCP客户端连接到Nexus服务器MCP功能的完整URL。默认地址和端口下,其值应为 '"http://127.0.0.1:15474/mcp"'。如果服务器监听的IP和端口与默认值不同,请相应修改此URL。
基本使用方法
1. 执行Cypher查询
通过REST API执行图查询:
curl -X POST http://localhost:15474/cypher \ -H "Content-Type: application/json" \ -d '{ "query": "MATCH (n:Person) WHERE n.age > 25 RETURN n.name, n.age ORDER BY n.age DESC LIMIT 10" }'
2. KNN向量搜索
执行原生向量相似性搜索:
curl -X POST http://localhost:15474/knn_traverse \ -H "Content-Type: application/json" \ -d '{ "label": "Person", "vector": [0.1, 0.2, 0.3, ...], # 替换为实际的向量 "k": 10 }'
3. MCP协议集成 (LLM调用工具示例)
LLM客户端可以通过MCP协议调用Nexus提供的工具,例如生成代码库的调用图:
curl -X POST http://localhost:15474/mcp \ -H "Content-Type: application/json" \ -d '{ "tool": "graph_generate", "params": { "graph_type": "call_graph", "scope": { "collections": ["codebase", "functions"], "file_patterns": ["*.rs"] } } }'
此命令将请求Nexus服务器执行'graph_generate'工具,生成一个Rust代码库的调用图。LLM客户端可以利用这些工具来获取结构化上下文信息,从而增强其对代码结构和功能理解。
信息
分类
数据库与文件