NL Cache Framework について
ThinkForgeは、自然言語クエリをキャッシュし、SQL、API呼び出し、URLなどの構造化出力を返すフレームワークです。埋め込みによる類似検索やエンティティ置換を備え、ダッシュボードで項目を管理・テストできます。
主な機能
- 01埋め込みによる類似検索
- 02SQL、API、URL、ワークフローのテンプレート
- 03エンティティ抽出と置換
- 04REST CRUD APIとダッシュボード
- 05CSVインポートと利用統計
活用シーン
- 01類似する自然言語クエリで構造化出力を再利用
- 02キャッシュ済みテンプレートの管理とテスト
- 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 をローカルにセットアップするには、以下の手順に従ってください。
-
リポジトリをクローン:
git clone https://github.com/rnednur/thinkforge.git cd thinkforge -
バックエンドのセットアップ:
backendディレクトリに移動します。- 依存関係をインストールします。
pip install -r requirements.txt dbscripts内の初期化スクリプトを実行して、データベースをセットアップします。- バックエンドサーバーを起動します。
python app.py
-
フロントエンドのセットアップ:
frontendディレクトリに移動します。- 依存関係をインストールします。
npm install - フロントエンドの開発サーバーを起動します。
npm run dev - または、ルートディレクトリからフロントエンドを起動できます。
npm run dev
-
Docker のセットアップ:
- Docker Compose を使用して、スタック全体をセットアップすることもできます。
docker-compose up
- Docker Compose を使用して、スタック全体をセットアップすることもできます。
-
環境設定:
- データベース接続とモデル設定に必要な環境変数が設定されていることを確認してください。必要な変数については
.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 ファイルを参照してください。
貢献
貢献を歓迎します!貢献する際は、次の手順に従ってください。
- リポジトリをフォークします。
- 機能追加またはバグ修正用のブランチを新しく作成します。
- 変更を加え、内容が分かりやすいメッセージを添えてコミットします。
- 変更をフォークしたリポジトリにプッシュします。
- 変更内容の詳しい説明を添えて、メインリポジトリにプルリクエストを送信します。
ライセンス
このプロジェクトは MIT ライセンスの下でライセンスされています。詳細については、LICENSE ファイルを参照してください。
お問い合わせ
ご質問やサポートが必要な場合は、プロジェクトのメンテナーまでご連絡ください:[maintainer's email or GitHub profile]。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。