컨텍스트 세트 개요

QueryData를 사용하면 대화형 언어를 사용하여 데이터베이스의 데이터와 상호작용하고 데이터 에이전트를 빌드할 수 있습니다. QueryData는 데이터베이스에 관한 고유한 정보가 포함된 코드 모음인 컨텍스트 세트를 사용하여 데이터베이스의 쿼리를 작성합니다. 이 컨텍스트를 통해 QueryData는 자연어 질문을 타겟 사용 사례에 맞는 정확한 쿼리로 변환할 수 있습니다.

QueryData를 사용해야 하는 경우

QueryData는 다음과 같은 애플리케이션에 적합합니다.

  • 고객 서비스 자동화: '주문은 어디에 있나요?' 또는 '현재 잔액은 얼마인가요?'와 같은 대량 문의를 처리합니다.
  • 전자상거래 쇼핑 도우미: '100달러 미만의 러닝화를 보여 줘'와 같은 자연어 질문으로 사용자가 대규모 제품 카탈로그를 탐색할 수 있도록 지원합니다.
  • 현장 운영 도구: 모바일 직원이 재고 수준, 부품 가용성 또는 서비스 티켓 세부정보를 실시간으로 쿼리할 수 있습니다.

QueryData 작동 방식

효과적인 에이전트 애플리케이션을 빌드하려면 QueryData가 데이터 조직과 비즈니스 로직을 이해해야 합니다. 이 정보는 컨텍스트 세트 형식으로 제공됩니다.

각 컨텍스트 유형의 JSON 객체가 포함된 파일에서 컨텍스트를 정의합니다. 이러한 컨텍스트 파일은 Gemini CLI를 사용하여 작성합니다. 그런 다음 Cloud de Confiance by S3NS콘솔에서 만든 컨텍스트 세트에 컨텍스트 파일을 업로드합니다. 이 프로세스를 통해 QueryData는 데이터베이스의 특정 스키마와 애플리케이션의 비즈니스 로직을 학습할 수 있습니다.

컨텍스트 파일은 다음과 유사합니다.

{
  "templates": [
    {
      "nl_query": "Count Prague loan accounts",
      "sql": "SELECT COUNT(T1.account_id) FROM bird_dev_financial.account AS T1 INNER JOIN bird_dev_financial.loan AS T2 ON T1.account_id = T2.account_id INNER JOIN bird_dev_financial.district AS T3 ON T1.district_id = T3.district_id WHERE T3.\"A3\" ='Prague'",
      "intent": "How many accounts associated with loans are located in the Prague region?",
      "manifest": "How many accounts associated with loans are located in a given city?",
      "parameterized": {
        "parameterized_intent": "How many accounts associated with loans are located in $1",
        "parameterized_sql": "SELECT COUNT(T1.account_id) FROM bird_dev_financial.account AS T1 INNER JOIN bird_dev_financial.loan AS T2 ON T1.account_id = T2.account_id INNER JOIN bird_dev_financial.district AS T3 ON T1.district_id = T3.district_id WHERE T3.\"A3\" = $1"
      }
    }
  ],
  "facets": [
    {
      "sql_snippet": "T.\"A11\" BETWEEN 6000 AND 10000",
      "intent": "Average salary between 6000 and 10000",
      "manifest": "Average salary between a given number and a given number",
      "parameterized": {
         "parameterized_intent": "Average salary between $1 and $2",
         "parameterized_sql_snippet": "T.\"A11\" BETWEEN $1 AND $2"
      }
    }
  ],
  "value_searches": [
    {
      "query": "SELECT $value as value, 'accounts.account_type' as columns, 'Account Type' as concept_type, 0 as distance, '{}'::text as context FROM \"accounts\" T WHERE T.\"account_type\" = $value",
      "concept_type": "Account Type",
      "description": "Exact match for account types"
    }
   ]
}

최종 사용자가 자연어 질문을 하면 QueryData는 컨텍스트를 선별하는 개발자가 감사한 템플릿 및 패싯에 질문을 일치시키는 것을 우선시합니다. QueryData는 일치하는 항목을 식별하면 선택된 쿼리 템플릿과 패싯을 사용하여 데이터베이스 쿼리를 합성합니다. 그런 다음 컨텍스트 설정 로직이 데이터베이스에 대해 해당 쿼리를 실행하여 정확한 결과를 반환합니다.

컨텍스트 내에서 값 검색을 정의하는 것이 좋습니다. 값 검색을 사용하면 상담사가 값 문구를 데이터베이스 열에 저장된 특정 값에 매핑할 수 있습니다. 이렇게 하면 LLM이 실제 데이터를 기반으로 하여 용어가 District 이름인지 City인지와 같은 모호성을 해결할 수 있습니다.

에이전트가 일치하는 템플릿을 찾지 못하면 값 검색을 사용하여 자연어 문구를 데이터베이스 열에 저장된 특정 값에 매핑합니다. 이렇게 하면 LLM이 실제 데이터를 기반으로 하므로 용어가 District, Name 또는 City를 의미하는지 등 모호한 부분을 해결하는 데 도움이 됩니다.

대화형 분석 APIQueryData 엔드포인트는 자연어 질문에서 SQL 쿼리를 생성할 수 있도록 애플리케이션과의 프로그래매틱 통합을 지원하는 에이전트 도구입니다. 대화형 애플리케이션에서는 대화 기록과 컨텍스트를 관리하는 프레임워크 내에서 QueryData 엔드포인트를 사용해야 합니다.엄격한 행 수준 보안을 유지하면서 엔티티 해결을 적용하려면 파라미터화된 보안 뷰 (PSV)를 사용하면 됩니다. 자세한 내용은 파라미터화된 보안 뷰를 사용하여 애플리케이션 데이터 보호 및 액세스 제어를 참고하세요.

다음 단계