跳至主要內容

Cube Semantic Layer

此筆記本演示了檢索 Cube 的數據模型元數據的過程,格式適合作為嵌入傳遞給 LLM,從而增強上下文信息。

關於 Cube

Cube 是用於建構數據應用程式的語義層。 它可以幫助數據工程師和應用程式開發人員從現代數據儲存庫訪問數據,將其組織成一致的定義,並將其交付給每個應用程式。

Cube 的數據模型提供結構和定義,這些結構和定義被用作 LLM 理解數據和生成正確查詢的上下文。 LLM 不需要導航複雜的聯結和指標計算,因為 Cube 抽象了這些,並提供了一個簡單的介面,該介面在業務級術語上運行,而不是 SQL 表和列名。 這種簡化有助於 LLM 減少出錯並避免幻覺。

範例

輸入參數 (必填)

Cube Semantic Loader 需要 2 個參數

  • cube_api_url:Cube 部署 REST API 的 URL。 請參閱 Cube 文件,以取得有關配置基本路徑的更多資訊。

  • cube_api_token:根據 Cube 的 API 密碼生成的身份驗證令牌。 請參閱 Cube 文件,以取得有關生成 JSON Web Tokens (JWT) 的說明。

輸入參數 (選填)

  • load_dimension_values:是否為每個字符串維度載入維度值。

  • dimension_values_limit:要載入的維度值的最大數量。

  • dimension_values_max_retries:載入維度值的最大重試次數。

  • dimension_values_retry_delay:載入維度值的重試間隔。

import jwt
from langchain_community.document_loaders import CubeSemanticLoader

api_url = "https://api-example.gcp-us-central1.cubecloudapp.dev/cubejs-api/v1/meta"
cubejs_api_secret = "api-secret-here"
security_context = {}
# Read more about security context here: https://cube.dev/docs/security
api_token = jwt.encode(security_context, cubejs_api_secret, algorithm="HS256")

loader = CubeSemanticLoader(api_url, api_token)

documents = loader.load()
API 參考文檔:CubeSemanticLoader

返回具有以下屬性的文檔列表

  • page_content (頁面內容)
  • metadata (元數據)
    • table_name (表名)
    • column_name (列名)
    • column_data_type (列數據類型)
    • column_title (列標題)
    • column_description (列描述)
    • column_values (列值)
    • cube_data_obj_type (Cube 數據物件類型)
# Given string containing page content
page_content = "Users View City, None"

# Given dictionary containing metadata
metadata = {
"table_name": "users_view",
"column_name": "users_view.city",
"column_data_type": "string",
"column_title": "Users View City",
"column_description": "None",
"column_member_type": "dimension",
"column_values": [
"Austin",
"Chicago",
"Los Angeles",
"Mountain View",
"New York",
"Palo Alto",
"San Francisco",
"Seattle",
],
"cube_data_obj_type": "view",
}

此頁面是否有幫助?