mcpField
N
NL Cache Framework

NL Cache Framework

本地服务
github.com/rnednur开发工具072 周前更新

关于 NL Cache Framework

ThinkForge 是一个缓存自然语言查询并返回 SQL、API 调用和 URL 等结构化结果的框架。它通过嵌入向量相似度搜索、实体替换及管理面板来管理和测试缓存条目。

主要功能

  1. 01基于嵌入向量的相似度搜索
  2. 02支持 SQL、API、URL 和工作流模板
  3. 03实体提取与替换
  4. 04REST CRUD API 和管理面板
  5. 05CSV 导入与使用统计

适用场景

  1. 01为相似自然语言查询复用结构化结果
  2. 02管理并测试缓存模板
  3. 03通过 CSV 批量导入缓存条目

MCP 相关

项目被描述为 MCP 服务框架,但 README 未说明其向 MCP 客户端提供的工具或资源。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

暂未收录安装方式

我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。

代码仓库

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

ThinkForge

一个用于缓存自然语言查询及其对应结构化输出(如 SQL、API 调用等)的框架,通过相似度搜索提升检索效果和性能。

概述

ThinkForge 旨在缓存自然语言(NL)查询,并将其映射到 SQL 查询、API 调用、URL 或其他模板等结构化输出。它使用嵌入向量进行相似度搜索,为给定输入查询检索最相关的缓存条目,从而提高自然语言处理应用的响应准确性和速度。

主要功能

  • 语义相似度搜索:使用嵌入向量为自然语言查询查找最相关的缓存条目
  • 多种模板类型:支持 SQL、API 调用、URL 和工作流模板
  • 实体提取与替换:智能地从查询中提取实体并将其应用于模板
  • 完整的 CRUD API:用于管理缓存条目的完整 REST API
  • 交互式仪表板:用于管理和测试缓存条目的友好界面
  • 推理过程记录:记录模板生成的推理过程
  • 模板验证:确保模板符合质量标准
  • 使用情况跟踪:记录使用统计信息以供分析

数据模型

核心数据模型围绕 Text2SQLCache 表展开,该表存储缓存条目及其用于相似度搜索的嵌入向量。以下是数据模型及相关类的详细视图。

classDiagram
    class Text2SQLCache {
        +int id
        +string nl_query
        +string template
        +string template_type
        +list vector_embedding
        +bool is_template
        +dict entity_replacements
        +string reasoning_trace
        +list tags
        +string suggested_visualization
        +string database_name
        +string schema_name
        +int catalog_id
        +bool is_valid
        +string invalidation_reason
        +datetime created_at
        +datetime updated_at
        +np.ndarray embedding()
        +dict to_dict()
        +classmethod from_dict(dict)
    }
    
    class UsageLog {
        +int id
        +int cache_entry_id
        +datetime timestamp
    }
    
    class TemplateType {
        <<enumeration>>
        SQL
        URL
        API
        WORKFLOW
    }
    
    class Text2SQLController {
        -Session session
        -Text2SQLSimilarity similarity_util
        +add_query()
        +search_query()
        +get_query_by_id()
        +update_query()
        +invalidate_query()
        +delete_query()
        +apply_entity_substitution()
    }
    
    class Text2SQLSimilarity {
        -dict _model_cache
        -SentenceTransformer model
        +get_embedding()
        +compute_string_similarity()
        +compute_cosine_similarity()
        +batch_compute_similarity()
    }
    
    class Text2SQLEntitySubstitution {
        +extract_placeholders()
        +extract_entities()
        +apply_substitution()
        +apply_sql_substitution()
        +apply_url_substitution()
        +apply_api_substitution()
    }
    
    Text2SQLCache --o TemplateType
    UsageLog --> Text2SQLCache
    Text2SQLController --> Text2SQLCache : manages
    Text2SQLController --> Text2SQLSimilarity : uses
    Text2SQLController --> Text2SQLEntitySubstitution : uses
    note for Text2SQLCache "Stores natural language queries and their structured templates with embeddings for similarity search"

框架架构

该框架由用于管理缓存条目和执行相似度搜索的后端服务,以及用于用户交互的前端组成。以下是各组件及其交互过程的详细流程图。

flowchart TD
    %% Main Flow
    Client(Client Application) -->|NL Query Request| FastAPI[FastAPI Backend]
    FastAPI -->|/v1/complete| NLQueryHandler[NL Query Handler]
    
    %% Core ThinkForge Components
    subgraph "ThinkForge"
        NLQueryHandler -->|Check Cache| Controller[Text2SQLController]
        Controller -->|Search Query| SimilarityUtil[Text2SQLSimilarity]
        Controller -->|CRUD Operations| DBModels[Database Models]
        Controller -->|Entity Handling| EntitySub[Text2SQLEntitySubstitution]
        
        %% Similarity Component
        SimilarityUtil -->|Vector Embeddings| SentenceTransformer[Sentence Transformer]
        SimilarityUtil -->|String Similarity| SequenceMatcher[Sequence Matcher]
        
        %% Entity Substitution Component
        EntitySub -->|Extract Placeholders| Templates[(Templates)]
        EntitySub -->|Extract Entities| NLQuery[(NL Queries)]
        EntitySub -->|Apply Substitution| CompletedTemplate[(Completed Templates)]
    end
    
    %% Database
    subgraph "Database"
        DBModels -->|Store/Retrieve| CacheEntries[(Text2SQLCache)]
        DBModels -->|Log Usage| UsageLog[(UsageLog)]
    end
    
    %% Response Paths
    NLQueryHandler -->|Cache Hit| CacheHitResponse[Cache Hit Response]
    NLQueryHandler -->|Cache Miss| CacheMissResponse[Cache Miss Response]
    
    CacheHitResponse --> ResponseToClient[Response to Client]
    CacheMissResponse --> ResponseToClient
    
    %% Other API Endpoints
    FastAPI -->|/v1/cache| CacheManagement[Cache Management]
    CacheManagement -->|CRUD Operations| Controller
    
    %% API Routes Legend
    classDef apiEndpoint fill:#f9f,stroke:#333,stroke-width:2px;
    class FastAPI,CacheManagement,NLQueryHandler apiEndpoint;
    
    %% Component Legend
    classDef framework fill:#bbf,stroke:#333,stroke-width:1px;
    class Controller,SimilarityUtil,EntitySub,DBModels framework;
    
    %% Database Legend
    classDef db fill:#bfb,stroke:#333,stroke-width:1px;
    class CacheEntries,UsageLog db;

