시맨틱 계층의 쿼리 생성 세그먼트
세그먼트는 비즈니스 용어를 특정 쿼리 필터에 매핑하여 의미 체계 계층이 자연어 질문을 정확한 데이터베이스 쿼리로 변환하는 데 도움이 되는 미리 정의된 필터 조건입니다.
세그먼트는 의미 체계 계층이 올바른 엔터티, 차원 및 값을 선택하는 데 도움이 되는 명확하지 않은 컨텍스트를 제공합니다. 예를 들어, "미해결 긴급 변경 요청 수는 몇 개입니까?"라는 발언에서 세그먼트는 "오픈"이 "활성=참"을 의미하고 "긴급"은 우선순위가 아닌 유형임을 식별합니다.
사용자가 질문을 하면 쿼리 생성 엔진은 일치하는 세그먼트를 검색하고 LLM 프롬프트에 해당 필터를 포함하므로 모델이 이를 재사용하여 정확한 쿼리를 구성할 수 있습니다.
세그먼트에는 두 가지 유형이 있습니다.
- 자동화된 세그먼트
- 보고서, 대시보드, 필터, 모듈 및 표시기 소스에서 시스템에서 생성됩니다. "Incidents.Open"과 같은 기술적인 이름인 경우가 많습니다.
- 수동 세그먼트
- 수동 세그먼트 구성 테이블을 통해 관리자가 생성합니다. 사용자 친화적인 이름입니다(예: "중요 오픈 인시던트"). 수동 세그먼트는 자동 동기화와 함께 2개의 테이블 데이터 모델을 사용하며 플러그인을 통해 애플리케이션과 함께 제공될 수 있습니다.
| 수동 세그먼트 | 자동화된 세그먼트 | |
|---|---|---|
| 작성자 | 관리자, 업데이트 세트를 통해 제공됨 | 보고서, 대시보드, 필터, 모듈에서 시스템 생성 |
| 이름 품질 | 사용자 친화적, 검색에 맞게 조정됨 | 기술적인 경우가 많습니다(예: "Incidents.Open"). |
| 검색 우선순위 | 자동화보다 5% 부스트(조정 가능)sn_query_gen.segments.manual_segment_scale_factor | 표준 점수 매기기 |
| LLM 처리 | 관련이 없는 경우를 제외하고 모든 필터를 유지합니다. | 각 필터를 개별적으로 비판 |
| 프롬프트 레이블 | user_defined_segment |
automated_segment |
| 수명주기 | 관리자에 의해 완전히 제어됨 | 소스 기록 활동/사용량에 연결됨 |
| 앱과 함께 제공됨 | 예(업데이트 세트) | 아니요(런타임 시 생성됨) |
세그먼트 작동 방식
시스템은 AI 검색을 사용하여 사용자의 쿼리와 의미론적으로 유사한 세그먼트를 찾습니다. AI 검색은 세그먼트 테이블의 이름, 설명, 엔터티 및 필터 필드를 인덱싱하여 사용자의 쿼리와 비교하여 관련 세그먼트의 하위 집합을 생성합니다.
LLM 호출에서 시스템은 이름, 설명, 엔터티 및 필터를 전달합니다. LLM은 세그먼트를 새 쿼리를 생성하기 위한 구성요소로 사용합니다. 예를 들어 사용자가 "샌디에이고에 위치한 미할당 인시던트"라고 질문하고 세그먼트 "미할당 인시던트"가 LLM으로 전달되면 LLM은 세그먼트의 필터를 시작점으로 사용하고 세그먼트 위에 위치 필터 "샌디에고"를 연결합니다.
| 단계 | 목적 | 출력 |
|---|---|---|
| 1: 입력 | 사용자의 자연어 쿼리 캡처 | 원시 쿼리 텍스트 |
| 2: 검색 | 의미론적으로 유사한 사전 구축된 세그먼트 찾기 | 관련 세그먼트의 하위 집합 |
| 3: 점수 매기기 | 의미 체계 유사성 점수에 따라 관련 세그먼트 세트의 순위를 매깁니다. | 이제 순위가 매겨지고 정렬된 관련 세그먼트의 하위 집합 |
| 4: 컨텍스트 | LLM에 세그먼트 메타데이터 제공 | 구조화된 세그먼트 데이터 |
| 5: 생성 | 세그먼트 논리를 새 조건과 결합 | 실행 가능한 쿼리 완료 |
수동 세그먼트의 작동 방식
수동 세그먼트는 쿼리 시간에 두 가지 역할을 합니다.
- 엔터티 검색
- 이전 컨텍스트가 없는 최초 쿼리에서 세그먼트 일치는 엔터티 목록에 엔터티를 추가하거나 부스트할 수 있습니다. 수동 세그먼트 이름과 일치하면 후보 목록에 엔터티를 추가하거나 증폭하여 원하는 엔터티를 식별하는 데 도움이 됩니다. 사용자가 "중요 미해결 인시던트 표시"를 요청하고 인시던트 [incident] 테이블에 "중요 미해결 인시던트"라는 수동 세그먼트가 있는 경우 결과에서
인시던트 엔터티가 부스트됩니다. - 필터 프로비저닝
- 일치하는 세그먼트는 LLM 프롬프트 컨텍스트에 맞게 형식이 지정됩니다. LLM은 다음을 봅니다.
그런 다음 LLM은 쿼리를 구성할 때 세그먼트의 필터를 완전히 또는 부분적으로 재사용할지 여부를 결정합니다. 수동 세그먼트에는 프롬프트에**Related Segments**: - **Critical Open Incidents** (user_defined_segment) - description : High priority incidents that are open and unresolved - entity : incident - filter : { conditions : [{"field":"incident.priority","operator":"=","value":"1"}, ...] }user_defined_segment레이블이 표시되어 LLM이 완전히 관련이 없는 경우가 아닌 한 모든 필터를 유지하도록 지시합니다.
수동 세그먼트 점수 매기기 부스트
수동 세그먼트는 우선순위 부스트를 받습니다. 엔진은 관련 세그먼트를 검색할 때 의미론적 유사성(세그먼트의 이름과 설명이 사용자의 질문과 얼마나 밀접하게 일치하는지)에 따라 각 결과의 점수를 매깁니다. 기본적으로 수동 세그먼트는 원시 유사성 점수 위에 5%의 부스트가 적용됩니다.
부스트 계수는 시스템 속성을 sn_query_gen.segments.manual_segment_scale_factor통해 구성할 수 있습니다. 예를 들어 1.10으로 늘리면 수동 세그먼트가 더 강력하게 상승합니다. 1.0으로 설정하면 부스트가 완전히 제거됩니다.
실제로 자동화된 세그먼트에는 사용자 발언과 부분적으로 일치하는 이름이 있는 경우가 많습니다. 예를 들어 "미해결 인시던트"라는 보고서는 "중요 미해결 인시던트"라는 수동 세그먼트와 비슷한 점수를 낼 수 있습니다. 부스트를 사용하면 도메인에 맞게 조정된 수동 세그먼트가 둘 다 거의 일치할 때 시스템에서 생성된 세그먼트보다 먼저 표시됩니다.
세그먼트 점수 매기기 작동 방식
- AI 검색 각 후보 세그먼트에 대한 원시 의미론적 유사성 점수(0.0–1.0)를 반환합니다.
- 일치 임계치(기본값
0.70) 미만의 세그먼트는 삭제됩니다. - 수동 세그먼트 점수에 배율 인수를 곱합니다(기본값
1.05). - 결과는 부스트 점수별로 정렬되고 결과 제한으로 제한됩니다.
자동 세그먼트 소스
시스템은 일정에 따라 기존 데이터 소스에서 세그먼트를 자동으로 생성합니다. 쿼리 생성 세그먼트 동기화 작업은 세그먼트를 자동으로 만들어 설치 시 실행한 다음 기본적으로 매주 실행됩니다.
| 소스 | 끌어오는 내용 |
|---|---|
| 저장된 보고서(sys_report) | 최근에 본 보고서의 보고서 필터 |
| 보고서 소스(sys_report_source) | 분석 데이터 소스 필터 |
| PA 표시기(pa_cubes) | 퍼포먼스 분석 표시기 조건 |
| 저장된 필터(sys_filter) | 전역에 저장된 필터만 해당(사용자별 및 그룹별 필터 제외) |
| 앱 모듈(sys_app_module) | 모듈 수준 목록 뷰 필터 |
자동화된 세그먼트 규칙
오래되고 관련성이 없는 세그먼트의 노이즈를 줄이기 위해 작업은 특정 규칙을 따릅니다. 보고서, 보고서 소스 또는 표시기 소스를 기반으로 하는 세그먼트는 기록이 특정 기준을 충족하는 경우에만 활성화됩니다.
- 보고서는 분석 관리자 역할(admin, dashboard_admin, report_admin, pa_admin 또는 viz_admin)을 가진 사용자가 공유하고, 생성하고, 최근에(기본적으로 180일 이내) 실행된 것이어야 합니다.
- 보고서 소스는 데이터 시각화에 포함되거나 최근에 실행된 보고서에 사용해야 합니다.
- 표시기 소스는 최근에 변경된 점수가 있는 표시기에 연결되어야 합니다.
보고서의 경우 "최근 실행"은 시스템 속성에 의해 정의됩니다 sn_query_gen.segments.reports.last_viewed_threshold_days . 기본값은 180일입니다.
표시기 소스의 경우 "최근에 변경됨"의 시간 범위는 표시기 빈도에 따라 다릅니다.
- 일별: 지난 7일
- 주별: 지난 30일
- 격주: 지난 30일
- 월별: 지난 90일
- 4주: 지난 90일
- 격월: 지난 90일
- 분기별: 지난 180일
- 회계 분기별: 지난 180일
- 6개월: 지난 12개월
- 연도별: 지난 24개월
- 회계 연도별: 지난 24개월
시스템 속성을 사용하여 sn_query_gen.segments.indicator.inactivity_threshold_multiplier 승수를 적용하여 표시기 소스의 시간 범위를 변경할 수 있습니다. 값은 정수여야 하며, 이는 기간을 늘릴 수만 있고 짧게 할 수 없음을 의미합니다.
세그먼트 소스 비활성화
세그먼트 생성을 완전히 비활성화하거나 개별 소스 유형에 대해 비활성화할 수 있습니다. 문제를 해결하거나 소스의 세그먼트가 "시끄러운" 경우 세그먼트 생성을 비활성화할 수 있습니다. 각 소스 유형에는 해당 sn_query_gen.segments.disable.* 시스템 속성이 있습니다. 해당 시스템 속성을 true로 설정하여 해당 소스에 대한 세그먼트를 비활성화합니다. 해당 유형의 소스에서 생성된 모든 기존 세그먼트는 검색 결과에서 AI 데이터 탐색기 제외됩니다. 해당 유형의 새 세그먼트가 생성되지 않습니다. 다음 세그먼트 동기화 작업 중에 해당 유형의 모든 세그먼트가 비활성화됩니다. 자세한 내용은 쿼리 작성 속성 문서를 참조하십시오.