Intugle MCP

公式

データエンジニアリングエージェントを使用して自動化されたセマンティックモデルを生成し、オンデマンドでデータプロダクトを構築します

Intugle MCPで何ができますか?

  • データソースのプロファイルと分類 — CSV、Parquet、Excel、またはデータベーステーブルを分析し、SemanticModel.build() を使用して構造、データ型、特性を把握します。
  • テーブル間のリンクと関係性を発見 — 断片化されたデータセット間の主キー/外部キーや複合関係を自動的に特定します。
  • ビジネス用語集を生成 — データ列やテーブルに対してビジネス向けの用語を作成し、自然言語クエリを可能にします。
  • データを意味的に検索SemanticModel.search() を使用して、自然言語(例:「病院受診の理由」)で関連する列を見つけます。
  • 統合データプロダクトを構築 — テーブル間でフィールドを定義し、DataProduct.build() が必要な結合と集計を含むSQLを自動生成できるようにします。
  • セマンティックレイヤーをAIアシスタントに公開 — 組み込みのMCPサーバーを intugle-mcp で起動し、エージェントが get_tablesget_schema を介してデータ構造を探索できるようにします。

ドキュメント

Intugle Logo

自動データインテリジェンスのためのGenAI搭載ツールキット。

PyPI Downloads Release Made with Python contributions - welcome License: Apache 2.0 Open Issues

断片化されたデータを、つながりのあるセマンティックデータモデルへ変換

概要

IntugleのGenAI搭載オープンソースPythonライブラリは、既存のデータシステム上にセマンティックデータモデルを構築します。その中核となるのは、データ資産全体にわたる意味のあるリンクと関係性を発見し、プロファイル、分類、ビジネス用語集でそれらを強化することです。このつながりのある知識レイヤーにより、セマンティック検索やクエリの自動生成が可能になり、統合されたデータプロダクトを作成できるため、データ統合と探索がより速く、より正確に、そして手作業を大幅に削減します。

intugle-architecture

対象ユーザー

  • データエンジニアとアーキテクトは、断片化されたデータ資産のプロファイリング、分類、結合に何週間も手作業で費やすことがよくあります。Intugleを使用すると、このプロセスをエンドツーエンドで自動化し、意味のあるリンクと関係性を発見して、つながりのあるセマンティックレイヤーを即座に生成できます。
  • データアナリストとデータサイエンティストは、実際の分析を開始する前のデータ準備と前処理に膨大な時間を費やしています。Intugleは、コンテキストインテリジェンスを提供し、関係性とビジネス上の意味で強化されたSQLと再利用可能なデータプロダクトを自動生成することで、これを加速します。
  • ビジネスアナリストと意思決定者は、回答を得るために技術チームに常に依存することで遅延が生じます。Intugleは、自然言語クエリとセマンティック検索を可能にすることでこのボトルネックを取り除き、信頼できるインサイトをオンデマンドで提供します。

機能

  • セマンティックデータモデル - 生の断片化されたデータセットを、エンティティ、関係性、コンテキストを捉えたインテリジェントなセマンティックグラフに変換します。これは、つながりのあるインテリジェンスの基盤です。
  • ビジネス用語集とセマンティック検索: ビジネス用語集を自動生成し、キーワードだけでなく意味を理解する検索を可能にすることで、技術ユーザーとビジネスユーザーの両方にとってデータをよりアクセスしやすくします。
  • データプロダクト - コンテキストで強化されたSQLと再利用可能なデータプロダクトを即座に生成し、手動パイプラインを排除してデータからインサイトまでの時間を短縮します。
  • コンセプト検索 - 自然言語クエリからデータプロダクト計画を生成し、ビジネス上の質問と実行可能なデータプロダクト定義の間のギャップを埋めます。詳細はドキュメントをご覧ください。

サポートされている統合

カテゴリ統合
データウェアハウスSnowflake, Databricks
データベースSQLite, PostgreSQL, SQL Server, MySQL
ローカルPandas, DuckDB (CSV, Parquet, Excel)

Streamlitアプリ

intugleライブラリには、セマンティックデータモデルの構築と可視化のためのインタラクティブなWebインターフェースを提供するStreamlitアプリケーションが含まれています。

https://github.com/user-attachments/assets/402c3f3d-baf3-4ece-ba55-4e06437defc5

