이 페이지에서는 카탈로그 정보를 가져오고 최신 상태로 유지하는 방법을 설명합니다.
이 페이지의 가져오기 절차는 추천 및 검색에 모두 적용됩니다. 데이터를 가져온 후 두 서비스가 모두 이 데이터를 사용할 수 있으므로 두 서비스를 모두 사용하는 경우 동일한 데이터를 두 번 가져올 필요가 없습니다.
BigQuery에서 제품 데이터를 가져오거나 요청에서 데이터를 인라인으로 지정할 수 있습니다. 판매자 센터 연결을 제외하고 이러한 각 절차는 일회성 가져오기로 수행됩니다. 정기적으로 카탈로그 가져오기 (이상적으로는 매일)를 예약하여 카탈로그가 최신 상태인지 확인하세요.
카탈로그를 최신 상태로 유지 항목을 참조하세요.
개별 제품 항목을 가져올 수도 있습니다. 자세한 내용은 제품 업로드를 참조하세요.
시작하기 전에
카탈로그 가져오기를 시작하기 전에 다음 작업을 해야 합니다.
- 프로젝트 설정
- 서비스 계정을 만듭니다.
- 로컬 환경에 서비스 계정을 추가합니다.
자세한 내용은 설정 기본 요건을 참고하세요.
카탈로그 가져오기 고려사항
이 섹션에서는 카탈로그 데이터의 일괄 가져오기에 사용할 수 있는 메서드, 각 메서드 사용 시기, 일부 제한사항에 대해 설명합니다.
BigQuery | 설명 | 커머스 스키마용 Vertex AI Search를 사용하는 이전에 로드된 BigQuery 테이블에서 데이터를 가져옵니다. Google Cloud 콘솔 또는 curl을 사용하여 수행할 수 있습니다. |
---|---|---|
사용 시기 |
많은 속성이 포함된 제품 카탈로그가 있는 경우입니다. BigQuery는 키-값 커스텀 속성을 포함하여 다른 가져오기 옵션보다 많은 제품 속성이 포함된 Vertex AI Search for Commerce 스키마를 사용합니다.
대량 볼륨이 포함된 경우입니다. BigQuery 가져오기는 데이터 한도가 없습니다. 이미 BigQuery를 사용하는 경우입니다. |
|
제한사항 | 상거래를 위한 Vertex AI Search 스키마에 매핑되는 BigQuery 테이블을 만드는 추가 단계가 필요합니다. | |
Cloud Storage | 설명 |
Cloud Storage 버킷에 로드된 파일에서 JSON 형식으로 데이터를 가져옵니다. 각 파일은 2GB 이하여야 하고 한 번에 최대 100개까지 파일을 가져올 수 있습니다. 가져오기는 Google Cloud 콘솔 또는 curl을 사용하여 수행할 수 있습니다. 커스텀 속성을 허용하는 Product JSON 데이터 형식을 사용합니다.
|
사용 시기 | 한 번에 많은 양의 데이터를 로드해야 하는 경우. | |
제한사항 | 변경사항이 즉시 반영되지 않기 때문에 인벤토리 및 가격이 자주 업데이트되는 카탈로그에는 적합하지 않습니다. | |
인라인 가져오기 | 설명 |
Product.import 메서드 호출을 사용하여 가져옵니다. Vertex AI Search for Commerce 스키마보다 적은 수의 제품 카탈로그 속성이 포함되지만 커스텀 속성을 지원하는 ProductInlineSource 객체를 사용합니다.
|
사용 시기 | 비관계형 플랫 카탈로그 데이터가 있거나 수량 또는 가격 업데이트 빈도가 높은 경우. | |
제한사항 | 한 번에 100개 이하의 카탈로그 항목만 가져올 수 있습니다. 그러나 많은 로드 단계를 수행할 수 있습니다. 항목 한도가 없습니다. |
튜토리얼
이 섹션에서는 동영상과 셸 튜토리얼을 통해 다양한 카탈로그 가져오기 방법을 살펴봅니다.
동영상 가이드
Retail API를 사용하여 카탈로그를 가져오는 방법을 알아보려면 이 동영상을 시청하세요.
BigQuery에서 카탈로그 가져오기 튜토리얼
이 튜토리얼에서는 BigQuery 테이블을 사용하여 제한 없이 대량의 카탈로그 데이터를 가져오는 방법을 보여줍니다.
Cloud Shell 편집기에서 이 태스크의 단계별 안내를 직접 수행하려면 둘러보기를 클릭합니다.
Cloud Storage에서 카탈로그 가져오기 튜토리얼
이 튜토리얼에서는 많은 수의 항목을 카탈로그로 가져오는 방법을 보여줍니다.
Cloud Shell 편집기에서 이 태스크의 단계별 안내를 직접 수행하려면 둘러보기를 클릭합니다.
인라인으로 카탈로그 데이터 가져오기 튜토리얼
이 튜토리얼에서는 인라인으로 카탈로그에 제품을 가져오는 방법을 보여줍니다.
Cloud Shell 편집기에서 이 태스크의 단계별 안내를 직접 수행하려면 둘러보기를 클릭합니다.
카탈로그 가져오기 권장사항
고품질 결과를 생성하기 위해서는 고품질 데이터가 필요합니다. 데이터에 필드가 없거나 실제 값 대신 자리표시자 값이 있는 경우, 예측 및 검색 결과의 품질이 저하됩니다.
카탈로그 데이터를 가져올 때는 다음 권장사항을 구현해야 합니다.
기본 제품과 변형 제품을 신중하게 구분해야 합니다. 데이터를 업로드하기 전에 제품 수준을 참조하세요.
데이터를 가져오는 데 상당한 노력을 들인 후 제품 수준 구성을 변경합니다. 기본 항목(변형 항목 아님)은 검색 결과 또는 추천으로 반환됩니다.
예: 기본 SKU 그룹이 브이넥 셔츠라면 추천 모델은 브이넥 셔츠와 어쩌면 라운드넥 셔츠와 깊은 라운드넥 셔츠를 반환할 수 있습니다. 하지만 옵션을 사용하지 않고 각 SKU가 기본인 경우 브이넥 셔츠의 모든 색상 또는 사이즈 조합이 추천 패널에 별도의 항목으로 반환됩니다.브라운 브이넥 셔츠, XL 사이즈, 브라운 브이넥 셔츠, L 사이즈부터 화이트 브이넥 셔츠, M 사이즈, 화이트 브이넥 셔츠, S 사이즈까지
collectionMemberIds[]
에 기본 제품 ID와 함께 옵션 ID가 포함되어 있으면 컬렉션이 함께 인식될 수 있습니다. 이로 인해 사용자가 세트에서 하나 이상의 제품을 구매했을 수 있는 제품 컬렉션이 사용자 이벤트에 포착되어 전체 세트가 구매에 기여한 것으로 간주됩니다. 이를 통해 향후 관련 쿼리에서 동일한 사용자에게 특정 컬렉션의 다른 제품을 제공할 수 있습니다.예: 사용자가 이전에 이불 커버를 구매했으므로 베갯잇과 같은 침대 시트 컬렉션의 일치하는 제품이 반환됩니다.
제품 항목 가져오기 한도를 준수하세요.
Cloud Storage에서 일괄적으로 가져오려면 각 파일의 크기가 2GB 이하여야 합니다. 일괄 가져오기 요청 하나당 한 번에 최대 100개의 파일을 포함할 수 있습니다.
인라인 가져오기의 경우에는 한 번에 5,000개 이하의 제품 항목을 가져오세요.
필수 카탈로그 정보가 포함되어 있고 올바른지 확인합니다. 자리표시자 값을 사용하지 마세요.
선택적 카탈로그 정보를 최대한 많이 포함합니다.
모든 이벤트는 단일 통화를 사용해야 합니다(특히Google Cloud 콘솔을 사용해 수익 측정항목을 확인하려는 경우). Vertex AI Search for Commerce API는 카탈로그당 여러 통화의 사용을 지원하지 않습니다.
카탈로그를 매일 최신 상태로 유지하는 것이 좋습니다. 주기적 카탈로그 가져오기를 예약하면 시간이 지남에 따라 모델 품질이 저하되지 않습니다. 커머스 검색 콘솔을 사용하여 카탈로그를 가져올 때 자동 반복 가져오기를 예약할 수 있습니다. 또는 Google Cloud Scheduler를 사용하여 가져오기를 자동화할 수 있습니다.
아직 가져오지 않은 제품 항목의 사용자 이벤트는 기록하지 않습니다.
카탈로그 정보를 가져온 후 프로젝트의 오류 보고 및 로깅 정보를 검토하세요. 오류가 몇 개 이상 발견되면 오류를 검토한 후 오류를 유발한 프로세스 문제를 해결합니다.
상거래를 위한 Vertex AI Search 데이터 수집 파이프라인에는 제품 카탈로그와 사용자 이벤트 데이터가 모두 포함됩니다. 이 데이터 스트림은 피드백 메커니즘을 통해 강력한 모델 학습과 지속적인 평가를 위한 기반을 제공합니다. 정확하고 완전한 데이터 수집은 전제 조건일 뿐만 아니라 기본 모델의 적응성을 유지하는 데 필수적인 지속적인 프로세스입니다. 이는 검색 결과의 품질과 관련성에 직접적인 영향을 미쳐 투자 대비 상당한 수익을 제공합니다.
상거래 검색 솔루션을 설계할 때 다음 데이터 수집 권장사항을 고려하세요.
일괄 가져오기, 실시간 스트리밍 또는 둘 다?
상거래를 위한 Vertex AI Search는 카탈로그 수집을 위한 두 가지 기본 방법을 제공합니다.
일괄 가져오기
실시간 스트리밍
이 이중 접근 방식은 다양한 고객 백엔드의 다양한 아키텍처 요구사항을 수용합니다. 한 가지 방법만 선택해야 하는 것은 아닙니다. 특정 요구사항에 따라 일괄 가져오기와 스트리밍 업데이트를 모두 사용하는 하이브리드 수집 모드를 사용할 수 있습니다.
일괄 가져오기는 한 번에 수천 개의 제품을 대규모로 추가, 삭제 또는 업데이트할 때 유용합니다. 반면, 상대적으로 적은 수의 제품에 지속적인 업데이트가 필요한 경우에는 실시간 스트리밍이 유용합니다. 이러한 방법 중에서 선택하는 것은 제품 카탈로그의 특성, 업데이트 빈도, 백엔드 시스템의 전체 아키텍처에 따라 달라집니다.
일괄 가져오기 기능은 다음과 같은 세 가지 데이터 소스를 지원합니다.
- BigQuery: BigQuery를 사용하면 카탈로그 데이터를 빠르게 수정하고, 가져오는 동안 파티션 날짜를 지정하고, SQL 쿼리를 통해 효율적인 데이터 변환을 수행할 수 있습니다.
- Google Cloud Storage: Cloud Storage에서는 JSON과 같은 특정 형식과 파일 제한을 준수해야 합니다. 사용자는 버킷 구조, 파일 청크, 가져오기 프로세스의 기타 측면을 관리해야 합니다. 또한 Cloud Storage 내에서 카탈로그를 직접 수정하는 것은 번거로울 수 있으며, 비용 효율적일 수 있지만 다른 방법에 비해 유연성이 떨어집니다.
- 인라인 데이터: 대규모 카탈로그의 경우 크기 제한으로 인해 인라인 가져오기가 가장 확장 가능한 옵션이 아닐 수 있습니다. 사소한 업데이트나 실험적 테스트에만 사용하세요.
짧은 기간 내에 정기적으로 대량의 제품 카탈로그 업데이트 (수천 건의 제품 변경, 추가 또는 삭제)가 발생하는 시나리오의 경우 일괄 가져오기와 실시간 스트리밍을 결합한 접근 방식이 매우 효과적일 수 있습니다. BigQuery 또는 Cloud Storage에서 업데이트를 스테이징하고 1~2시간과 같은 정기적인 간격으로 증분 일괄 가져오기를 실행합니다. 이 방법은 중단을 최소화하면서 대규모 업데이트를 효율적으로 관리합니다.
업데이트가 적고 빈도가 낮거나 카탈로그에 즉시 반영해야 하는 경우에는 실시간 스트리밍 API를 사용하세요. 하이브리드 접근 방식에서는 실시간 스트리밍이 대량 가져오기 사이의 간격을 메워 카탈로그가 최신 상태로 유지되도록 할 수 있습니다. 이 전략은 개별 REST API 호출 (제품 패치용)과 일괄 변경 간의 균형을 유지하여 Vertex AI Search for Commerce 카탈로그 관리의 효율성과 응답성을 모두 최적화합니다.
카탈로그 관리를 위한 브랜칭 전략
여러 지점에 서로 다른 카탈로그를 보유하는 대신 단일 지점 내에서 통합 카탈로그를 유지합니다. 이 방법을 사용하면 카탈로그 업데이트가 간소화되고 브랜치 전환 중에 불일치가 발생할 위험이 줄어듭니다.
다음의 일반적인 브랜치 전략은 카탈로그 관리에 효과적입니다.
단일 지점 업데이트
라이브 브랜치를 기본값으로 지정하고 카탈로그가 변경될 때마다 지속적으로 업데이트합니다. 일괄 업데이트의 경우 트래픽이 적은 기간에 가져오기 기능을 사용하여 중단을 최소화하세요. 스트리밍 API를 사용하여 더 작은 증분 업데이트를 수행하거나 정기적인 가져오기를 위해 더 큰 청크로 일괄 처리합니다.
브랜치 전환
다양한 브랜치를 관리하는 방법에는 몇 가지가 있습니다.
스테이징 및 확인을 위해 브랜치를 사용합니다.
- 일부 상거래 사이트 엔지니어는 브랜치 전환 방식을 선택합니다. 이 방식에서는 카탈로그가 라이브가 아닌 브랜치 내에서 업데이트된 후 프로덕션 준비가 되면 기본 (라이브) 브랜치가 됩니다. 이를 통해 다음날의 카탈로그를 미리 준비할 수 있습니다. 트래픽이 적은 시간에 일괄 가져오기 또는 스트리밍을 사용하여 비라이브 브랜치로 업데이트하면 원활한 전환이 가능합니다.
- 이러한 전략 중에서 선택하는 것은 구체적인 요구사항, 업데이트 빈도, 인프라 설정에 따라 다릅니다. 하지만 선택한 전략과 관계없이 단일 지점 내에서 통합 카탈로그를 유지하는 것은 Vertex AI Search for commerce에서 최적의 성능과 일관된 검색 결과를 위해 매우 중요합니다.
백업에 브랜치 사용:
- 단일 라이브 브랜치는 제품 업데이트의 지속적인 수집 및 처리에 중점을 두어 상거래를 위한 Vertex AI Search 색인을 거의 실시간으로 최신 상태로 유지합니다.
- 또 다른 브랜치는 Retail Search에서 변환된 데이터의 일일 스냅샷을 만드는 데 중점을 두며, 데이터 손상이나 브랜치 0의 문제가 발생할 경우 강력한 대체 메커니즘 역할을 합니다.
- 세 번째 브랜치는 변환된 날짜의 주간 스냅샷을 만드는 데 중점을 둡니다. 이렇게 하면 고객이 서로 다른 브랜치에 하루 된 백업과 일주일 된 백업을 보유할 수 있습니다.
카탈로그 브랜치 삭제
새 카탈로그 데이터를 기존 브랜치로 가져오는 경우 브랜치로 가져온 데이터의 무결성을 위해 카탈로그 브랜치가 비어 있어야 합니다. 브랜치가 비어 있으면 새 카탈로그 데이터를 가져온 후 브랜치를 판매자 계정에 연결할 수 있습니다.
실시간 예측이나 검색 트래픽을 제공하고 기본 브랜치를 영구 삭제하려면 먼저 삭제하기 전에 다른 브랜치를 기본값으로 지정하는 것이 좋습니다. 기본 브랜치가 삭제된 후 빈 결과를 제공하므로 활성 기본 브랜치를 삭제하면 서비스가 중단될 수 있습니다.
카탈로그 브랜치에서 데이터를 삭제하려면 다음 단계를 완료합니다.
커머스를 위한 Search 콘솔에서 데이터> 페이지로 이동합니다.
데이터 페이지로 이동브랜치 이름 필드에서 카탈로그 브랜치를 선택합니다.
브랜치 이름 필드 옆에 있는 점 3개로 된 메뉴에서 브랜치 영구 삭제를 선택합니다.
브랜치의 모든 데이터는 물론 브랜치용으로 생성된 속성도 삭제된다는 경고 메시지가 표시됩니다.
브랜치를 입력하고 확인을 클릭하여 브랜치에서 카탈로그 데이터를 영구 삭제합니다.
장기 실행 작업이 시작되어 카탈로그 브랜치에서 데이터가 영구 삭제됩니다. 영구 삭제 작업이 완료되면 삭제 상태가 활동 상태 창의 제품 카탈로그 목록에 표시됩니다.
상거래를 위한 Vertex AI Search의 인벤토리 업데이트
이 섹션에서는 정기적인 인벤토리 업데이트를 실행하여 상거래를 위한 Vertex AI Search 성능을 최적화하는 방법을 설명합니다.
실시간 스트리밍
- 인벤토리 정보 (가격, 재고) 및 주문 처리 상태, 매장별 가격을 비롯한 매장 수준 세부정보와 같은 동적 데이터의 경우 Vertex AI Search for commerce 내에서 실시간 스트리밍만 사용할 수 있습니다.
- 이러한 차이는 상대적으로 정적인 제품 카탈로그 데이터에 비해 인벤토리 변동이 빈번하게 발생하기 때문에 발생합니다. 제품 구매 가능 여부는 하루에 여러 번 변경될 수 있지만 설명이나 속성은 비교적 일정하게 유지됩니다.
- 매장 수준 업데이트 빈도는 소매업체 위치 수에 따라 더욱 증가합니다.
비동기 업데이트
- 이러한 빠른 변화에 대응하기 위해 커머스용 Vertex AI Search는 작업 ID를 반환하는 API를 사용하여 비동기 인벤토리 업데이트를 사용합니다.
- 작업 상태가 폴링되고 확인될 때까지 업데이트 프로세스가 완료된 것으로 간주되지 않으므로 몇 초에서 몇 분에 이르는 약간의 지연이 발생할 수 있습니다.
순서가 잘못된 업데이트
- 이 시스템의 주목할 만한 기능은 해당 제품이 카탈로그에 인그레션되기 전에 재고 정보를 업데이트할 수 있다는 점입니다. 이 기능은 인벤토리 및 제품 데이터 파이프라인이 소매업체 내에서 독립적으로 작동하여 제품 카탈로그가 업데이트되기 전에 인벤토리 정보가 제공되는 일반적인 시나리오를 해결합니다. 인벤토리를 업데이트할 때
allowMissing
옵션을 사용하여 제품 대비 인벤토리의 순서가 잘못된 업데이트를 처리합니다. - 인벤토리 업데이트가 카탈로그 수집보다 먼저 이루어지도록 허용함으로써 상거래를 위한 Vertex AI Search는 이러한 파이프라인 불일치를 수용하여 새로 도입된 제품에 대해서도 정확한 인벤토리 데이터를 사용할 수 있도록 합니다.
- 하지만 제품의 인벤토리 정보는 24시간 동안 보관되며, 이 기간 내에 일치하는 제품이 수집되지 않으면 삭제됩니다. 이 메커니즘은 데이터 일관성을 보장하고 오래된 인벤토리 정보가 시스템에 유지되지 않도록 합니다.
상거래를 위한 Vertex AI Search에서 강력한 A/B 테스트를 위한 제품 카탈로그 사전 검사
이 섹션에서는 제품 카탈로그 데이터에 사전 검사를 실행하는 방법을 설명합니다.
일관된 카탈로그 업데이트 패리티 보장
- 상거래용 Vertex AI Search 내에서 A/B 테스트를 준비할 때는 기존 (관리) 카탈로그와 상거래용 Vertex AI Search (테스트) 카탈로그 간의 엄격한 동등성을 유지하는 것이 중요합니다. 두 그룹 간에 불균형이 있으면 A/B 테스트에 부정적인 영향을 미쳐 관찰 결과가 왜곡되고 결과가 무효화될 수 있습니다. 예를 들어 제품 재고, 가격 또는 사소한 속성 불일치가 테스트 데이터에 의도치 않은 편향을 유발할 수 있습니다.
- 이러한 위험을 완화하려면 관리 및 테스트 카탈로그 모두에 대해 병렬 업데이트 프로세스를 설계하여 가능한 경우 순차적 업데이트를 피해야 합니다. 목표는 두 카탈로그가 동기화되는 시간을 최대화하는 것입니다. 반면 직렬 업데이트는 한 차선 또는 다른 차선에 지연을 발생시킬 수 있습니다. 이러한 지연으로 인해 한 카탈로그에는 제품이 재고가 있지만 다른 카탈로그에는 재고가 없는 등 카탈로그가 일시적으로 불일치할 수 있습니다. 또는 새로 추가된 제품이 다른 카탈로그보다 한 카탈로그에 더 빨리 표시됩니다. 이러한 차이는 사용자 행동, 클릭수, 구매에 상당한 영향을 미쳐 궁극적으로 불공정한 비교와 부정확한 A/B 테스트 결과로 이어질 수 있습니다.
- 병렬 업데이트를 우선시하고 일관된 카탈로그 패리티를 위해 노력하면 소매업체는 커머스용 Vertex AI Search 내에서 공정한 A/B 테스트를 진행할 수 있습니다. 이 접근 방식을 사용하면 테스트 결과를 편견 없이 공정하게 분석할 수 있으므로 더 신뢰할 수 있는 통계와 정보에 입각한 의사 결정을 내릴 수 있습니다.
카탈로그 데이터 패리티 달성
- 이커머스 검색 모델의 제품 이해도와 정확도는 기본 제품 카탈로그 정보의 풍부함과 품질에 달려 있습니다. 카탈로그 내 제품 데이터가 포괄적일수록 모델이 제품을 효과적으로 이해하고 분류할 수 있습니다.
- 따라서 A/B 테스트를 준비할 때는 기존 (관리) 카탈로그와 Vertex AI Search for Commerce (테스트) 카탈로그에 업로드된 제품 데이터가 동일해야 합니다. 이 두 환경 간의 제품 정보 불일치는 A/B 테스트 결과에 큰 편향을 줄 수 있습니다.
- 예를 들어 기존 검색엔진이 상거래를 위한 Vertex AI Search보다 더 풍부하거나 광범위한 카탈로그를 활용하는 경우 불공정한 이점이 발생합니다. 상거래를 위한 Vertex AI Search 카탈로그에 정보가 누락되면 제품 이해 및 분류에 심각한 영향을 미쳐 검색 결과가 부정확해지고 실적 비교가 잘못될 수 있습니다. 이러한 불일치를 외부 도구로 감지하기는 어려우며 두 카탈로그를 모두 세심하게 수동으로 검사해야 하는 경우가 많습니다.
- 소매업체는 두 카탈로그에 동일한 수준의 세부정보가 포함된 동일한 제품 데이터가 포함되도록 주의 깊게 확인하여 상거래용 Vertex AI Search에서 A/B 테스트를 위한 공정한 경쟁의 장을 마련할 수 있습니다. 이 접근 방식을 사용하면 두 검색엔진을 공정하고 편향되지 않게 비교하여 각 검색엔진의 성능과 기능을 정확하게 평가할 수 있습니다.
재해 복구 계획
잘 준비된 재해 복구 계획을 통해 상거래 검색 기능이 계속 작동하고 응답성을 유지하여 고객 경험과 수익 창출에 미치는 영향을 최소화할 수 있습니다. 이 계획을 통해 기본 원인과 관계없이 카탈로그 및 사용자 이벤트 수집 파이프라인의 잠재적 오류를 해결하기 위해 카탈로그를 신속하게 복원할 수 있습니다.
데이터 스테이징에 BigQuery를 사용하면 재해 복구에 뚜렷한 이점이 있습니다. Vertex AI Search for Commerce 내의 현재 카탈로그 또는 사용자 이벤트 데이터가 BigQuery에 저장된 최신 스냅샷과 크게 다르지 않은 경우 가져오기 API를 호출하면 빠른 복원이 시작될 수 있습니다. 이 접근 방식을 사용하면 다운타임을 최소화하고 검색 기능이 계속 작동하도록 할 수 있습니다.
반대로 BigQuery가 데이터 파이프라인에 통합되지 않은 경우 알려진 양호한 상태에서 카탈로그를 신속하게 다시 로드할 수 있는 대체 메커니즘이 있어야 합니다. 이러한 메커니즘에는 백업 시스템, 데이터 복제 또는 기타 장애 조치 전략이 포함될 수 있습니다.
이러한 재해 복구 고려사항을 상거래를 위한 Vertex AI Search 아키텍처에 통합하면 예상치 못한 중단이 발생하더라도 시스템의 견고성을 강화하고 비즈니스 연속성을 유지할 수 있습니다.
고가용성 계획
제품 카탈로그를 Vertex AI Search에 업로드할 때는 다양한 Google Cloud 서비스에서 리전을 처리하는 방식을 고려하여 복원력 있는 데이터 수집 파이프라인을 설계하는 것이 중요합니다.
Dataflow를 사용하여 재해 복구 기능을 지원하는 수집 파이프라인을 빌드하려면 다음 설계 중 하나를 사용하여 여러 리전에 작업을 배포하세요.
- 활성/활성: 여러 리전의 Dataflow 인스턴스가 동시에 데이터를 적극적으로 처리합니다.
- 활성/수동: 한 리전의 Dataflow 인스턴스는 활성 상태이고 다른 리전의 인스턴스는 대기 상태로 유지됩니다.
Pub/Sub 및 Dataflow로 이러한 설계를 구현하는 방법은 다음과 같습니다.
- 전역 서비스: Pub/Sub과 같은 일부 서비스는 전역으로 운영됩니다. Google Cloud 는 특정 서비스수준계약 (SLA)에 따라 가용성을 관리합니다.
- 리전 서비스: 데이터를 변환하고 Vertex AI Search로 수집하는 데 사용할 수 있는 Dataflow와 같은 다른 서비스는 리전 서비스입니다. 고가용성 및 재해 복구를 위해 이러한 구성요소를 구성하는 것은 사용자의 책임입니다.
예를 들어 데이터를 유지하는 데 BigQuery를 활용하는 경우 데이터 중복 및 가용성이 Google Cloud에 의해 자동으로 처리되도록 멀티 리전으로 구성할 수 있습니다. 마찬가지로 Cloud Storage를 사용할 때 멀티 리전으로 구성할 수 있습니다.
활성/활성 설계
활성/활성 설계는 Pub/Sub 메시지 속성과 구독 필터를 사용하여 각 메시지가 특정 리전의 활성 Dataflow 작업에 의해 정확히 한 번 처리되도록 합니다.
메시지 속성 추가: 제품 업데이트와 같은 메시지를 Pub/Sub 주제에 게시할 때 타겟 지역을 나타내는 속성을 포함합니다. 예를 들면 다음과 같습니다.
region
:us-central1
region
:us-east1
구독 필터 구성: 각 리전별 Dataflow 파이프라인의 경우 메시지 필터를 사용하여 해당 리전과 일치하는 메시지만 가져오도록 Pub/Sub 구독을 구성합니다. 예를 들어
us-central1
Dataflow 작업의 구독에는attributes.region = "us-central1"
과 같은 필터가 있습니다.장애 조치: 리전을 사용할 수 없게 되면 업스트림 게시 시스템을 업데이트하여 모든 새 메시지에 정상 리전의 속성을 태그합니다. 이렇게 하면 메시지 처리가 장애 조치 리전의 Dataflow 인스턴스로 리라우팅됩니다.
아키텍처에 사용되는 여러 구성요소를 기본적으로 멀티 리전으로 구성할 수 있습니다. 예를 들어 데이터를 유지하는 데 BigQuery를 활용하는 경우 데이터 중복 및 가용성이 Cloud Storage에 의해 자동으로 처리되도록 멀티 리전으로 구성할 수 있습니다. 마찬가지로 Cloud Storage를 사용하는 경우 멀티 리전으로 구성할 수 있습니다.
활성/수동 설계
이 설계에서는 언제든지 Pub/Sub에서 메시지를 적극적으로 가져오는 리전별 Dataflow 파이프라인이 하나만 있습니다.
구독 하나 연결: 활성 리전의 Dataflow 작업용 Pub/Sub 구독만 연결되어 메시지를 가져오는지 확인합니다. 수동 리전의 Dataflow 작업 구독은 생성되지만 분리된 상태로 유지되어야 합니다.
장애 조치: 활성 리전에 오류가 발생하면 수동 또는 프로그래매틱 방식으로 다음 작업을 실행합니다.
- 실패한 리전의 Dataflow 작업과 연결된 Pub/Sub 구독을 분리합니다.
- 수동 (대기) 리전 중 하나의 Dataflow 작업과 연결된 Pub/Sub 구독을 연결합니다.
이렇게 하면 메시지 처리 부하가 새로 활성화된 리전으로 이전됩니다.
복원력 및 포렌식
데이터 수집 설계에 BigQuery를 사용하면 복원력을 처리하고 포렌식 및 디버깅 기능을 만들 수 있습니다. patch
및 addLocalInventory
API를 사용하여 직접 수집된 제품 및 인벤토리는 데이터가 상거래용 Vertex AI Search로 전송될 때 제품 및 인벤토리 업데이트의 흔적이 남지 않음을 의미합니다. 사용자가 제품이 예상대로 표시되지 않는 이유를 알고 싶어 할 수 있습니다. BigQuery로 빌드되고 데이터의 전체 기록이 있는 스테이징 영역이 있으면 이러한 조사와 디버깅이 용이해집니다.
참조 아키텍처
이 아키텍처에서 데이터 수집은 일반적으로 BigQuery를 기반으로 빌드된 원시, 선별, 소비 단계를 모두 포함합니다. 시스템은 Dataflow를 사용하여 단계 간에 데이터를 이동하고 클라우드 워크플로를 사용하여 이 모든 것을 자동화하도록 조정합니다.
- 시스템은 원시 데이터를 그대로 가져와 기록을 유지하기 위해 시간 태그를 지정합니다. 이 데이터는 변경되지 않으므로 고객은 이를 신뢰할 수 있는 소스로 간주합니다.
- 그러면 시스템에서 데이터를 선별된 단계로 변환하고 다시 시간 태그를 지정합니다. 이렇게 하면 고객이 변환된 시점과 실패한 항목을 알 수 있습니다.
- 마지막으로 시스템은 시스템이 이전에 데이터에 태그한 시간을 사용하여 선별된 데이터에 소비 단계의 뷰를 만듭니다. 이렇게 하면 고객이 최종적으로 상거래를 위한 Vertex AI Search에 수집되어야 하는 변환된 데이터를 정확하게 알 수 있습니다.
브랜치 0, 브랜치 1, 브랜치 2는 라이브, 하루 전 백업, 일주일 전 백업 브랜치로 사용됩니다. 브랜치 0으로 직접 수집된 데이터는 매일 브랜치 1로, 매주 브랜치 2로 집계되고 색인이 생성됩니다. 이렇게 하면 데이터 손상을 롤백하여 비즈니스 연속성과 시스템 복원력을 향상할 수 있습니다.
또한 데이터의 전체 기록과 계보가 전역 BigQuery 데이터 세트에 유지되므로 분석과 디버깅이 가능합니다.
카탈로그 수집의 특이 사례 계획
상거래를 위한 Vertex AI Search에서 카탈로그 수집을 위한 핵심 메커니즘이 설정되면 다양한 특이 사례에 대한 복원력을 평가하는 사전 예방적 접근 방식이 필요합니다. 이러한 시나리오 중 일부는 특정 비즈니스 요구사항과 관련이 없을 수 있지만 백엔드 설계에 이를 반영하면 향후에 유용하게 사용할 수 있습니다.
이 준비 단계에서는 데이터 파이프라인이 예기치 않은 시나리오나 특이 사례 시나리오를 처리할 수 있는지 검토하여 파이프라인의 견고성과 변화하는 요구사항에 대한 적응성을 보장합니다. 잠재적인 문제를 예측하고 선제적으로 해결하면 향후 중단을 완화하고 제품 데이터가 소매 검색 시스템으로 원활하게 흐르도록 유지할 수 있습니다.
이를 위해 Dataflow 로직은 다음을 충족하도록 빌드해야 합니다.
원시 데이터의 각 항목이 적절한 스키마와 일치하는지 확인합니다. 원시 데이터의 계약은 미리 결정되어야 하며 모든 데이터 요소는 항상 계약과 일치해야 합니다. 유효성 검사 실패 시 원시 데이터 요소에 시간 태그가 지정되어야 하며 포렌식용 실제 오류와 함께 BigQuery 실패 원시 테이블에 유지되어야 합니다.
이러한 실패의 예는 다음과 같습니다.
- 계약에 포함되지 않은 특정 속성이 갑자기 원시 데이터 요소에 표시됩니다.
- 원시 데이터 요소에 특정 필수 속성이 없습니다.
변환을 위해 원시 데이터의 각 항목을 상거래를 위한 Vertex AI Search 형식으로 검증합니다. 상거래를 위한 Vertex AI Search에서 제품 수집에 필요한 필수 필드가 있습니다. 이제 원시 데이터의 모든 요소가 상거래를 위한 Vertex AI Search 스키마 형식으로 성공적으로 변환될 수 있는지 다시 확인해야 합니다. 변환이 실패하는 경우 원시 데이터 요소에 시간 태그를 지정하고 포렌식을 지원할 수 있는 실제 오류 메시지와 함께 BigQuery 실패 선별 테이블에 유지해야 합니다.
이러한 실패의 예는 다음과 같습니다.
- 원시 데이터 요소가 영숫자이므로 가격과 같은 특정 속성을 숫자로 서식을 지정할 수 없습니다.
- 제품 이름이 완전히 누락되었습니다.
이 예에서는 디버깅을 위해 모든 실패를 유지하는 샘플 BigQuery 테이블 스키마를 보여줍니다.
샘플 BigQuery 테이블 스키마 보기
[ { "mode": "REQUIRED", "name": "ingestedTimestamp", "type": "TIMESTAMP" }, { "mode": "REQUIRED", "name": "payloadString", "type": "STRING" }, { "mode": "REQUIRED", "name": "payloadBytes", "type": "BYTES" }, { "fields": [ { "mode": "NULLABLE", "name": "key", "type": "STRING" }, { "mode": "NULLABLE", "name": "value", "type": "STRING" } ], "mode": "REPEATED", "name": "attributes", "type": "RECORD" }, { "mode": "NULLABLE", "name": "errorMessage", "type": "STRING" }, { "mode": "NULLABLE", "name": "stacktrace", "type": "STRING" } ]
스트레스 테스트 및 확장성
스트레스 테스트와 확장성을 통해 대량 이벤트와 성장에 대비하세요.
트래픽이 많은 이벤트
연말연시와 같은 트래픽이 많은 이벤트는 데이터 수집 파이프라인에 상당한 어려움을 야기합니다. 재고 수준과 가격을 비롯한 인벤토리 업데이트의 급증과 제품 속성의 잠재적 변경사항에는 강력한 인프라가 필요합니다. 수집 시스템이 이 증가된 부하를 처리할 수 있는지 평가하는 것이 중요합니다. 최대 트래픽 패턴을 복제하는 시뮬레이션된 부하 테스트를 통해 병목 현상을 식별하고 중요한 기간 동안 원활한 운영을 보장할 수 있습니다.
반짝 세일
반짝 세일은 기간이 짧고 인벤토리가 빠르게 변동되므로 특별한 문제가 발생합니다. 검색 결과와 실제 재고 간의 불일치를 방지하려면 실시간 재고 동기화가 중요합니다. 이렇게 하지 않으면 인기 제품이 실제로 품절되었는데 재고가 있는 것으로 표시되거나 그 반대의 경우와 같은 부정적인 고객 경험이 발생할 수 있습니다. 또한 특가 기간 중의 가격 변경은 제품 순위에 큰 영향을 미칠 수 있으므로 검색 색인에서 정확하고 시기적절한 가격 업데이트가 필요합니다.
카탈로그 확장
비즈니스 성장 또는 제품 라인 확대로 인해 카탈로그 내 제품 수가 5배 또는 10배로 크게 증가할 수 있습니다. 수집 아키텍처는 이러한 성장을 원활하게 수용할 수 있도록 확장 가능해야 합니다. 새 데이터 소스나 제품 정보 형식이 도입되는 경우 특히 전체 ETL (추출, 변환, 로드) 파이프라인을 다시 검토해야 할 수 있습니다.
이러한 잠재적 시나리오에 선제적으로 대처하면 갑작스러운 트래픽 급증, 특가 할인 또는 상당한 카탈로그 증가에도 상거래용 Vertex AI Search 수집 파이프라인이 강력하고 확장 가능하며 응답성이 유지됩니다. 이러한 사전 대응 방식은 검색 결과의 정확성과 신뢰성을 보호하여 긍정적인 사용자 환경을 제공하고 비즈니스 성공을 이끌어냅니다.
데이터 수집 파이프라인 성능을 평가하고 다음 측정항목에 대한 기준을 형성해야 합니다.
- 전체 카탈로그 및 인벤토리 데이터를 게시하고 수집하는 데 얼마나 걸리나요? 가격이 전체 카탈로그에서 크게 변경될 수 있는 BFCM 기간에는 이 작업이 필요할 수 있습니다.
- 단일 제품 업데이트가 반영되는 데 얼마나 걸리나요?
- 시스템에서 처리할 수 있는 제품 및 인벤토리 업데이트의 최대 비율은 얼마인가요?
병목 현상
- 파이프라인이 올바르게 확장 및 축소될 수 있는지 평가하고 확인합니다.
- 인스턴스 수의 최대 상한이 너무 높거나 낮은지 확인합니다.
- HTTP 코드 429를 확인하여 시스템이 상거래를 위한 Vertex AI Search에 의해 비율 제한되는지 확인합니다.
- 비율 제한을 줄이기 위해 특정 API 할당량을 늘려야 하는지 확인합니다.
카탈로그 수집을 위한 제품 데이터 구조
이 섹션에서는 카탈로그 수집을 위해 제품 데이터를 준비하는 방법을 설명합니다.
기본 제품
기본 제품은 옵션 제품을 그룹화하는 컨테이너이자 검색 그리드의 항목 역할을 합니다. 기본 제품에 지정된 변형 간에 공유되는 공통 속성만 있습니다. 예를 들면 다음과 같습니다.
- 기본 제품 ID
- 제품 ID (기본 제품 ID와 동일)
- 제목
- 설명
자세한 내용은 제품 속성 정보를 참고하세요.
옵션이 있는 제품
변이 제품은 기본 제품의 공통 속성을 상속하지만 고유한 값을 지정할 수도 있습니다.
필수 속성은 다음과 같습니다.
- 기본 제품에 지정된 모든 속성 (제품명, 설명) 가격, 제품명, 설명은 기본 제품과 다를 수 있습니다.
- 구체적인 옵션 속성 (색상, 사이즈, 기타 관련 제품 옵션)
자세한 내용은 제품 속성 정보를 참고하세요.
속성 가져오기
검색 과정에서는 기본 제품과 변형 제품의 모든 검색 가능한 속성이 고려됩니다.
관련성 점수
관련성 점수는 제목 및 설명 필드만을 기반으로 합니다. 적절한 차별화를 위해 기본 제품 제목에서 옵션을 약간 수정합니다 (예: 제품 이름 + 색상).
검색 결과의 옵션 일치
옵션 일치 (예: 파란색 드레스)는 색상, 사이즈와 같은 사전 정의된 옵션 속성을 기반으로 결과를 필터링합니다. 검색 결과는 기본 제품별로 최대 5개의 일치하는 옵션을 반환합니다.
상거래를 위한 Vertex AI Search에 판매자 센터 동기화
판매자 센터는 매장 및 제품 데이터를 쇼핑 광고 및 기타 Google 서비스에 사용할 수 있게 해주는 도구입니다.
판매자 센터와 상거래를 위한 Vertex AI Search 사이의 지속적인 동기화를 위해서는 판매자 센터 계정을 상거래를 위한 Vertex AI Search에 연결할 수 있습니다.
상거래를 위한 Vertex AI Search에 대해 판매자 센터 동기화를 설정할 때는 판매자 센터에 관리자 IAM 역할이 할당되어 있어야 합니다. 일반 액세스 역할을 사용하면 판매자 센터 피드를 읽을 수 있지만 판매자 센터를 상거래를 위한 Vertex AI Search에 동기화하려고 하면 오류 메시지가 표시됩니다. 따라서 판매자 센터를 상거래를 위한 Vertex AI Search에 성공적으로 동기화하려면 먼저 역할을 업그레이드해야 합니다.
판매자 센터 계정 연결
Vertex AI Search for Commerce가 판매자 센터 계정에 연결되어 있으면 동안 판매자 센터의 제품 데이터가 변경되었을 때 이러한 변경사항이 몇 분 내에 Vertex AI Search for Commerce에서 자동으로 업데이트됩니다. 판매자 센터 변경사항이 Vertex AI Search for Commerce에 동기화되지 않도록 하려면 판매자 센터 계정을 연결 해제하면 됩니다.
판매자 센터 계정을 연결 해제해도 Vertex AI Search for Commerce에서 제품이 삭제되지 않습니다. 가져온 제품을 삭제하려면 제품 정보 삭제를 참고하세요.
판매자 센터 계정을 동기화하려면 다음 단계를 수행합니다.
판매자 센터 계정 동기화
Cloud 콘솔
-
커머스를 위한 Search 콘솔에서 데이터> 페이지로 이동합니다.
데이터 페이지로 이동 - 가져오기를 클릭하여 데이터 가져오기 패널을 엽니다.
- 제품 카탈로그를 선택합니다.
- 데이터 소스로 판매자 센터 동기화를 선택합니다.
- 판매자 센터 계정을 선택합니다. 계정이 표시되지 않으면 사용자 액세스를 확인합니다.
- 선택사항: 선택한 피드의 제품만 가져오려면 판매자 센터 피드 필터를 선택합니다.
지정하지 않으면 향후 피드를 포함하여 모든 피드의 제품을 가져옵니다. - 선택사항: 특정 국가 또는 언어를 타겟팅하는 제품만 가져오려면 고급 옵션 표시를 펼치고 필터링할 판매자 센터 판매 국가 및 언어를 선택합니다.
- 카탈로그를 업로드할 브랜치를 선택합니다.
- 가져오기를 클릭합니다.
curl
로컬 환경의 서비스 계정이 판매자 센터 계정 및 Vertex AI Search for Commerce에 모두 액세스할 수 있는지 확인합니다. 판매자 센터 계정에 액세스할 수 있는 계정을 확인하려면 판매자 센터의 사용자 계정을 참조하세요.
MerchantCenterAccountLink.create
메서드를 사용하여 링크를 설정합니다.curl -X POST \ -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \ -H "Content-Type: application/json; charset=utf-8" \ --data '{ "merchantCenterAccountId": MERCHANT_CENTER_ID, "branchId": "BRANCH_ID", "feedFilters": [ {"dataSourceId": DATA_SOURCE_ID_1} {"dataSourceId": DATA_SOURCE_ID_2} ], "languageCode": "LANGUAGE_CODE", "feedLabel": "FEED_LABEL", }' \ "https://retail.googleapis.com/v2alpha/projects/PROJECT_ID/locations/global/catalogs/default_catalog/merchantCenterAccountLinks"
- MERCHANT_CENTER_ID: 판매자 센터 계정의 ID입니다.
- BRANCH_ID: 연결을 설정할 브랜치의 ID입니다. '0', '1' 또는 '2' 값을 수락합니다.
- LANGUAGE_CODE: (선택사항) 가져올 제품의 두 글자 언어 코드입니다. 판매자 센터에서 제품의
Language
열과 같이 표시됩니다. 설정하지 않으면 모든 언어를 가져옵니다. - FEED_LABEL: (선택사항) 가져올 제품의 피드 라벨입니다. 판매자 센터의 제품 피드 라벨 열 제품에서 피드 라벨을 확인할 수 있습니다. 설정하지 않으면 모든 피드 라벨을 가져옵니다.
- FEED_FILTERS: (선택사항) 제품을 가져올 기본 피드 목록입니다. 피드를 선택하지 않으면 모든 판매자 센터 계정 피드가 공유됩니다. ID는 Content API 데이터 피드 리소스에서 확인하거나 판매자 센터를 방문하여 피드를 선택하고 사이트 URL의 afmDataSourceId 매개변수에서 피드 ID를 가져오는 방법으로 찾을 수 있습니다. 예를 들면
mc/products/sources/detail?a=MERCHANT_CENTER_ID&afmDataSourceId=DATA_SOURCE_ID
입니다.
연결된 판매자 센터를 보려면 Search for commerce 콘솔 데이터 페이지로 이동하고 페이지 오른쪽 위에서 판매자 센터 버튼을 클릭합니다. 그러면 연결된 판매자 센터 계정 패널이 열립니다. 이 패널에서 추가 판매자 센터 계정을 추가할 수도 있습니다.
가져온 제품을 보는 방법은 카탈로그에 대한 집계된 정보 보기를 참조하세요.
판매자 센터 계정 링크 나열
Cloud 콘솔
커머스를 위한 Search 콘솔에서 데이터> 페이지로 이동합니다.
데이터 페이지로 이동페이지 오른쪽 위에 있는 판매자 센터 버튼을 클릭하여 연결된 판매자 센터 계정 목록을 엽니다.
curl
MerchantCenterAccountLink.list
메서드를 사용하여 링크 리소스를 나열합니다.
curl -X GET \ -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \ -H "Content-Type: application/json; charset=utf-8" \ "https://retail.googleapis.com/v2alpha/projects/PROJECT_NUMBER/locations/global/catalogs/default_catalog/merchantCenterAccountLinks"
판매자 센터 계정 연결 해제
판매자 센터 계정을 연결 해제하면 해당 계정에서 Vertex AI Search for Commerce로의 카탈로그 데이터 동기화가 중지됩니다. 이 절차를 수행해도 이미 업로드된 상거래를 위한 Vertex AI Search의 제품은 삭제되지 않습니다.
Cloud 콘솔
커머스를 위한 Search 콘솔에서 데이터> 페이지로 이동합니다.
데이터 페이지로 이동페이지 오른쪽 위에 있는 판매자 센터 버튼을 클릭하여 연결된 판매자 센터 계정 목록을 엽니다.
연결 해제하려는 판매자 센터 계정 옆에 있는 연결 해제를 클릭하여 대화상자에서 표시된 옵션을 확인합니다.
curl
MerchantCenterAccountLink.delete
메서드를 사용하여 MerchantCenterAccountLink
리소스를 삭제합니다.
curl -X DELETE \ -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \ -H "Content-Type: application/json; charset=utf-8" \ "https://retail.googleapis.com/v2alpha/projects/PROJECT_NUMBER/locations/global/catalogs/default_catalog/merchantCenterAccountLinks/BRANCH_ID_MERCHANT_CENTER_ID"
판매자 센터 연결 제한사항
판매자 센터 계정 한 개를 카탈로그 브랜치 여러 개에 연결할 수 있지만 카탈로그 브랜치 한 개는 판매자 센터 계정 하나에만 연결될 수 있습니다.
판매자 센터 계정은 멀티 클라이언트 계정(MCA) 일 수 없습니다. 하지만 개별 하위 계정을 연결할 수 있습니다.
판매자 센터 계정을 연결한 후 처음 가져오기를 수행하면 완료하는 데 몇 시간 정도 걸릴 수 있습니다. 소요되는 시간은 판매자 센터 계정의 제품 수에 따라 다릅니다.
API 메서드를 사용한 제품 수정은 판매자 센터 계정에 연결된 브랜치에 대해 사용 중지됩니다. 이러한 브랜치의 제품 카탈로그 데이터를 변경하려면 판매자 센터를 통해 변경해야 합니다. 그런 후 이러한 변경사항이 커머스용 Vertex AI Search에 자동으로 동기화됩니다.
판매자 센터 연결을 사용하는 브랜치에서는 컬렉션 제품 유형을 지원하지 않습니다.
데이터 정확성을 위해 판매자 센터 계정을 빈 카탈로그 브랜치에만 연결할 수 있습니다. 카탈로그 브랜치에서 제품을 삭제하려면 제품 정보 삭제를 참고하세요.
BigQuery에서 카탈로그 데이터 가져오기
BigQuery에서 올바른 형식으로 카탈로그 데이터를 가져오려면 Vertex AI Search for Commerce 스키마를 사용해서 올바른 형식으로 BigQuery 테이블을 만들고 빈 테이블에 카탈로그 데이터를 로드합니다. 그런 다음 데이터를 상거래를 위한 Vertex AI Search에 업로드합니다.
BigQuery 테이블에 대한 도움말은 테이블 소개를 참조하세요. BigQuery 쿼리에 대한 도움말은 BigQuery 데이터 쿼리 개요를 참조하세요.
Cloud Shell 편집기에서 이 태스크의 단계별 안내를 직접 수행하려면 둘러보기를 클릭합니다.
카탈로그를 가져오려면 다음 안내를 따르세요.
BigQuery 데이터 세트가 다른 프로젝트에 있으면 Vertex AI Search for Commerce가 BigQuery 데이터 세트에 액세스할 수 있도록 필요한 권한을 구성합니다. 자세히 알아보기
카탈로그 데이터를 Vertex AI Search for Commerce로 가져옵니다.
Cloud 콘솔
-
커머스를 위한 Search 콘솔에서 데이터> 페이지로 이동합니다.
데이터 페이지로 이동 - 가져오기를 클릭하여 데이터 가져오기 패널을 엽니다.
- 제품 카탈로그를 선택합니다.
- 데이터 소스로 BigQuery를 선택합니다.
- 카탈로그를 업로드할 브랜치를 선택합니다.
- Retail 제품 카탈로그 스키마를 선택합니다. 이는 상거래를 위한 Vertex AI Search의 제품 스키마입니다.
- 데이터가 있는 BigQuery 테이블을 입력합니다.
- 선택사항: 고급 옵션 표시에서 프로젝트의 Cloud Storage 버킷 위치를 데이터의 임시 위치로 입력합니다.
지정하지 않으면 기본 위치가 사용됩니다. 지정하면 BigQuery 및 Cloud Storage 버킷은 같은 리전에 있어야 합니다. - Search를 사용 설정하지 않고 판매자 센터 스키마를 사용하는 경우 제품 수준을 선택합니다.
처음 카탈로그를 가져오거나 카탈로그를 삭제한 후 다시 가져오는 경우 제품 수준을 선택해야 합니다. 제품 수준 자세히 알아보기 데이터를 가져온 후에 제품 수준을 변경하려면 상당한 노력이 필요합니다.
중요: 변형으로 수집된 제품 카탈로그가 있는 프로젝트에는 검색을 사용 설정할 수 없습니다. - 가져오기를 클릭합니다.
curl
카탈로그를 처음 업로드하거나 카탈로그를 삭제한 후 다시 가져오는 경우
Catalog.patch
메서드를 사용하여 제품 수준을 설정합니다. 이 작업을 수행하려면 Retail 관리자 역할이 필요합니다.ingestionProductType
:primary
(기본값) 및variant
값을 지원합니다.merchantCenterProductIdField
:offerId
및itemGroupId
값을 지원합니다. 판매자 센터를 사용하지 않는 경우에는 이 필드를 설정할 필요가 없습니다.
curl -X PATCH \ -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \ -H "Content-Type: application/json; charset=utf-8" \ --data '{ "productLevelConfig": { "ingestionProductType": "PRODUCT_TYPE", "merchantCenterProductIdField": "PRODUCT_ID_FIELD" } }' \ "https://retail.googleapis.com/v2/projects/PROJECT_ID/locations/global/catalogs/default_catalog"
가져오기의 입력 매개변수에 대한 데이터 파일을 만듭니다.
BigQuerySource 객체를 사용하여 BigQuery 데이터 세트를 가리킵니다.
- DATASET_ID: BigQuery 데이터 세트의 ID입니다.
- TABLE_ID: 데이터를 보관하는 BigQuery 테이블의 ID입니다.
- PROJECT_ID: BigQuery 소스가 있는 프로젝트 ID입니다. 지정하지 않으면 프로젝트 ID가 상위 요청에서 상속됩니다.
- STAGING_DIRECTORY: 선택사항. 데이터를 BigQuery로 가져오기 전에 데이터의 중간 위치로 사용되는 Cloud Storage 디렉터리입니다. 임시 디렉터리를 자동으로 만들려면 이 필드를 비워둡니다(추천).
- ERROR_DIRECTORY: 선택사항. 가져오기에 대한 오류 정보를 볼 수 있는 Cloud Storage 디렉터리입니다. 임시 디렉터리를 자동으로 만들려면 이 필드를 비워둡니다(추천).
dataSchema
:dataSchema
속성에product
(기본값) 값을 사용합니다. 상거래를 위한 Vertex AI Search 스키마를 사용합니다.
스테이징 또는 오류 디렉터리를 지정하지 않는 것이 좋습니다. 이렇게 하면 새 스테이징 및 오류 디렉터리가 있는 Cloud Storage 버킷을 자동으로 만들 수 있습니다. 이러한 디렉터리는 BigQuery 데이터 세트와 동일한 리전에서 생성되며 각 가져오기마다 고유합니다. 따라서 스테이징 데이터를 동일한 디렉터리로 가져오는 여러 작업이 방지되고 동일한 데이터 다시 가져오기가 방지됩니다. 3일이 지나면 버킷 및 디렉터리가 자동으로 삭제되어 스토리지 비용이 감소합니다.
자동으로 생성된 버킷 이름에는 프로젝트 ID, 버킷 리전, 데이터 스키마 이름이 밑줄로 구분되어 있습니다(예:
4321_us_catalog_retail
). 자동으로 생성된 디렉터리는staging
또는errors
라고 하며 숫자가 추가됩니다(예:staging2345
또는errors5678
).디렉터리를 지정하는 경우 Cloud Storage 버킷이 BigQuery 데이터 세트와 같은 리전에 있어야 합니다. 그렇지 않으면 가져오기가 실패합니다. 스테이징 및 오류 디렉터리를
gs://<bucket>/<folder>/
형식으로 지정합니다. 두 디렉터리는 서로 달라야 합니다.{ "inputConfig":{ "bigQuerySource": { "projectId":"PROJECT_ID", "datasetId":"DATASET_ID", "tableId":"TABLE_ID", "dataSchema":"product"} } }
Products:import
REST 메서드에POST
요청을 수행하여 카탈로그 정보를 가져오고 데이터 파일의 이름을 제공합니다(여기에서는input.json
으로 표시됨).curl -X POST \ -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \ -H "Content-Type: application/json; charset=utf-8" -d @./input.json \ "https://retail.googleapis.com/v2/projects/PROJECT_NUMBER/locations/global/catalogs/default_catalog/branches/0/products:import"
API를 사용하여 프로그래매틱 방식으로 상태를 확인할 수 있습니다. 다음과 같은 응답 객체가 수신됩니다.
{ "name": "projects/PROJECT_ID/locations/global/catalogs/default_catalog/operations/import-products-123456", "done": false }
이름 필드는 작업 객체의 ID입니다. 이 객체 상태를 요청하려면
done
필드가true
로 반환될 때까지 이름 필드를import
메서드에서 반환한 값으로 바꿉니다.curl -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \ "https://retail.googleapis.com/v2/projects/PROJECT_ID/locations/global/catalogs/default_catalog/operations/import-products-123456"
작업이 완료되면 반환된 객체의
done
값이true
가 되며 다음 예시와 비슷한 상태 객체가 포함됩니다.{ "name": "projects/PROJECT_ID/locations/global/catalogs/default_catalog/operations/import-products-123456", "metadata": { "@type": "type.googleapis.com/google.cloud.retail.v2.ImportMetadata", "createTime": "2020-01-01T03:33:33.000001Z", "updateTime": "2020-01-01T03:34:33.000001Z", "successCount": "2", "failureCount": "1" }, "done": true, "response": { "@type": "type.googleapis.com/google.cloud.retail.v2.ImportProductsResponse", }, "errorsConfig": { "gcsPrefix": "gs://error-bucket/error-directory" } }
Cloud Storage의 오류 디렉터리에서 파일을 검사하여 가져오기 중에 오류가 발생했는지 여부를 검사할 수 있습니다.
-
커머스를 위한 Search 콘솔에서 데이터> 페이지로 이동합니다.
BigQuery 데이터 세트에 대한 액세스 설정
BigQuery 데이터 세트가 Vertex AI Search for Commerce 서비스와 다른 프로젝트에 있을 때 액세스를 설정하려면 다음 단계를 완료하세요.
Google Cloud 콘솔에서 IAM 페이지를 엽니다.
상거래를 위한 Vertex AI Search 프로젝트를 선택합니다.
이름이 Retail 서비스 계정인 서비스 계정을 찾습니다.
이전에 가져오기 작업을 시작한 적이 없다면 이 서비스 계정이 나열되지 않을 수 있습니다. 이 서비스 계정이 표시되지 않으면 가져오기 태스크로 돌아가서 가져오기를 시작합니다. 권한 오류로 인해 가져오기가 실패하면 여기로 돌아와 이 작업을 완료하세요.
이메일 주소와 비슷한 서비스 계정의 식별자를 복사합니다(예:
[email protected]
).동일한 IAM 및 관리자 페이지에서 BigQuery 프로젝트로 전환하고 person_add 액세스 권한 부여를 클릭합니다.
새 주 구성원에 대해 Vertex AI Search for Commerce 서비스 계정의 식별자를 입력하고 BigQuery > BigQuery 사용자 역할을 선택합니다.
다른 역할 추가를 클릭하고 BigQuery > BigQuery 데이터 편집자를 선택합니다.
전체 프로젝트에 데이터 편집자 역할을 제공하지 않으려면 이 역할을 데이터 세트에 직접 추가하면 됩니다. 자세히 알아보기
저장을 클릭합니다.
제품 스키마
BigQuery에서 카탈로그를 가져올 때는 다음 상거래용 Vertex AI Search 제품 스키마를 사용하여 올바른 형식으로 BigQuery 테이블을 만들어 카탈로그 데이터와 함께 로드합니다. 그런 다음 카탈로그를 가져옵니다.
Cloud Storage에서 카탈로그 데이터 가져오기
카탈로그 데이터를 JSON 형식으로 가져오려면 가져올 카탈로그 데이터가 포함된 JSON 파일을 하나 이상 만들어 Cloud Storage에 업로드합니다. 여기에서 이를 상거래를 위한 Vertex AI Search로 가져올 수 있습니다.
JSON 제품 항목 형식의 예시는 제품 항목 JSON 데이터 형식을 참조하세요.
Cloud Storage에의 파일 업로드 관련 도움말은 객체 업로드를 참조하세요.
Vertex AI Search for Commerce 서비스 계정에 버킷 읽기 및 쓰기 권한이 있는지 확인합니다.
Vertex AI Search for Commerce 서비스 계정은 Google Cloud 콘솔의 IAM 페이지에 Retail 서비스 계정이라는 이름으로 나열됩니다. 계정을 버킷 권한에 추가할 때는 이메일 주소와 비슷한 서비스 계정 식별자 (예:
[email protected]
)를 사용합니다.카탈로그 데이터를 가져옵니다.
Cloud 콘솔
-
커머스를 위한 Search 콘솔에서 데이터> 페이지로 이동합니다.
데이터 페이지로 이동 - 가져오기를 클릭하여 데이터 가져오기 패널을 엽니다.
- 데이터 소스로 제품 카탈로그를 선택합니다.
- 카탈로그를 업로드할 브랜치를 선택합니다.
- Retail 제품 카탈로그 스키마를 스키마로 선택합니다.
- 데이터의 Cloud Storage 위치를 입력합니다.
- Search를 사용 설정하지 않은 경우 제품 수준을 선택합니다.
카탈로그를 처음으로 가져오거나 카탈로그를 삭제한 후 다시 가져오는 경우 제품 수준을 선택해야 합니다. 제품 수준 자세히 알아보기 데이터를 가져온 후에 제품 수준을 변경하려면 상당한 노력이 필요합니다.
중요: 변형으로 수집된 제품 카탈로그가 있는 프로젝트에는 검색을 사용 설정할 수 없습니다. - 가져오기를 클릭합니다.
curl
카탈로그를 처음 업로드하거나 카탈로그를 삭제한 후 다시 가져오는 경우
Catalog.patch
메서드를 사용하여 제품 수준을 설정합니다. 제품 수준 자세히 알아보기ingestionProductType
:primary
(기본값) 및variant
값을 지원합니다.merchantCenterProductIdField
:offerId
및itemGroupId
값을 지원합니다. 판매자 센터를 사용하지 않는 경우에는 이 필드를 설정할 필요가 없습니다.
curl -X PATCH \ -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \ -H "Content-Type: application/json; charset=utf-8" \ --data '{ "productLevelConfig": { "ingestionProductType": "PRODUCT_TYPE", "merchantCenterProductIdField": "PRODUCT_ID_FIELD" } }' \ "https://retail.googleapis.com/v2/projects/PROJECT_ID/locations/global/catalogs/default_catalog"
가져오기의 입력 매개변수에 대한 데이터 파일을 만듭니다.
GcsSource
객체를 사용하여 Cloud Storage 버킷을 가리킵니다.파일은 여러 개 제공하거나 하나만 제공할 수도 있습니다. 이 예시에서는 2개의 파일을 사용합니다.
- INPUT_FILE: 카탈로그 데이터가 포함된 Cloud Storage의 파일입니다.
- ERROR_DIRECTORY: 가져오기에 대한 오류 정보를 볼 수 있는 Cloud Storage 디렉터리입니다.
입력 파일 필드는
gs://<bucket>/<path-to-file>/
형식이어야 합니다. 오류 디렉터리는gs://<bucket>/<folder>/
형식이어야 합니다. 오류 디렉터리가 존재하지 않으면 생성됩니다. 버킷은 이미 있어야 합니다.{ "inputConfig":{ "gcsSource": { "inputUris": ["INPUT_FILE_1", "INPUT_FILE_2"] } }, "errorsConfig":{"gcsPrefix":"ERROR_DIRECTORY"} }
Products:import
REST 메서드에POST
요청을 수행하여 카탈로그 정보를 가져오고 데이터 파일의 이름을 제공합니다(여기에서는input.json
으로 표시됨).curl -X POST \ -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \ -H "Content-Type: application/json; charset=utf-8" -d @./input.json \ "https://retail.googleapis.com/v2/projects/PROJECT_NUMBER/locations/global/catalogs/default_catalog/branches/0/products:import"
가져오기 작업의 상태를 확인하는 가장 쉬운 방법은 Google Cloud 콘솔을 사용하는 것입니다. 자세한 내용은 특정 통합 작업의 상태 보기를 참고하세요.
API를 사용하여 프로그래매틱 방식으로 상태를 확인할 수도 있습니다. 다음과 같은 응답 객체가 수신됩니다.
{ "name": "projects/PROJECT_ID/locations/global/catalogs/default_catalog/operations/import-products-123456", "done": false }
이름 필드는 작업 객체의 ID입니다. 이 객체의 상태를 요청하고
done
필드가true
로 반환될 때까지 이름 필드를 가져오기 메서드에서 반환한 값으로 바꿉니다.curl -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \ "https://retail.googleapis.com/v2/projects/PROJECT_ID/locations/global/catalogs/default_catalog/operations/[OPERATION_NAME]"
작업이 완료되면 반환된 객체의
done
값이true
가 되며 다음 예시와 비슷한 상태 객체가 포함됩니다.{ "name": "projects/PROJECT_ID/locations/global/catalogs/default_catalog/operations/import-products-123456", "metadata": { "@type": "type.googleapis.com/google.cloud.retail.v2.ImportMetadata", "createTime": "2020-01-01T03:33:33.000001Z", "updateTime": "2020-01-01T03:34:33.000001Z", "successCount": "2", "failureCount": "1" }, "done": true, "response": { "@type": "type.googleapis.com/google.cloud.retail.v2.ImportProductsResponse" }, "errorsConfig": { "gcsPrefix": "gs://error-bucket/error-directory" } }
Cloud Storage의 오류 디렉터리에 있는 파일을 검사하면 가져오기 중에 발생한 오류의 종류를 확인할 수 있습니다.
-
커머스를 위한 Search 콘솔에서 데이터> 페이지로 이동합니다.
인라인으로 카탈로그 데이터 가져오기
curl
카탈로그 데이터를 지정하기 위해 productInlineSource
객체를 사용하여 Products:import
REST 메서드에 POST
요청을 수행함으로써 인라인으로 카탈로그 정보를 가져옵니다.
전체 제품을 한 줄에 제공합니다. 각 제품은 한 줄에 하나만 입력되어야 합니다.
JSON 제품 항목 형식의 예시는 제품 항목 JSON 데이터 형식을 참조하세요.
제품의 JSON 파일을 만들고
./data.json
이라는 이름을 지정합니다.{ "inputConfig": { "productInlineSource": { "products": [ { PRODUCT_1 } { PRODUCT_2 } ] } } }
POST 메서드 호출:
curl -X POST \ -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \ -H "Content-Type: application/json; charset=utf-8" \ --data @./data.json \ "https://retail.googleapis.com/v2/projects/PROJECT_NUMBER/locations/global/catalogs/default_catalog/branches/0/products:import"
Java
제품 항목 JSON 데이터 형식
JSON 파일의 Product
항목은 다음 예시와 유사합니다.
전체 제품을 한 줄에 제공합니다. 각 제품은 한 줄에 하나만 입력되어야 합니다.
최소 필수 입력란:
{ "id": "1234", "categories": "Apparel & Accessories > Shoes", "title": "ABC sneakers" } { "id": "5839", "categories": "casual attire > t-shirts", "title": "Crew t-shirt" }
전체 객체 보기
{ "name": "projects/PROJECT_NUMBER/locations/global/catalogs/default_catalog/branches/0/products/1234", "id": "1234", "categories": "Apparel & Accessories > Shoes", "title": "ABC sneakers", "description": "Sneakers for the rest of us", "attributes": { "vendor": {"text": ["vendor123", "vendor456"]} }, "language_code": "en", "tags": [ "black-friday" ], "priceInfo": { "currencyCode": "USD", "price":100, "originalPrice":200, "cost": 50 }, "availableTime": "2020-01-01T03:33:33.000001Z", "availableQuantity": "1", "uri":"http://example.com", "images": [ {"uri": "http://example.com/img1", "height": 320, "width": 320 } ] } { "name": "projects/PROJECT_NUMBER/locations/global/catalogs/default_catalog/branches/0/products/4567", "id": "4567", "categories": "casual attire > t-shirts", "title": "Crew t-shirt", "description": "A casual shirt for a casual day", "attributes": { "vendor": {"text": ["vendor789", "vendor321"]} }, "language_code": "en", "tags": [ "black-friday" ], "priceInfo": { "currencyCode": "USD", "price":50, "originalPrice":60, "cost": 40 }, "availableTime": "2020-02-01T04:44:44.000001Z", "availableQuantity": "2", "uri":"http://example.com", "images": [ {"uri": "http://example.com/img2", "height": 320, "width": 320 } ] }
이전 카탈로그 데이터
Vertex AI Search for Commerce는 이전 카탈로그 데이터 가져오기 및 관리를 지원합니다. 이전 카탈로그 데이터는 모델 학습에 이전 사용자 이벤트를 사용할 때 유용할 수 있습니다. 과거 제품 정보를 사용하면 이전 사용자 이벤트 데이터를 강화하고 모델 정확도를 향상시킬 수 있습니다.
이전 제품은 만료된 제품으로 저장됩니다. 이는 검색 응답에서 반환되지 않지만 Update
, List
, Delete
API 호출에 표시됩니다.
이전 카탈로그 데이터 가져오기
제품의 expireTime
필드가 과거 타임스탬프로 설정되면 이 제품은 이전 제품으로 간주됩니다. 추천에 영향을 주지 않도록 제품 재고를 OUT_OF_STOCK으로 설정합니다.
이전 카탈로그 데이터를 가져오려면 다음 방법을 사용하는 것이 좋습니다.
Product.Create
메서드 호출
Product.Create
메서드를 사용하여 expireTime
필드가 과거 타임스탬프로 설정된 Product
항목을 만듭니다.
만료된 제품 인라인 가져오기
이 단계는 제품에 expireTime
필드가 과거 타임스탬프로 설정되어야 한다는 점을 제외하고 인라인 가져오기와 동일합니다.
전체 제품을 한 줄에 제공합니다. 각 제품은 한 줄에 하나만 입력되어야 합니다.
다음은 인라인 가져오기 요청에 사용된 ./data.json
의 예시입니다.
인라인 가져오기 요청에 사용된 이 예시 보기
{ "inputConfig": { "productInlineSource": { "products": [ { "id": "historical_product_001", "categories": "Apparel & Accessories > Shoes", "title": "ABC sneakers", "expire_time": { "second": "2021-10-02T15:01:23Z" // a past timestamp } }, { "id": "historical product 002", "categories": "casual attire > t-shirts", "title": "Crew t-shirt", "expire_time": { "second": "2021-10-02T15:01:24Z" // a past timestamp } } ] } } }
BigQuery 또는 Cloud Storage에서 만료된 제품 가져오기
BigQuery에서 카탈로그 데이터 가져오기 또는 Cloud Storage에서 카탈로그 데이터 가져오기에 설명된 것과 동일한 절차를 사용합니다. 하지만 expireTime
필드를 과거의 타임스탬프로 설정해야 합니다.
카탈로그를 최신 상태로 유지
최상의 결과를 얻으려면 카탈로그에 현재 정보가 포함되어야 합니다. 카탈로그가 최신 상태를 유지하도록 매일 카탈로그를 가져오는 것이 좋습니다. Google Cloud Scheduler를 사용하여 가져오기를 예약하거나Google Cloud 콘솔을 사용하여 데이터를 가져올 때 자동 예약 옵션을 선택할 수 있습니다.
신규 또는 변경된 제품 항목만 업데이트하거나 전체 카탈로그를 가져올 수 있습니다. 이미 카탈로그에 있는 제품을 가져올 경우 다시 추가되지 않습니다. 변경된 모든 항목은 업데이트됩니다.
단일 상품을 업데이트하려면 제품 정보 업데이트를 참조하세요.
일괄 업데이트
가져오기 메서드를 사용하여 카탈로그를 일괄 업데이트할 수 있습니다. 이 작업은 초기 가져오기를 수행할 때와 동일한 방식으로 실행합니다. 카탈로그 데이터 가져오기의 단계를 따르세요.
가져오기 상태 모니터링
카탈로그 수집 및 상태를 모니터링하려면 다음 안내를 따르세요.
커머스 검색 데이터 페이지의 카탈로그 탭에서 카탈로그에 대한 집계된 정보를 확인하고 업로드된 제품을 미리봅니다.
검색 결과 품질을 개선하고 데이터 품질 페이지에서 검색 성능 등급을 잠금 해제하기 위해 카탈로그 데이터를 업데이트해야 하는지 평가합니다.
검색 데이터 품질을 확인하고 검색 성능 등급을 보는 방법에 대한 자세한 내용은 검색 성능 등급 잠금 해제를 참조하세요. 이 페이지에서 사용 가능한 카탈로그 측정항목에 대한 요약은 카탈로그 품질 측정항목을 참조하세요.
데이터 업로드에 문제가 있는지 알려주는 알림을 만들려면 Cloud Monitoring 알림 설정 절차를 따르세요.
고품질 결과를 가져오려면 카탈로그를 최신 상태로 유지해야 합니다. 알림을 사용하여 가져오기 오류율을 모니터링하고 필요한 경우 조치를 취합니다.
다음 단계
- 사용자 이벤트 기록 시작
- 카탈로그에 대한 합산 데이터 보기
- 데이터 업로드 알림 설정