mcpField
N
NL Cache Framework

NL Cache Framework

ローカル
github.com/rnednur開発ツール072 週間前に更新

NL Cache Framework について

ThinkForgeは、自然言語クエリをキャッシュし、SQL、API呼び出し、URLなどの構造化出力を返すフレームワークです。埋め込みによる類似検索やエンティティ置換を備え、ダッシュボードで項目を管理・テストできます。

主な機能

  1. 01埋め込みによる類似検索
  2. 02SQL、API、URL、ワークフローのテンプレート
  3. 03エンティティ抽出と置換
  4. 04REST CRUD APIとダッシュボード
  5. 05CSVインポートと利用統計

活用シーン

  1. 01類似する自然言語クエリで構造化出力を再利用
  2. 02キャッシュ済みテンプレートの管理とテスト
  3. 03CSVからキャッシュ項目を一括登録

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

技術的な実装

このフレームワークは、以下のテクノロジーを使用して実装されています。

  • バックエンド:

    • REST API に FastAPI を使用
    • データベース ORM に SQLAlchemy を使用
    • ベクトル埋め込みに Sentence-Transformers を使用
    • ベクトルの保存と類似検索に pgvector を備えた PostgreSQL を使用
    • テンプレート生成に LLM を統合(複数のプロバイダーに対応)
  • フロントエンド:

    • React を備えた Next.js
    • スタイリングに 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(またはフロントエンドサーバーで指定されているポート)に移動して、UI を操作します。
  • キャッシュの管理:ダッシュボードの /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. リポジトリをフォークします。
  2. 機能追加またはバグ修正用のブランチを新しく作成します。
  3. 変更を加え、内容が分かりやすいメッセージを添えてコミットします。
  4. 変更をフォークしたリポジトリにプッシュします。
  5. 変更内容の詳しい説明を添えて、メインリポジトリにプルリクエストを送信します。

ライセンス

このプロジェクトは MIT ライセンスの下でライセンスされています。詳細については、LICENSE ファイルを参照してください。

お問い合わせ

ご質問やサポートが必要な場合は、プロジェクトのメンテナーまでご連絡ください:[maintainer's email or GitHub profile]。

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。