SEARCH SEMANTIC VIEW
通过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。典型流程如下:
语义检索:AI Agent通过
sv_similar_search()搜索与用户问题相关的语义视图。获取定义:从
definition列提取维度、指标、关系等语义信息。生成查询:基于语义定义生成准确的语义SQL(需添加Hint
/*+ enable_semantic=true, rewrite=true */)。执行分析:执行查询并对结果进行分析,返回业务洞察。
-- 步骤 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';