컨텍스트 세트 개요

컨텍스트 세트는 QueryData를 지원하는 분야별 지식입니다. 애플리케이션이 게시되기 전에 비즈니스 로직이 작동하는 방식을 정의하므로 QueryData가 거의 100% 의 정확성과 짧은 온라인 지연 시간으로 자연어 질문에 답변할 수 있습니다.

도메인 컨텍스트는 다양한 형식을 취할 수 있지만 컨텍스트 세트는 세 가지 특수한 컨텍스트 유형을 지원합니다.

  • 쿼리 템플릿: 일반적인 비즈니스 질문에 대해 사전 승인된 SQL 쿼리입니다.
  • 쿼리 속성: 템플릿에 동적으로 연결되는 '신혼부부' 또는 '바다 전망'과 같은 모듈식 필터입니다.
  • 값 검색: 사용자 문구를 정확한 데이터베이스 값에 매핑하고 모호성을 해결하는 항목 조회입니다.

지원되는 데이터베이스는 다음과 같습니다.

  • PostgreSQL용 AlloyDB
  • MySQL용 Cloud SQL
  • PostgreSQL용 Cloud SQL
  • Spanner
  • MongoDB 호환성을 갖춘 Firestore
  • Bigtable

컨텍스트 세트란 무엇인가요?

컨텍스트 엔지니어링 에이전트를 사용하여 설계 시점에 컨텍스트 세트를 작성하고 최적화합니다. 컨텍스트 엔지니어링 에이전트는 QueryData를 통해 대표적인 골든 벤치마크를 실행하고, 결과에 점수를 매기고, 컨텍스트 세트를 반복적으로 미세 조정(힐 클라이밍)합니다. 그런 다음 과적합을 방지하기 위해 보이지 않는 홀드아웃 테스트 세트에 대해 최종 버전을 확인하고 컨텍스트 세트를Google Cloud에 자동으로 업로드합니다.

데이터베이스를 선별된 컨텍스트 세트와 페어링하면 두 가지 핵심 프로덕션 이점이 있습니다.

  • 일반화되는 100% 에 가까운 정확도: 데이터베이스 스키마는 테이블과 열을 설명하지만 모델에 '가까운' 것으로 간주되는 거리나 학교를 '좋은' 것으로 만드는 평점을 알려줄 수 없습니다. 컨텍스트 세트는 조직의 검증된 비즈니스 규칙에 QueryData를 그라운딩하는 반면, 파라미터화된 패턴을 사용하면 간결한 컨텍스트 세트가 다양한 표현, 필터 조합, 항목 값에 걸쳐 일반화될 수 있습니다.
  • 빠른 온라인 실행 및 짧은 지연 시간: 컨텍스트 엔지니어링은 비용이 많이 드는 스키마 추론을 오프라인으로 이동하여 설계 시간으로 전환합니다.
    • 컨텍스트 집합을 사용한 컨텍스트 일치 실행: 사전 컴파일된 템플릿 일치 및 색인 생성된 값 조회를 통한 빠른 단일 패스 실행
    • 템플릿이 없는 예상치 못한 쿼리에 대한 제로샷 합성: 모델이 런타임에 스키마 메타데이터를 탐색하고 SQL을 합성해야 하므로 2~3배 더 오래 걸립니다.
    • 원시 SQL 도구를 사용한 개방형 에이전트형 탐색: 멀티턴 시행착오 쿼리와 오류 수정 루프로 인해 30초 이상 걸리는 경우가 많습니다.

컨텍스트 세트의 컨텍스트 유형

런타임 시 QueryData는 세 가지 컨텍스트 유형을 모두 단일 패스로 결합합니다. 예를 들어 사용자가 다음과 같이 질문하는 경우입니다.

"델 마르에서 좋은 학교 근처에 있고 바닷가가 보이는 신혼부부를 위한 주택을 찾아줘"

QueryData는 다음과 같이 서로 연계된 네 단계로 요청을 해결합니다.

  1. 쿼리 템플릿은 '$1의 좋은 학교 근처 주택'에 대한 핵심 쿼리 구조를 제공하며, 거리(2마일 이내) 및 학교 순위(5위 이상)에 대한 비즈니스 규칙을 적용합니다.
  2. 검색어 패싯은 '스타터 패밀리'(침실 3~4개, 욕실 2개 이상) 및 '오션뷰'(벡터 유사성 검색)에 대한 모듈식 필터를 삽입합니다.
  3. 값 검색은 cities.city_name 열에서 'Del Mar'를 찾고 개념 유형을 확인합니다.
  4. 의도 설명은 쿼리 결과와 함께 반환되는 하나의 인증된 설명으로 결합됩니다."Del Mar에 있는 주택으로, 순위가 5 이상인 학교에서 2마일 이내에 있고, 침실이 3~4개이며, 바다가 보이는 주택"

쿼리 템플릿