Streamlitアプリを使用するには、intuglestreamlitエクストラ付きでインストールします。

pip install intugle[streamlit]

Streamlitアプリケーションは、intugle-mcpコマンドまたはuvxを使用して起動できます。

intugle-streamlit
# Or using uvx
uvx --from intugle[streamlit] intugle-streamlit

ターミナルに表示されたURL(通常はhttp://localhost:8501)を開いてアプリケーションにアクセスします。詳細については、Streamlitアプリのドキュメントを参照してください。

Google Colabなどのクラウド環境でアプリを実行するには、Streamlitクイックスタートノートブックを参照してください。

はじめに

インストール

WindowsとLinuxの場合は、以下の手順に従ってください。macOSの場合は、下記のmacOSセクションの追加手順を参照してください。

インストール前に、仮想環境を作成することをお勧めします。

python -m venv .venv
source .venv/bin/activate

次に、パッケージをインストールします。

pip install intugle

macOS

macOSユーザーは、libompライブラリをインストールする必要がある場合があります。

brew install libomp

python.orgの公式インストーラーを使用してPythonをインストールした場合は、ターミナルで次のコマンドを実行してSSL証明書をインストールする必要がある場合もあります。3.XXは、特定のPythonバージョンに置き換えてください。Homebrewを使用してPythonをインストールした場合、この手順は不要です。

/Applications/Python\ 3.XX/Install\ Certificates.command

設定

プロジェクトを実行する前に、LLMを設定する必要があります。これは、ビジネス用語集の生成やテーブル間のリンク予測などのタスクに使用されます。

LLMは、次の環境変数を設定することで構成できます。

  • LLM_PROVIDER: 使用するLLMプロバイダーとモデル(例:openai:gpt-3.5-turbo)。LangChainの規則に従います。
  • API_KEY: LLMプロバイダーのAPIキー。変数の正確な名前はプロバイダーによって異なる場合があります。

これらの変数を環境に設定する方法の例を次に示します。

export LLM_PROVIDER="openai:gpt-3.5-turbo"
export OPENAI_API_KEY="your-openai-api-key"

クイックスタート

プロジェクトの詳細なハンズオンイントロダクションについては、クイックスタートノートブックを参照してください。

ドメインノートブックColabで開く
ヘルスケアquickstart_healthcare.ipynbColab
テクノロジー製造quickstart_tech_manufacturing.ipynbColab
FMCGquickstart_fmcg.ipynbColab
スポーツメディアquickstart_sports_media.ipynbColab
Databricks Unity Catalog [ヘルスケア]quickstart_healthcare_databricks.ipynbDatabricksノートブックのみ
Snowflake Horizon Catalog [ FMCG ]quickstart_fmcg_snowflake.ipynbSnowflakeノートブックのみ
Cortex Analystを使用したネイティブSnowflake [ テクノロジー製造 ]quickstart_native_snowflake.ipynbColab
AI/BI Genieを使用したネイティブDatabricks [ テクノロジー製造 ]quickstart_native_databricks.ipynbColab
Streamlitアプリquickstart_streamlit.ipynbColab
コンセプト検索quickstart_conceptual_search.ipynbColab
複合関係予測quickstart_basketball_composite_links.ipynbColab

これらのデータセットを使用して、次の手順を実行します。

  • セマンティックモデルの生成 → 断片化されたデータセットを変換し、つながりのあるインテリジェンスの基盤を作成する統合レイヤー。
    • 1.1 データのプロファイリングと分類 → データソースを分析して、その構造、データ型、その他の特性を理解します。
    • 1.2 データ間のリンクと関係性の発見 → 断片化されたテーブル全体で、複合キーを含む意味のあるつながり(PKとFK)を明らかにします。
    • 1.3 ビジネス用語集の生成 → ビジネスフレンドリーな用語を作成し、それらを使用してコンテキスト付きでデータをクエリします。
    • 1.4 セマンティック検索の有効化 → キーワードだけでなく意味を理解するインテリジェントな検索により、技術ユーザーとビジネスユーザーの両方にとってデータをよりアクセスしやすくします。
    • 1.5 セマンティックモデルの可視化 → セマンティックレイヤーの強化されたメタデータにYAMLファイルの形式でアクセスし、グラフ形式で可視化します。
  • 統合データプロダクトの構築 → データテーブル全体から属性を選択するだけで、ツールキットがセマンティックレイヤーを使用して、必要なすべての結合、変換、集計を含むクエリを自動生成します。実行すると、これらのクエリは再利用可能なデータプロダクトを生成します。

ドキュメント

詳細情報、高度な使用方法、チュートリアルについては、完全なドキュメントサイトを参照してください。

使用方法

プロジェクトのコアワークフローは、SemanticModelを使用してセマンティックレイヤーを構築し、次にDataProductを使用してそのレイヤーからデータプロダクトを生成することです。

from intugle import SemanticModel

# Define your datasets
datasets = {
    "allergies": {"path": "path/to/allergies.csv", "type": "csv"},
    "patients": {"path": "path/to/patients.csv", "type": "csv"},
    "claims": {"path": "path/to/claims.csv", "type": "csv"},
    # ... add other datasets
}

# Build the semantic model
sm = SemanticModel(datasets, domain="Healthcare")
sm.build()

# Access the profiling results
print(sm.profiling_df.head())

# Access the discovered links
print(sm.links_df)

詳細なコード例と完全なウォークスルーについては、クイックスタートノートブックを参照してください。

データプロダクト

セマンティックモデルが構築されたら、DataProductクラスを使用して、セマンティックレイヤーから統合データプロダクトを生成できます。

from intugle import DataProduct

# Define an ETL model
etl = {
  "name": "top_patients_by_claim_count",
  "fields": [
    {
      "id": "patients.first",
      "name": "first_name",
    },
    {
      "id": "patients.last",
      "name": "last_name",
    },
    {
      "id": "claims.id",
      "name": "number_of_claims",
      "category": "measure",
      "measure_func": "count"
    }
  ],
  "filter": {
    "sort_by": [
      {
        "id": "claims.id",
        "alias": "number_of_claims",
        "direction": "desc"
      }
    ],
    "limit": 10
  }
}

# Create a DataProduct and build it
dp = DataProduct()
data_product = dp.build(etl)

# View the data product as a DataFrame
print(data_product.to_df())

セマンティック検索

セマンティック検索機能を使用すると、自然言語を使用してデータセット内の列を検索できます。これは、Qdrantベクターデータベース上に構築されています。

完全なセットアップ手順(Dockerコマンドと環境変数を含む)については、セマンティック検索ドキュメントを参照してください。

使用方法

セマンティックモデルを構築したら、searchメソッドを使用してセマンティック検索を実行できます。検索関数は、列のプロファイリングメトリクス、カテゴリ、テーブル名、テーブル用語集を含む検索結果をpandas DataFrameで返します。

from intugle import SemanticModel

# Define your datasets
datasets = {
    "allergies": {"path": "path/to/allergies.csv", "type": "csv"},
    "patients": {"path": "path/to/patients.csv", "type": "csv"},
    "claims": {"path": "path/to/claims.csv", "type": "csv"},
    # ... add other datasets
}

# Build the semantic model
sm = SemanticModel(datasets, domain="Healthcare")
sm.build()
# Perform a semantic search
search_results = sm.search("reason for hospital visit")

# View the search results
print(search_results)

詳細なコード例と完全なウォークスルーについては、クイックスタートノートブックを参照してください。

MCPサーバー

Intugleには、AIアシスタントやLLM搭載クライアントにセマンティックレイヤーを公開する組み込みのMCP(Model Context Protocol)サーバーが含まれています。その主な目的は、エージェントがget_tablesget_schemaなどのツールを使用してデータの構造を理解できるようにすることです。

セマンティックモデルが構築されたら、簡単なコマンドでサーバーを起動できます。

intugle-mcp

これにより、AIエージェントはプログラムでデータコンテキストと対話できるようになります。また、ライブラリを使用したVibeコーディングも可能になります。

サーバーのセットアップとお気に入りのクライアントの接続に関する詳細な手順については、完全なドキュメントを参照してください。

コミュニティ

質問したり、プロジェクトを共有したり、他のユーザーとつながるために、コミュニティに参加してください。

貢献

貢献を歓迎します!ガイドラインについては、CONTRIBUTING.mdファイルを参照してください。

ライセンス

このプロジェクトは、Apache License, Version 2.0の下でライセンスされています。詳細については、LICENSEファイルを参照してください。 サードパーティソフトウェアの通知は、NOTICEファイルで入手できます。