SEARCH SEMANTIC VIEW

更新时间:
复制 MD 格式

通过information_schema.semantic_views系统表查询和检索语义视图的元数据信息。支持精确匹配查询和基于自然语言的向量相似度搜索两种方式。

说明

所有语义视图相关的SQL语句均需添加Hint /*+ enable_semantic=true */,否则系统将无法识别语义视图语法。

查询方式对比

方式

查询类型

匹配方式

适用场景

精确查询

标准SQL WHERE

列值精确匹配

按名称或Schema查找

sv_similar_search

函数调用

向量相似度搜索

AI Agent自然语言检索

方式一:精确查询

通过标准SQL WHERE条件对列值进行精确匹配,按名称或Schema查找语义视图。

语法

/*+ enable_semantic=true */
SELECT view_schema, view_name, definition
FROM information_schema.semantic_views
[WHERE view_schema='...' AND view_name='...'];

列说明

列名

说明

view_schema

语义视图所属的数据库名称。

view_name

语义视图的名称。

definition

语义视图的完整定义内容(YAML格式),包含逻辑表、维度、指标、事实、关系等全部语义定义。

方式二:自然语言搜索

通过sv_similar_search函数进行基于向量相似度的自然语言搜索,根据业务描述查找语义最相近的视图。

sv_similar_search(definition, search_text, top_k) 自然语言相似度搜索函数,基于向量距离返回与搜索文本语义最接近的语义视图。

语法

/*+ enable_semantic=true */
SELECT view_schema, view_name, definition
FROM information_schema.semantic_views
WHERE sv_similar_search(definition, '<search_text>', <top_k>);

参数说明

参数

说明

definition

固定参数,指定搜索的目标列。

search_text

必填。自然语言搜索文本,例如'销售额和利润分析'。系统会将该文本转为向量,并在向量索引中检索最相似的结果。

top_k

必填。返回的最相似结果数量,正整数。结果按相似度从高到低排序。

AI Agent问数典型流程

建议AI Agent使用自然语言搜索定位语义视图,再基于定义生成查询SQL。典型流程如下:

  1. 语义检索:AI Agent通过sv_similar_search()搜索与用户问题相关的语义视图。

  2. 获取定义:从definition列提取维度、指标、关系等语义信息。

  3. 生成查询:基于语义定义生成准确的语义SQL(需添加Hint /*+ enable_semantic=true, rewrite=true */)。

  4. 执行分析:执行查询并对结果进行分析,返回业务洞察。

-- 步骤 1:搜索相关语义视图(元数据查询,使用 enable_semantic=true)
/*+ enable_semantic=true */
SELECT view_schema, view_name, definition
FROM information_schema.semantic_views
WHERE sv_similar_search(definition, '各区域的销售总额', 1);

-- 步骤 2-3:基于返回的语义定义生成查询(语义查询,使用 rewrite=true)
/*+ enable_semantic=true, rewrite=true */
SELECT region, AGG(total_revenue)
FROM sales_analysis
GROUP BY region;

注意事项

  • 向量相似度搜索依赖Embedding服务。服务不可用时,sv_similar_search() 和 Hint 方式均可能失败。可改用精确查询方式。

  • 向量索引在语义视图创建和修改时自动更新,DDL完成后即可立即检索。

  • 搜索结果按相似度从高到低排序。

示例

  • 列出所有语义视图。

    /*+ enable_semantic=true */
    SELECT view_schema, view_name, definition
    FROM information_schema.semantic_views;
  • 通过自然语言搜索与"北京市场的销售额和利润"相关的语义视图,返回相似度最高的3个结果。

    /*+ enable_semantic=true */
    SELECT view_schema, view_name, definition
    FROM information_schema.semantic_views
    WHERE sv_similar_search(definition, '北京市场的销售额和利润', 3);
  • 查看指定语义视图的完整定义。

    /*+ enable_semantic=true */
    SELECT view_schema, view_name, definition
    FROM information_schema.semantic_views
    WHERE view_schema='analytics' AND view_name='sales_analysis';