项目简介
'knowledge-graph-system' 项目是一个功能强大的知识图谱系统,能够从文档中提取概念和关系,构建可语义查询的知识网络。它不仅提供传统的文本检索,更专注于理解概念间的深层联系,支持用户通过意义而非关键词进行探索。该系统包含一个基于FastAPI的RESTful API后端、一个TypeScript命令行客户端,并集成了Model Context Protocol (MCP) 服务器模式,以便与大型语言模型 (LLM) 客户端进行无缝交互。
主要功能点
- 概念与关系提取: 从研究论文、会议记录、代码提交等各类文档中自动识别核心概念及其相互关系,并构建持久化的知识图谱。
- 语义搜索与遍历: 支持通过自然语言查询概念(例如“递归模式”),并能沿着概念间的关系进行图遍历,发现文档之间隐藏的联系。
- 证据溯源: 每个概念和关系都可追溯到原始文档中的引用片段,确保知识的可靠性和透明性。
- 本体管理: 允许用户将相关文档组织到不同的“本体”(知识领域)中,实现知识的模块化和交叉领域连接。
- LLM工具集成 (MCP服务器): 将知识图谱的搜索、查询、摄取和管理等核心功能封装为LLM客户端可直接调用的标准化工具,例如搜索概念、获取概念详情、摄取文本、列出本体等。
- 任务管理: 提供文档摄取任务的生命周期管理、进度跟踪和成本估算,支持人工审批或自动审批流程。
安装步骤
- 克隆仓库:
打开终端,运行以下命令克隆项目仓库:
git clone https://github.com/aaronsb/knowledge-graph-system.git cd knowledge-graph-system - 设置基础设施 (Docker, Python):
确保您的系统已安装Docker(用于运行PostgreSQL数据库)和Python 3.11+。然后运行项目提供的设置脚本,它会启动数据库、创建Python虚拟环境并安装依赖:
./scripts/setup.sh - 配置AI提供商:
根据提示配置您的AI提供商(如OpenAI或Anthropic)的API密钥。这将用于文档的概念提取和嵌入生成:
./scripts/configure-ai.sh - 启动API服务器:
激活Python虚拟环境并启动知识图谱的RESTful API服务器。这将是MCP服务器调用的后端服务:
API服务器将运行在 'http://localhost:8000'。source venv/bin/activate uvicorn src.api.main:app --reload --port 8000 - 安装TypeScript客户端和MCP服务器:
进入 'client' 目录,安装Node.js依赖,构建项目,并运行安装脚本。这将把 'kg' 命令行工具和 'kg-mcp-server' 可执行文件安装到您的系统路径中:
cd client npm install npm run build ./install.sh # 此脚本将构建并安装kg CLI和kg-mcp-server cd ..
MCP服务器配置
该MCP服务器是一个通过Stdio(标准输入/输出)运行的Node.js进程,LLM客户端可以通过以下JSON格式的配置信息与其建立连接,调用其提供的工具。请将此配置信息提供给您的LLM客户端:
{ "name": "知识图谱MCP服务器", "command": "kg-mcp-server", "args": [], "description": "提供知识图谱的搜索、查询和管理工具", "config": { "api_url": "http://localhost:8000" } }
- 'name': MCP服务器在LLM客户端界面显示的用户友好名称。
- 'command': 启动MCP服务器的可执行文件名称,在完成安装步骤5后,'kg-mcp-server' 应该已在您的系统PATH中可用。
- 'args': 启动MCP服务器时传递的额外命令行参数,当前版本不需要特定参数。
- 'description': 对MCP服务器功能的简要描述,帮助LLM客户端理解其用途。
- 'config.api_url': 这是MCP服务器('kg-mcp-server')内部需要连接的知识图谱API后端地址,请确保其与您在安装步骤4中启动的FastAPI服务器地址(默认是'http://localhost:8000')一致。
基本使用方法
- 启动MCP服务器: 通常情况下,您的LLM客户端会根据上述配置自动管理 'kg-mcp-server' 进程的启动和停止。您无需手动在终端中启动 'kg-mcp-server'。
- LLM客户端调用工具:
一旦LLM客户端(例如Claude Desktop/Code)与MCP服务器成功连接,它将能够自动发现并调用MCP服务器暴露的知识图谱工具。这些工具包括但不限于:
- 'search_concepts': 用于根据自然语言查询搜索相关概念。
- 'get_concept_details': 用于获取特定概念的详细信息,包括其证据和关系。
- 'find_related_concepts': 用于通过图遍历查找与某个概念相关联的其他概念。
- 'ingest_text': 用于将原始文本内容摄取到知识图谱中。
- 'list_ontologies': 用于列出知识图谱中所有已定义的本体。
- 'get_database_stats': 用于获取知识图谱数据库的统计信息(如概念、关系数量)。
- 示例 (LLM客户端中的工具调用): 当LLM客户端需要查询知识图谱时,它可能会生成一个工具调用请求。例如,如果LLM客户端想了解“Apache AGE迁移”相关的信息,它可能会执行类似以下逻辑的工具调用: 'call_tool('search_concepts', {'query': 'Apache AGE迁移', 'limit': 5})' MCP服务器会接收到这个请求,然后调用其内部的Knowledge Graph API,并将处理结果以JSON格式返回给LLM客户端,供其进一步分析和响应用户。
信息
分类
AI与计算