项目简介
Infinite Context MCP 项目实现了一个功能强大的MCP服务器,旨在解决LLMs在处理长对话时受限于上下文窗口的问题。它通过智能压缩、向量存储、语义搜索和Instacart启发的查询理解(包括分类、重写和智能检索)等技术,提供了一个可扩展的“无限上下文”能力。服务器可作为LLM的外部工具调用,管理和检索历史信息,极大地提升LLM在复杂对话和知识密集型任务中的表现。
主要功能点
- 无限上下文: 自动压缩长时间对话,仅保留关键信息,确保LLM始终拥有相关上下文。
- 智能压缩: 利用LLM(如Claude)智能地总结对话内容,提取核心发现和决策。
- 向量存储与语义搜索: 使用Pinecone进行高效的向量存储,实现对对话历史的语义搜索和检索。
- 高级查询理解: 包含查询分类、查询重写(同义词、更广范围、扩展)和后处理筛选,提升搜索准确性和召回率。
- 智能动作编排: 提供一个统一的'smart_action'工具,支持自然语言请求,自动理解意图、路由到相应工具并执行多步操作,实现无摩擦的上下文管理。
- 会话与内存统计: 提供会话管理功能,并能查询内存使用和缓存统计信息。
- 多种接口: 除了MCP协议,还提供了RESTful API,方便与ChatGPT等其他LLM平台集成。
安装步骤
- 安装Python依赖:
pip install -r requirements.txt - 配置API密钥: 复制示例环境文件并填写你的API密钥。
编辑'.env'文件,添加你的Anthropic (可选), OpenAI 和 Pinecone API 密钥:cp env_example.txt .envANTHROPIC_API_KEY=你的Anthropic_API_密钥 OPENAI_API_KEY=你的OpenAI_API_密钥 PINECONE_API_KEY=你的Pinecone_API_密钥 PINECONE_INDEX_NAME=你的自定义索引名称 # 可选,默认为 "infinite-context-index" - 获取API密钥:
- Anthropic: 从 Anthropic Console 获取。
- OpenAI: 从 OpenAI Platform 获取。
- Pinecone: 从 Pinecone Console 获取。
- 运行MCP服务器:
或者,运行RESTful API服务器以与ChatGPT等集成:python main.pypython api_server.py
MCP客户端配置示例
MCP客户端需要配置服务器的启动命令和参数,以便与其建立连接和调用工具。以下是一个示例配置信息:
{ "server_name": "infinite-context", "command": ["python", "main.py"], "args": [], "description": "一个功能强大的MCP服务器,为大型语言模型(LLMs)提供无限上下文和增强的检索能力,包括对话压缩、向量存储和高级查询理解。", "tools": [ { "name": "save_context", "description": "保存当前对话或信息的上下文到向量数据库,以便后续检索和利用。", "parameters": { "summary": "对要保存内容的简要总结(必需)。", "topics": "与内容相关的关键词或主题列表(可选)。", "key_findings": "从中提取出的关键发现、决策或重要洞察列表(可选)。", "data": "要与上下文一同保存的结构化数据(JSON对象,可选)。" } }, { "name": "search_context", "description": "在历史对话和已保存的上下文中进行搜索,查找相关信息。", "parameters": { "query": "要搜索的查询内容(必需)。", "top_k": "希望返回的最相关结果数量(整数,默认为3)。" } }, { "name": "enhanced_search", "description": "执行高级搜索,结合查询理解、重写建议和智能过滤,提供更精准的上下文检索。", "parameters": { "query": "要搜索的查询内容(必需)。", "top_k": "希望返回的最相关结果数量(整数,默认为3)。", "use_rewrites": "是否使用LLM生成的查询重写来扩展搜索范围,以提高召回率(布尔值,默认为True)。", "min_relevance": "结果的最小相关性分数阈值,低于此分数的将不予返回(浮点数,默认为0.7)。" } }, { "name": "classify_query", "description": "分析并分类用户查询的意图、类型和相关类别。", "parameters": { "query": "要分类的查询内容(必需)。", "context": "提供额外的上下文信息以帮助LLM更准确地分类查询(JSON对象,可选)。" } }, { "name": "rewrite_query", "description": "为给定查询生成多种改写形式(如同义词、更广泛的词汇或扩展表达),以优化搜索或理解。", "parameters": { "query": "需要改写的原始查询内容(必需)。", "rewrite_types": "指定要生成的改写类型列表,可选值为 \"synonym\", \"broader\", \"expansion\", \"substitute\"(字符串数组,默认为所有类型)。" } }, { "name": "smart_action", "description": "智能编排工具,允许用户通过自然语言描述来执行多种上下文管理操作,系统将自动理解意图、选择并组合工具。", "parameters": { "request": "用户的自然语言请求,描述希望进行的操作(必需,例如:'保存关于MCP设置的对话','查找关于Pinecone的讨论','显示内存统计')。", "conversation_context": "当前完整的对话上下文,如果提供了,系统将自动分析并从中提取总结、主题和关键发现(字符串,可选)。" } }, { "name": "get_memory_stats", "description": "获取当前MCP服务器中存储的对话内存和查询理解缓存的统计信息。", "parameters": {} } ] }
基本使用方法
运行 'main.py' 启动服务器后,你可以通过MCP客户端连接并调用其暴露的工具。例如:
- 保存上下文: 你的LLM客户端可以调用 'save_context' 工具,提供对话的摘要、主题和关键发现。 或者,更智能地,使用 'smart_action' 工具,以自然语言请求让服务器自动分析和保存: 'smart_action({"request": "保存这篇关于配置MCP服务器的对话", "conversation_context": "我们讨论了MCP服务器的安装和配置细节..."})'
- 搜索上下文: 调用 'enhanced_search' 或 'smart_action' 工具来查找历史信息。 'smart_action({"request": "查找过去关于查询理解的讨论"})'
- 获取内存统计: 'smart_action({"request": "显示内存统计"})'
信息
分类
AI与计算