项目简介
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 进行部署,简化环境配置。
- 克隆仓库:
git clone https://github.com/thecontextcache/contextcache.git cd contextcache - 配置环境变量: 复制示例环境变量文件,并根据您的实际情况编辑其中的数据库(Neon Postgres with pgvector)和Redis(Upstash Redis)凭证。
cp .env.example .env.local # 然后用文本编辑器打开 .env.local 文件,填入您的 Neon 和 Upstash 凭证 - 启动所有服务: 使用 Docker Compose 启动后端API、前端UI和所有依赖服务。
docker-compose -f infra/docker-compose.dev.yml up -d - 访问应用:
- 前端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服务器功能的核心接口。
基本使用方法
- 创建项目: 访问 'http://localhost:3000' 前端界面,点击“创建项目”按钮,输入项目名称和密码。密码用于派生加密密钥,确保数据安全。
- 摄取文档: 在项目仪表盘中,您可以选择通过粘贴URL或上传文件(PDF/TXT)来添加文档。系统会自动处理文档,提取关键信息。
- 查询知识: 在“Ask”页面输入您的查询,系统将使用语义搜索技术,从知识图谱中检索最相关的答案和事实。
- 探索知识图谱: 访问“Graph”页面,可视化项目中的实体和关系,直观地了解知识结构。
- 查看审计日志: 在“Audit”页面,您可以查看所有数据操作的加密审计日志,确保操作的可追溯性。
信息
分类
AI与计算