Skip to main content

Cube语义层 (Cube Semantic Layer)

这个笔记本演示了以适合传递给LLMs作为嵌入的格式检索Cube的数据模型元数据的过程,从而增强上下文信息。

关于Cube

Cube是用于构建数据应用程序的语义层。它帮助数据工程师和应用程序开发人员从现代数据存储中访问数据,将其组织成一致的定义,并将其传递给每个应用程序。

Cube的数据模型提供了用作LLM理解数据并生成正确查询的上下文的结构和定义。LLM无需导航复杂的连接和度量计算,因为Cube将其抽象出来,并提供了一个简单的接口,该接口在业务级术语上操作,而不是SQL表和列名。这种简化有助于LLM减少错误并避免幻觉。

示例

输入参数(必填)

Cube语义加载器需要2个参数:

  • cube_api_url:Cube部署的REST API的URL。有关配置基本路径的更多信息,请参阅Cube文档

  • cube_api_token:基于Cube的API密钥生成的身份验证令牌。有关生成JSON Web Tokens(JWT)的说明,请参阅Cube文档

输入参数(可选)

  • load_dimension_values:是否加载每个字符串维度的维度值。

  • dimension_values_limit:要加载的维度值的最大数量。

  • dimension_values_max_retries:加载维度值的最大重试次数。

  • dimension_values_retry_delay:加载维度值之间的延迟。

import jwt
from langchain.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 = {}
# 有关安全上下文的更多信息,请阅读: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()

返回一个具有以下属性的文档列表:

  • page_content
  • metadata
    • table_name
    • column_name
    • column_data_type
    • column_title
    • column_description
    • column_values

page_content='Users View City, None' 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']}