Intugle MCP Server

官方

使用資料工程代理自動生成語意模型,並按需建立資料產品

文件

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 函式庫包含一個 Streamlit 應用程式,提供用於建立和視覺化語意資料模型的互動式網頁介面。

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

要使用 Streamlit 應用程式,請安裝包含 streamlit 額外套件的 intugle

pip install intugle[streamlit]

您可以使用 intugle-mcp 指令或 uvx 來啟動 Streamlit 應用程式:

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

在您的終端機中開啟提供的網址(通常是 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
快速消費品 (FMCG)quickstart_fmcg.ipynbColab
體育媒體quickstart_sports_media.ipynbColab
Databricks Unity Catalog [醫療保健]quickstart_healthcare_databricks.ipynb僅限 Databricks 筆記本
Snowflake Horizon Catalog [快速消費品]quickstart_fmcg_snowflake.ipynb僅限 Snowflake 筆記本
原生 Snowflake 搭配 Cortex Analyst [科技製造業]quickstart_native_snowflake.ipynbColab
原生 Databricks 搭配 AI/BI Genie [科技製造業]quickstart_native_databricks.ipynbColab
Streamlit 應用程式quickstart_streamlit.ipynbColab
概念搜尋quickstart_conceptual_search.ipynbColab
複合關係預測quickstart_basketball_composite_links.ipynbColab

這些資料集將引導您完成以下步驟:

  • 生成語意模型 → 統一的層,用以轉換零散的資料集,為互聯智慧建立基礎。
    • 1.1 剖析和分類資料 → 分析您的資料來源,以了解其結構、資料型態和其他特徵。
    • 1.2 發掘資料之間的連結和關係 → 揭示跨零散資料表之間有意義的連結(主鍵和外鍵),包括複合鍵。
    • 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 包含一個內建的 MCP(模型上下文協定)伺服器,可將您的語意層公開給 AI 助理和 LLM 驅動的客戶端。其主要目的是讓代理程式能夠使用如 get_tablesget_schema 等工具來理解您的資料結構。

一旦您的語意模型建立完成,您就可以用一個簡單的指令啟動伺服器:

intugle-mcp

這使得 AI 代理程式能夠以程式設計方式與您的資料情境互動。這也實現了與該函式庫的「vibe coding」。

有關設定伺服器和連接您喜愛的客戶端的詳細說明,請參閱我們的完整文件

社群

加入我們的社群來提問、分享您的專案,並與其他使用者交流。

貢獻

歡迎貢獻!請參閱 CONTRIBUTING.md 檔案以了解指南。

授權

本專案採用 Apache License, Version 2.0 授權。詳情請參閱 LICENSE 檔案。 第三方軟體聲明可在 NOTICE 檔案中找到。