项目简介

ContextCache 是一个为AI研究设计的记忆引擎,旨在提供一个安全、可信赖的AI上下文服务。它能够摄取各种文档,将知识转化为可查询的知识图谱,并确保所有信息都具备完整的溯源、可解释性和审计能力。通过零知识加密和本地优先设计,ContextCache 致力于保护用户数据的隐私。

主要功能点

  • 项目管理: 创建、列出和管理多个项目,支持零知识加密。
  • 文档摄取与处理: 支持从URL或文件(PDF/TXT)摄取文档,进行文本分块、去重,并生成语义嵌入。
  • 知识图谱构建: 将文档中的信息提取为结构化的事实(如“主语-谓语-宾语”三元组),并构建可交互的知识图谱。
  • 语义搜索与查询: 对存储的事实进行语义搜索,基于相似度检索相关信息。
  • 加密与安全: 采用XChaCha20-Poly1305进行内容加密,Ed25519用于数据包签名,BLAKE3用于审计链哈希,确保数据隐私和完整性。
  • 审计链: 维护一个加密可验证的事件审计链,记录所有数据变更,提供透明且不可篡改的操作记录。
  • MCP服务器: 提供文档(Docs)、提取(Extractor)、记忆(Memory)、审计(Audit)和策略控制(Policy-Gate)五大核心功能,以标准化的 Model Context Protocol (MCP) 方式向LLM客户端提供上下文服务。

安装步骤

ContextCache 推荐使用 Docker 进行部署,简化环境配置。

  1. 克隆仓库:
    git clone https://github.com/thecontextcache/contextcache.git
    cd contextcache
  2. 配置环境变量: 复制示例环境变量文件,并根据您的实际情况编辑其中的数据库(Neon Postgres with pgvector)和Redis(Upstash Redis)凭证。
    cp .env.example .env.local
    # 然后用文本编辑器打开 .env.local 文件,填入您的 Neon 和 Upstash 凭证
  3. 启动所有服务: 使用 Docker Compose 启动后端API、前端UI和所有依赖服务。
    docker-compose -f infra/docker-compose.dev.yml up -d
  4. 访问应用:
    • 前端UI: 'http://localhost:3000'
    • 后端API: 'http://localhost:8000'
    • API文档 (Swagger UI): 'http://localhost:8000/docs'

MCP服务器配置(面向MCP客户端开发者)

ContextCache 提供了一组符合MCP协议的服务,可以通过JSON-RPC协议与您的MCP客户端进行交互。以下是核心MCP服务器及其暴露的工具,用于MCP客户端的 'server.json' 配置示例。

请注意:实际的JSON-RPC端点是主API 'http://localhost:8000',所有MCP工具通过该API路由。MCP客户端不需要了解内部的 'DocsServer' 等类,只需要调用外部暴露的工具方法。

MCP客户端在配置与ContextCache服务器的连接时,需要提供如下信息。以下是一个示例配置,其中 'command' 和 'args' 将指导客户端如何启动或连接到服务器。