쿼리 템플릿은 해당 SQL 쿼리가 포함된 대표적인 자연어 질문의 선별된 집합입니다. 또한 질문이 해석된 방식에 대한 인증된 근거를 제공하는 설명도 포함되어 있습니다.

예를 들어 사용자가 부동산 애플리케이션에 '델 마르의 좋은 학교 근처에 있는 집을 찾아줘'라고 요청하는 경우 데이터베이스 스키마만으로는 '근처'로 간주되는 거리, '좋은' 학교로 만드는 평점, 일치하는 부동산의 순위를 매기는 방법을 정의하지 않습니다. 쿼리 템플릿은 순위와 근접성의 가중치 점수로 정렬된 순위가 5 이상인 학교에서 2마일 이내의 부동산과 같은 정확한 비즈니스 해석을 캡처하고 이를 모든 도시에 일반화합니다.

쿼리 템플릿의 주요 구성요소는 다음과 같습니다.

  • 자연어 질문 예시: '델 마르의 좋은 학교 근처에 있는 주택을 찾아줘'와 같이 일반적인 영어로 된 대표적인 질문입니다.
  • SQL 쿼리 예시: 비즈니스 규칙에 따라 질문에 답변하는 확인된 SQL 쿼리입니다.
  • 일반화된 질문 패턴: 특정 값이 일반적인 설명으로 대체된 자동 생성 패턴입니다(예: '특정 도시의 좋은 학교 근처에 있는 주택 찾기'). 이 패턴은 다양한 표현으로 들어오는 질문을 일치시키는 데 사용됩니다.
  • 의도 설명: '$1에서 순위가 5 이상인 학교에서 2마일 이내에 있는 주택 찾기'와 같이 쿼리에 적용된 비즈니스 규칙에 대한 인증된 일반 영어 설명입니다.
  • 매개변수화된 SQL 쿼리: $1와 같은 매개변수를 사용하여 의도 설명에 해당하는 실행 가능한 SQL 쿼리입니다.

쿼리 패싯

쿼리 패싯은 대표적인 자연어 조건과 이에 상응하는 SQL 술어로 구성된 선별된 집합입니다. 패싯은 필터링 및 조건을 관리하므로 쿼리 템플릿이 모든 필터 조합에 대해 별도의 템플릿을 요구하지 않고 패싯 검색을 수행할 수 있습니다.

예를 들어 사용자는 '델 마르의 좋은 학교 근처에 있는 주택을 찾아줘'를 추가 조건으로 확장할 수 있습니다.

  • '…for a starter family'는 properties.bedrooms BETWEEN 3 AND 4 AND properties.bathrooms >= 2.0와 같은 구조화된 SQL 필터에 매핑됩니다.
  • '…with an ocean view'는 listing_description, listing_image_embeddings, customer_reviews와 같은 비정형 열에서 ai.if 또는 벡터 유사성 검색(<=>)과 같은 데이터베이스 AI 연산자를 사용합니다.

쿼리 상품 속성의 주요 구성요소는 다음과 같습니다.

  • SQL 스니펫: 재사용 가능한 SQL 필터 조건(예: properties.bedrooms BETWEEN 3 AND 4 AND properties.bathrooms >= 2.0)입니다.
  • 일반화된 조건 패턴: 패싯이 일치하는 자연어 패턴입니다(예: '초보 가족에게 적합').
  • 의도 설명: 전체 답변 근거의 일부로 반환되는 필터 조건에 대한 인증된 설명입니다.
  • 파라미터화된 SQL 스니펫: 의도 설명에 해당하는 실행 가능한 SQL 프래그먼트입니다.

값 검색어

값 검색 쿼리는 개발자가 정의한 쿼리로, 완전 일치, 퍼지 트라이그램 유사성, 시맨틱 벡터 검색과 같은 일치 함수를 사용하여 데이터베이스 내에서 값과 컨텍스트를 찾습니다. QueryData는 이러한 결과에 값 연결을 사용하여 일치하는 값이 포함된 테이블과 열을 식별하고, 값의 개념 유형을 이해하고, 맞춤법 오류를 수정하고, SQL을 실행하기 전에 모호성을 감지합니다.

예를 들어 사용자가 부동산 애플리케이션에 '지난달에 판매된 웨스트우드의 부동산'을 요청하는 경우 스키마 전용 모델은 `WHERE name = 'Westwod'`로 필터링하여 결과를 반환하지 않을 수 있습니다. 값 검색어는 퍼지 일치를 사용하여 맞춤법 오류인 'Westwod'를 데이터베이스 값 'Westwood'로 확인합니다. 또한 'Westwood'가 데이터베이스의 여러 개념 유형(예: City, Municipality, Brokerage)에 걸쳐 존재하는 경우 값 연결은 모호성을 감지하므로 QueryData는 추측하는 대신 사용자에게 어떤 개념을 의미하는지 명확히 해달라고 요청할 수 있습니다.

값 검색어의 주요 구성요소는 다음과 같습니다.