이 페이지에서는 자연어 이해를 적용하여 검색어의 필터를 자동으로 만들고, 따라서 반환되는 결과의 품질을 개선하는 방법을 설명합니다.
이 기능은 정형 데이터 스토어에 연결된 검색 앱에서 사용할 수 있습니다.
자연어 쿼리 이해 정보
정형 데이터가 포함된 맞춤 검색 앱이 있는 경우 사용자의 자연어 쿼리가 필터링된 쿼리로 형식이 다시 지정될 수 있습니다. 이렇게 하면 쿼리 문자열에서 단어를 검색하는 것보다 더 나은 품질의 검색 결과를 얻을 수 있습니다.
예를 들어 "Find a coffee shop serving
banana bread"와 같은 자연어 쿼리는 "query": "banana bread", "filter": "type": ANY(\"cafe\")와 같은 쿼리 및 필터로 재구성될 수 있습니다.
자연어 쿼리 이해를 사용하는 것이 자체 필터 표현식을 작성하는 것보다 쉽고 유연합니다. 필터 표현식을 작성하는 방법에 관한 자세한 내용은 정형 또는 비정형 데이터의 맞춤 검색 필터링을 참고하세요.
하드 필터와 소프트 필터
자연어 쿼리 이해에 적용할 수 있는 필터에는 하드와 소프트의 두 가지 종류가 있습니다.
어려움 기본적으로 추출된 필터는 결과가 반환되기 위해 충족해야 하는 필수 기준으로 적용됩니다.
동작은
SearchRequest메시지의filter필드와 유사합니다.부드러움 강성 필터의 대안은 검색 결과에 부스트를 적용하는 것입니다. 부스팅된 결과가 반환될 가능성이 더 높지만 부스팅 기준을 충족하지 않는 결과도 반환될 수 있습니다.
동작은
SearchRequest메시지의boost_spec필드와 유사합니다.
두 가지 유형의 필터를 모두 사용해 볼 수 있습니다. 검색에서 충분한 결과가 반환되지 않으면 하드 필터 대신 소프트 필터를 사용해 보세요.
소프트 필터를 적용하는 방법에 관한 자세한 내용은 아래의 소프트 필터로 검색하기를 참고하세요.
예시
이 기능은 예시를 통해 설명하는 것이 가장 좋습니다.
예: 쿼리에서 필드 추출 (하드 필터)에는 쿼리에서 추출된 필드 필터가 표시됩니다.
예: 위치정보 필터 사용 (하드 필터)에는 위치정보 필터의 특수 사례가 포함됩니다.
예: 쿼리에서 필드 추출 (소프트 필터)에는 혼합 앱에 대한 쿼리에서 추출된 소프트 필터가 표시됩니다.
예: 쿼리에서 필드 추출 (하드 필터)
이 자연어 쿼리 이해 기능은 호텔 검색의 예시를 통해 설명됩니다.
호텔 사이트의 정형 데이터 스토어에 대한 다음 쿼리를 살펴보겠습니다. '1박에 300달러 이하로 반려견을 동반할 수 있고, 무료 Wi-Fi가 제공되는 가족 친화적인 4성급 이상 호텔을 찾아 줘.'
자연어 쿼리 이해가 없으면 검색 앱은 쿼리에 있는 단어가 포함된 문서를 찾습니다.
자연어 쿼리 이해와 적절한 정형 데이터를 사용하면 쿼리의 일부 자연어를 필터로 대체하여 검색을 더 효과적으로 수행할 수 있습니다.
구조화된 데이터에 star_rating (숫자), price(숫자), amenities (문자열) 필드가 있는 경우 다음 필터를 포함하도록 쿼리를 구성할 수 있습니다.
{
"star_rating": >=4,
"price": <=300,
"amenities": "Wifi", "Pets Allowed"
}
예: 위치정보 필터 사용 (하드 필터)
이 예시는 이전 예시와 비슷하지만 추출된 필터의 특별한 종류인 위치정보 필터가 포함되어 있습니다. Vertex AI Search는 쿼리에서 위치를 인식하고 위치에 대한 근접성 필터를 생성할 수 있는 기능이 있습니다.
주 전역의 비즈니스 사이트에서 다음과 같은 쿼리를 실행해보세요. '샌프란시스코에 있는 4성급 이상의 세련되고 스타일리시한 호텔을 찾아 줘.'
자연어 쿼리 이해 및 위치정보 필터를 사용하면 별표 평점이 4점 이상이고 샌프란시스코 반경 10km 이내에 있는 호텔을 검색하는 다음 필터가 포함되도록 검색이 재구성됩니다.
{
"star_rating": >=4,
"location": GEO_DISTANCE(\"San Francisco, CA\", 10000)
}
이 예시에서 GEO_DISTANCE는 주소이지만 다른 쿼리에서는 원래 쿼리에 주소가 포함되어 있더라도 위도와 경도로 작성될 수 있습니다.
예: 쿼리에서 필드 추출 (소프트 필터)
이 자연어 쿼리 이해 기능은 호텔 검색의 예시를 통해 설명되지만 일부 결과는 모든 기준을 충족하지 않습니다.
여행 사이트에 대한 다음 쿼리를 살펴보겠습니다. '1박에 300달러 이하로 반려견을 동반할 수 있는 가족 친화적인 4성급 이상 호텔을 찾아 줘.'
자연어 쿼리 이해와 적절한 정형 데이터를 사용하면 쿼리의 일부 자연어를 소프트 필터로 대체하여 검색을 더 효과적으로 수행할 수 있습니다. 구조화된 데이터에 star_rating (숫자), price(숫자), amenities (문자열) 필드가 있는 경우 쿼리를 다음 부스트로 다시 작성할 수 있습니다.
자연어 쿼리에서 추출된 부스팅 조건:
{
"boostSpec": {
"conditionBoostSpecs": {
"condition": "(star_rating >= 4.5) AND (price < 200) AND ANY(amenities, \"Pets Allowed\")",
"boost": 0.7
}
}
}
이 경우 평점이 낮은 호텔이나 반려동물 동반이 불가능한 호텔이 반환될 수 있습니다.
제한사항
자연어 쿼리 이해에는 다음과 같은 제한사항이 적용됩니다.
자연어 쿼리 이해는 혼합 검색 앱에 적용할 수 없습니다. 혼합 검색 앱에서 자연어 쿼리 이해를 사용하려고 하면 오류가 발생합니다.
자연어 쿼리 이해는 정형 데이터 스토어를 사용하는 맞춤 검색 앱에서만 작동합니다.
자연어 쿼리 이해를 사용하면 지연 시간이 증가하므로 지연 시간이 문제가 되는 경우 사용하지 않는 것이 좋습니다.
위치정보의 경우 위치를 명시적으로 설명해야 합니다. '내 주변' 또는 '집'과 같은 위치를 사용할 수 없습니다.
위치정보의 반경은 10km이며 구성할 수 없습니다.
불리언 필드는 필터에서 사용할 수 없습니다. 예를 들어 쿼리가 '금연 호텔 객실을 찾아 줘'인 경우
"non_smoking": true과 같은 불리언 필드는 유용하지 않지만"non_smoking": "YES"과 같은 문자열 필드는 필터의 일부가 될 수 있습니다.
시작하기 전에
자연어 쿼리 이해를 사용하기 전에 사용하려는 앱에 연결된 정형 데이터 스토어에 이를 사용 설정해야 합니다.
자연어 쿼리 이해를 사용 설정하려면 다음 단계를 따르세요.
REST
데이터 스토어 ID를 찾습니다. 데이터 스토어 ID를 이미 알고 있는 경우 다음 단계로 건너뜁니다.
Google Cloud 콘솔에서 AI 애플리케이션 페이지로 이동하고 탐색 메뉴에서 데이터 스토어를 클릭합니다.
데이터 스토어 이름을 클릭합니다.
데이터 스토어의 데이터 페이지에서 데이터 스토어 ID를 가져옵니다.
다음 curl 명령어를 실행합니다.
curl -X PATCH \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ -H "X-Goog-User-Project: PROJECT_ID" \ "https://discoveryengine.googleapis.com/v1beta/projects/PROJECT_ID/locations/global/collections/default_collection/dataStores/DATA_STORE_ID?update_mask=natural_language_query_understanding_config.mode" \ -d '{ "naturalLanguageQueryUnderstandingConfig": { "mode": "ENABLED" } }'다음을 바꿉니다.
PROJECT_ID: Google Cloud 프로젝트의 ID입니다.DATA_STORE_ID: Vertex AI Search 데이터 스토어의 ID입니다.
각 데이터 스토어에 대해 1단계와 2단계를 반복합니다.
약 24시간 동안 기다립니다.
데이터 스토어가 준비되기 전에 자연어 쿼리 이해를 사용하려고 하면
filterExtractionCondition이DISABLED로 설정된 것과 동일한 응답이 반환됩니다.
검색: 자연어 쿼리를 필터로 변환
자연어로 쿼리를 검색하고 자연어 쿼리에 최적화된 결과를 가져오려면 다음 단계를 따르세요.
REST
search메서드를 호출하는 다음 curl 명령어를 실행합니다.curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/global/collections/default_collection/engines/APP_ID/servingConfigs/default_search:search" \ -d '{ "query": "QUERY", "naturalLanguageQueryUnderstandingSpec": { "filterExtractionCondition": "ENABLED" } }'다음을 바꿉니다.
PROJECT_ID: Google Cloud 프로젝트의 ID입니다.APP_ID: 쿼리할 Vertex AI Search 앱의 ID입니다. 앱이 정형 데이터가 포함된 데이터 스토어에 연결되어 있어야 합니다. 앱은 혼합 검색 앱일 수 없습니다.QUERY: 자연어로 작성된 질문입니다.
검색: 쿼리의 위치를 위치정보 필터로 변환
자연어로 쿼리를 검색하고 위치와의 근접성 등 자연어 쿼리에 최적화된 결과를 가져오려면 다음 단계를 따르세요.
REST
search메서드를 호출하는 다음 curl 명령어를 실행합니다.curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/global/collections/default_collection/engines/APP_ID/servingConfigs/default_search:search" \ -d '{ "query": "QUERY", "naturalLanguageQueryUnderstandingSpec": { "filterExtractionCondition": "ENABLED", "geoSearchQueryDetectionFieldNames": ["GEO_FIELD_NAME_1", "GEO_FIELD_NAME_N"]" } }'다음을 바꿉니다.
PROJECT_ID: Google Cloud 프로젝트의 ID입니다.APP_ID: 쿼리할 Vertex AI Search 앱의 ID입니다. 앱이 정형 데이터가 포함된 데이터 스토어에 연결되어 있어야 합니다. 앱은 혼합 검색 앱일 수 없습니다.QUERY: 자연어로 작성된 질문입니다.GEO_FIELD_NAME_1, GEO_FIELD_NAME_N:geolocation유형의 값 목록입니다. 값 유형이geolocation이 아니면 이 필드는 무시됩니다.
소프트 필터로 검색
소프트 필터를 적용하려면 다음 단계를 따르세요.
REST
앱 ID를 찾습니다. 앱 ID를 이미 알고 있는 경우 다음 단계로 건너뜁니다.
Google Cloud 콘솔에서 AI 애플리케이션 페이지로 이동합니다.
앱 페이지에서 앱 이름을 찾고 ID 열에서 앱 ID를 가져옵니다.
search메서드를 호출하는 다음 curl 명령어를 실행합니다.curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/global/collections/default_collection/engines/APP_ID/servingConfigs/default_search:search" \ -d '{ "query": "QUERY", "naturalLanguageQueryUnderstandingSpec": { "filterExtractionCondition": "ENABLED", "extractedFilterBehavior": "SOFT_BOOST" } }'다음을 바꿉니다.
PROJECT_ID: Google Cloud 프로젝트의 ID입니다.APP_ID: 검색 앱의 ID입니다. 앱은 구조화된 데이터가 포함된 데이터 스토어에 연결되어야 합니다. 앱은 혼합 검색 앱일 수 없습니다.QUERY: 자연어로 된 질문입니다.
자연어 쿼리의 필드 지정
필드가 자연어 쿼리 이해에서 필터로 사용되려면 스키마에서 색인 생성 가능으로 표시되어야 합니다. (스키마 보기 및 수정에 관한 일반적인 내용은 스키마 업데이트를 참고하세요.)
Vertex AI Search는 스키마에서 자연어 쿼리 이해 필터에 사용하는 것이 적절한 색인 생성 가능 필드를 결정합니다. 하지만 원치 않는 필드가 포함된 경우 허용 목록을 만들어 사용할 수 있는 필드를 지정해야 합니다.
amenities, id, price_per_night, rating, room_types과 같은 필드가 있는 호텔 예약 사이트를 생각해 보세요. 이러한 값 중 id이 문자 및 숫자로 구성된 문자열인 경우 Vertex AI Search는 자연어 쿼리 이해에 사용되는 필드에서 이를 제외할 가능성이 높습니다.
하지만 Vertex AI Search가 제외해야 하는 필드를 제외하지 않아 품질이 낮은 쿼리 결과를 반환하는 경우 사용할 수 있는 필드를 지정해야 합니다. 예를 들어 호텔 스키마에 고객에게 유용하지 않고 호텔 체인에 당황스러울 수 있는 renovation_status 필드가 있는 경우 허용된 필드 목록에서 이 필드를 제외할 수 있습니다.
호텔 데이터의 구조화된 데이터 스토어에 있는 레코드의 예
{
"title": "Miller-Jones",
"rating": 1.7,
"price_per_night": 115.16,
"id": 2902,
…
],
"amenities": [
"Spa",
"Parking",
"Restaurant"
…
],
"renovation_status": "Restaurant and spa renovation planned for 2027"
}
이 예의 필드에 적합한 허용 목록은 ["amenities",
"price_per_night", "rating", "title"]입니다.
목록에서 누락된 항목은 renovation_status입니다.
검색에서 자연어 쿼리 이해에 사용할 수 있는 필드의 허용 목록을 지정하려면 다음 단계를 따르세요.
REST
앱 ID를 찾습니다. 앱 ID를 이미 알고 있는 경우 다음 단계로 건너뜁니다.
Google Cloud 콘솔에서 AI 애플리케이션 페이지로 이동합니다.
앱 페이지에서 앱 이름을 찾고 ID 열에서 앱 ID를 가져옵니다.
search메서드를 호출하는 다음 curl 명령어를 실행합니다.curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/global/collections/default_collection/engines/APP_ID/servingConfigs/default_search:search" \ -d '{ "query": "QUERY", "naturalLanguageQueryUnderstandingSpec": { "allowedFieldNames": ["FIELD_1", "FIELD_2"], } }'다음을 바꿉니다.
PROJECT_ID: Google Cloud 프로젝트의 ID입니다.APP_ID: 검색 앱의 ID입니다. 앱은 구조화된 데이터가 포함된 데이터 스토어에 연결되어야 합니다. 앱은 혼합 검색 앱일 수 없습니다.QUERY: 자연어로 된 질문입니다.FIELD_N: 자연어 질문 이해에 사용할 수 있는 스키마의 색인 생성 가능한 필드입니다.