Cortex Analyst 응답을 강화하기 위해 리터럴 검색을 향상합니다.¶
이 항목에서는 Cortex Analyst가 더 정확한 SQL 쿼리를 생성할 수 있도록 리터럴 문자열 검색을 개선하는 방법에 대해 설명합니다. 질문에 답하기 위해 올바른 SQL 쿼리를 작성하려면 필터링할 정확한 리터럴 값을 알아야 하는 경우가 있습니다. 이러한 값은 항상 질문에서 직접 추출할 수 있는 것은 아니므로 어떤 종류의 검색이 필요할 수 있습니다.
예를 들어, 사용자가 다음과 같은 질문을 하는 경우:
What was my overall sales of iced tea in Q1?
다음 쿼리를 시도해 보십시오.
SELECT DISTINCT name FROM product WHERE name LIKE '%iced%tea%'
이 과정을 직접 겪어본 적이 있다면 이것이 완벽한 해결책이 아니라는 것을 알 것입니다. 예를 들어, 이 쿼리는 “Ice Tea”라는 이름의 제품을 보여주지 않지만, “spiced tea”라는 이름의 제품은 보여줍니다.
Cortex Analyst는 리터럴 사용을 개선하는 데 도움이 되는 다음과 같은 두 가지 해결 방법을 제공합니다.
사용자의 의미 체계 모델 에서 제공된 샘플 값에 대한 의미 체계 검색
Cortex Search Services 를 사용한 의미 체계 검색.
이때 Cortex Search와 통합하면 도움이 될 수 있습니다. Cortex Search 는 텍스트 데이터에 대해 지연 시간이 짧고 고품질의 “퍼지” 검색을 지원하는 기능입니다. 사용자는 Cortex Search 서비스를 생성하여 기본 데이터베이스 열에 대한 의미 체계 검색을 수행함으로써, Cortex Analyst가 사용자의 질문에 답하는 SQL 쿼리에 사용할 모든 리터럴 값을 찾을 수 있습니다.
샘플 값에 대한 의미 체계 검색¶
카디널리티가 상대적으로 낮은 차원(약 1~10개의 고유 값)의 경우, 차원에 대한 응답의 구조를 보여줄 수 있는 충분한 샘플 값을 지정하여 샘플 값 검색을 사용하는 것이 좋습니다. 이 해결 방법은 의미 체계 모델 크기를 최소한으로 늘리는 것 외에는 추가 저장소가 필요하지 않습니다.
Cortex Analyst는 질문에 대한 SQL 쿼리를 생성하기 전에 질문과 제공된 샘플 값 간의 의미 체계 유사성 검색을 수행하여 쿼리를 작성하는 데 필요할 수 있는 적절한 리터럴 값을 식별합니다. 의미 체계 유사성 검색은 위에서 언급한 퍼지 문자열 매칭 쿼리 방식보다 더 관련성이 높은 리터럴을 검색할 수 있습니다.
검색된 샘플 값의 고정된 크기 세트만 LLM에 리터럴로 제공되며, 이 리터럴은 SQL 쿼리를 작성하는 데 필요할 수 있습니다. 즉, 샘플 값을 더 추가해도 LLM의 컨텍스트 윈도우를 초과할 위험이 없습니다.
Cortex Search Service를 사용한 의미 체계 검색¶
카디널리티가 높은 차원(고유 값이 10개 초과)이나 값이 자주 변경되는 차원의 경우 Cortex Search Service를 사용하여 리터럴을 검색할 수 있습니다. 이 해결 방법은 데이터 중복을 줄이고 의미 체계 모델을 간결하게 유지합니다.
참고
Cortex Search Services를 사용하면 추가 저장 공간 및 컴퓨팅 비용이 발생합니다. 자세한 내용은 비용 고려 사항 섹션을 참조하십시오.
이 미리 보기에서는 논리적 차원당 1개의 Cortex Search Service만 지원됩니다.
Cortex Search Service 설정하기¶
다음 단계에서는 Cortex Analyst 의미 체계 모델에서 논리적 차원에 대한 Cortex Search Service를 설정하는 방법을 보여줍니다.
동적 테이블 만들기
USE DATABASE my_database; USE SCHEMA my_schema; CREATE OR REPLACE DYNAMIC TABLE my_logical_dimension_landing_table WAREHOUSE = xsmall TARGET_LAG = '1 hour' AS ( SELECT DISTINCT my_column AS my_dimension FROM my_table );
참고
여기서 동적 테이블을 사용하는 이유는 DISTINCT가 현재 Cortex Search Service에서 제대로 지원되지 않기 때문입니다. 사용자의 사용 사례에 더 적합하다면 구체화된 뷰를 사용할 수도 있습니다. 동적 테이블과 구체화된 뷰의 비교는 뷰, 구체화된 뷰, 동적 테이블 섹션을 참조하십시오.
Cortex Search Service 만들기
CREATE OR REPLACE CORTEX SEARCH SERVICE my_logical_dimension_search_service ON my_dimension WAREHOUSE = xsmall TARGET_LAG = '1 hour' AS ( SELECT my_dimension FROM my_logical_dimension_landing_table );`
Cortex Search Service 요구 사항
이 서비스는 논리적 차원과 이름이 동일한 열에 인덱싱되어야 합니다.
검색 서비스의 데이터베이스와 스키마는 차원이 포함된 물리적 테이블이나 뷰의 데이터베이스와 스키마와 일치해야 합니다.
다음 yaml 스니펫을 사용하여 의미 체계 모델에 Cortex Search Service를 포함시킵니다.
tables: - name: my_table base_table: database: my_database schema: my_schema table: my_table dimensions: - name: my_dimension expr: my_column cortex_search_service_name: my_logical_dimension_search_service