// server.json (MCP客户端配置示例)
[
  {
    "name": "contextcache-mcp-server",
    "description": "ContextCache 是一个隐私优先的AI记忆引擎,提供文档摄取、知识提取、语义查询、审计链等核心功能。",
    "command": ["python", "api/main.py"],
    "args": ["--port", "8000", "--host", "0.0.0.0"],
    "tools": [
      // MCP Docs Server 工具: 提供文档获取和解析功能
      {
        "name": "fetch_document",
        "description": "从URL安全地获取并解析文档(支持PDF, HTML, 纯文本),并进行安全检查和领域白名单验证。",
        "input_schema": {
          "type": "object",
          "properties": {
            "url": {"type": "string", "description": "要获取的文档URL"}
          },
          "required": ["url"]
        }
      },
      // MCP Extractor Server 工具: 提供事实提取功能
      {
        "name": "extract_facts",
        "description": "从非结构化文本中提取结构化事实(主语-谓语-宾语四元组),并包含溯源信息。",
        "input_schema": {
          "type": "object",
          "properties": {
            "text": {"type": "string", "description": "要提取事实的文本"},
            "project_id": {"type": "string", "description": "项目UUID"}
          },
          "required": ["text", "project_id"]
        }
      },
      // MCP Memory Server 工具: 提供知识图谱存储和查询功能
      {
        "name": "store_fact",
        "description": "将结构化事实存储到知识图谱中,生成语义嵌入并与文档关联。",
        "input_schema": {
          "type": "object",
          "properties": {
            "subject": {"type": "string", "description": "事实的主语"},
            "predicate": {"type": "string", "description": "事实的谓语(关系)"},
            "object": {"type": "string", "description": "事实的宾语"},
            "context": {"type": "string", "description": "事实的上下文"},
            "confidence": {"type": "number", "description": "事实提取的置信度(0.0-1.0)"},
            "document_id": {"type": "string", "description": "事实所属文档的UUID"},
            "provenance": {"type": "object", "description": "事实的溯源信息"}
          },
          "required": ["subject", "predicate", "object", "context", "document_id"]
        }
      },
      {
        "name": "query_facts",
        "description": "使用语义搜索查询知识图谱中的事实,返回与查询最相关的结果。",
        "input_schema": {
          "type": "object",
          "properties": {
            "query": {"type": "string", "description": "语义查询的文本"},
            "project_id": {"type": "string", "description": "项目UUID"},
            "limit": {"type": "integer", "default": 10, "description": "返回结果的最大数量"},
            "min_similarity": {"type": "number", "default": 0.2, "description": "最小相似度阈值(0.0-1.0)"}
          },
          "required": ["query", "project_id"]
        }
      },
      // MCP Audit Server 工具: 提供审计链记录和验证功能
      {
        "name": "log_event",
        "description": "记录一个可审计的事件,并将其添加到BLAKE3哈希链中,确保数据完整性。",
        "input_schema": {
          "type": "object",
          "properties": {
            "project_id": {"type": "string", "description": "项目UUID"},
            "event_type": {"type": "string", "description": "事件类型(如'fact_added')"},
            "event_data": {"type": "object", "description": "事件的详细数据(JSON对象)"},
            "actor": {"type": "string", "default": "system", "description": "触发事件的实体(如'user', 'system')"}
          },
          "required": ["project_id", "event_type", "event_data"]
        }
      },
      {
        "name": "verify_chain",
        "description": "验证项目的BLAKE3审计链的完整性,检测任何篡改。",
        "input_schema": {
          "type": "object",
          "properties": {
            "project_id": {"type": "string", "description": "项目UUID"}
          },
          "required": ["project_id"]
        }
      },
      // MCP Policy Gate Server 工具: 提供安全策略和速率限制功能
      {
        "name": "enforce_policies",
        "description": "执行与项目操作相关的安全策略,如速率限制、领域白名单和文档大小限制。",
        "input_schema": {
          "type": "object",
          "properties": {
            "project_id": {"type": "string", "description": "项目UUID"},
            "operation": {"type": "string", "description": "要执行的操作类型(如'ingest', 'query')"},
            "url": {"type": "string", "description": "如果操作涉及URL,提供URL进行领域白名单检查(可选)"},
            "document_size_mb": {"type": "number", "description": "如果操作涉及文档,提供文档大小(MB)进行限制检查(可选)"}
          },
          "required": ["project_id", "operation"]
        }
      }
    ]
  }
]

说明:

  • 'name': 服务器的标识符。
  • 'description': 服务器功能的简要说明。
  • 'command': MCP客户端启动MCP服务器进程的命令行指令。在这里,它指示使用Python运行 'api/main.py' 文件。
  • 'args': 传递给 'command' 的参数,用于配置服务器(例如端口和主机)。
  • 'tools': 一个列表,包含了该MCP服务器暴露给LLM客户端的所有工具的定义。每个工具都包含 'name'(工具名称)、'description'(工具用途)和 'input_schema'(调用工具所需的参数及其类型说明)。这些工具是LLM客户端通过JSON-RPC协议调用MCP服务器功能的核心接口。

基本使用方法

  1. 创建项目: 访问 'http://localhost:3000' 前端界面,点击“创建项目”按钮,输入项目名称和密码。密码用于派生加密密钥,确保数据安全。
  2. 摄取文档: 在项目仪表盘中,您可以选择通过粘贴URL或上传文件(PDF/TXT)来添加文档。系统会自动处理文档,提取关键信息。
  3. 查询知识: 在“Ask”页面输入您的查询,系统将使用语义搜索技术,从知识图谱中检索最相关的答案和事实。
  4. 探索知识图谱: 访问“Graph”页面,可视化项目中的实体和关系,直观地了解知识结构。
  5. 查看审计日志: 在“Audit”页面,您可以查看所有数据操作的加密审计日志,确保操作的可追溯性。

信息

分类

AI与计算