时序流程

下方的时序图展示了用户查询在系统中的流程,从输入到检索或生成响应。

sequenceDiagram
    participant U as User
    participant F as Frontend
    participant B as Backend API
    participant C as Controller
    participant S as Similarity Search
    participant D as Database
    participant L as LLM Service
    U->>F: Enter NL Query
    F->>B: Send Query Request
    B->>C: Process Request
    C->>S: Perform Similarity Search
    S->>D: Retrieve Cached Entries
    alt Match Found
        D-->>S: Return Matching Entry
        S-->>C: Return Template
        C-->>B: Return Response
        B-->>F: Display Result
        F-->>U: Show Structured Output
    else No Match
        D-->>S: No Relevant Entry
        S-->>C: No Match
        C->>L: Generate New Template
        L-->>C: Return Generated Template
        C->>D: Cache New Entry with Embedding
        D-->>C: Confirm Storage
        C-->>B: Return Response
        B-->>F: Display Result
        F-->>U: Show Structured Output
    end

技术实现

该框架使用以下技术实现:

  • 后端:

    • 使用 FastAPI 构建 REST API
    • 使用 SQLAlchemy 作为数据库 ORM
    • 使用 Sentence-Transformers 生成向量嵌入
    • 使用 PostgreSQL 和 pgvector 进行向量存储和相似度搜索
    • 集成大模型以生成模板(支持多个提供商)
  • 前端:

    • 使用 Next.js 和 React
    • 使用 Tailwind CSS 进行样式设计
    • 使用 ReactFlow 可视化工作流
    • 使用 Radix UI 组件

安装

要在本地设置 ThinkForge,请按以下步骤操作:

  1. 克隆代码库:

    git clone https://github.com/rnednur/thinkforge.git
    cd thinkforge
    
  2. 设置后端:

    • 进入 backend 目录。
    • 安装依赖:
      pip install -r requirements.txt
      
    • 运行 dbscripts 中的初始化脚本来设置数据库。
    • 启动后端服务:
      python app.py
      
  3. 设置前端:

    • 进入 frontend 目录。
    • 安装依赖:
      npm install
      
    • 启动前端开发服务:
      npm run dev
      
    • 也可以从根目录启动前端:
      npm run dev
      
  4. Docker 设置:

    • 也可以使用 Docker Compose 设置整个技术栈:
      docker-compose up
      
  5. 环境配置:

    • 确保设置了数据库连接和模型配置所需的环境变量。所需变量请参阅 .env.example。

使用方法

  • 访问应用:打开浏览器并访问 http://localhost:3000(或前端服务指定的端口),即可与界面交互。
  • 缓存管理:在 /cache-entries 下使用仪表板查看、创建、编辑或删除缓存条目。
  • 查询测试:在 /complete-test 测试自然语言查询,查看匹配或生成的结构化输出。
  • 批量导入:使用 CSV 导入功能,从 CSV 文件批量加载缓存条目。

API 参考

ThinkForge API 提供以下端点:

  • POST /v1/complete:处理自然语言查询并返回匹配的结构化输出
  • GET /v1/cache:列出所有缓存条目
  • POST /v1/cache:创建新的缓存条目
  • GET /v1/cache/{id}:获取指定的缓存条目
  • PUT /v1/cache/{id}:更新缓存条目
  • DELETE /v1/cache/{id}:删除缓存条目
  • POST /v1/cache/import:从 CSV 导入缓存条目
  • GET /v1/cache/stats:获取缓存条目的使用统计信息

未来增强功能

我们为 ThinkForge 框架规划了多项未来增强功能:

  • 使用命名实体识别模型进行高级实体提取
  • 模板版本控制和历史记录
  • 用于性能监控的分析仪表板
  • 用于改进模板的主动学习管道
  • 优化模板以提升性能
  • 高级安全功能
  • 工作流编排能力
  • API 网关集成
  • 模板发现和推荐系统
  • 数据库架构推断
  • 针对特定领域应用的大模型微调
  • 边缘部署支持
  • 可解释性功能
  • 用于连接各种数据库和服务的集成连接器

完整的计划增强功能列表,请参阅 future_enhancements.md 文件。

贡献

欢迎贡献!请按照以下步骤参与贡献:

  1. Fork 此仓库。
  2. 为你的功能或错误修复创建一个新分支。
  3. 进行更改,并使用描述性提交信息提交。
  4. 将更改推送到你的 fork。
  5. 向主仓库提交 pull request,并详细说明你的更改。

许可证

本项目采用 MIT 许可证授权,详情请参阅 LICENSE 文件。

联系方式

如有疑问或需要支持,请通过 [维护者的电子邮件或 GitHub 个人资料] 联系项目维护者。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。