NLP, BigQuery, 임베딩을 사용한 멀티모달 검색 솔루션
Layolin Jesudhass
Global Generative AI Solutions Architect, Google
* 본 아티클의 원문은 2024년 8월 27일 Google Cloud 블로그(영문)에 게재되었습니다.
오늘날의 디지털 환경은 텍스트뿐만 아니라 이미지와 동영상을 포괄하는 방대한 정보를 제공합니다. 기존 엔터프라이즈 검색엔진은 주로 텍스트 기반 쿼리용으로 설계되었기 때문에 시각적 콘텐츠 분석에 있어서는 기대에 미치지 못하는 경우가 많습니다. 그러나 자연어 처리(NLP)와 멀티모달 임베딩의 결합을 통해 고객이 텍스트 기반 콘텐츠 검색과 동일한 방식으로 이미지나 동영상 또는 그 안에 포함된 정보를 검색할 수 있는 새로운 검색의 시대가 열리고 있습니다.
이 블로그에서는 텍스트를 사용한 이미지 검색 또는 주어진 쿼리를 기반으로 이미지에서 텍스트 찾기와 같은 교차 모달 시맨틱 검색 시나리오를 위해 특별히 설계된 강력한 멀티모달 임베딩 모델을 사용하여 이미지, 동영상 또는 둘 다에서 텍스트 검색을 수행하는 데모를 소개합니다. 멀티모달 임베딩은 이러한 작업을 수행하기 위한 핵심입니다.


데모를 통해 텍스트로 이미지 검색, 텍스트로 동영상 검색, 텍스트로 이미지와 동영상 통합 검색을 수행합니다.
어떻게 작동하는지 살펴보겠습니다.
이미지, 동영상, 텍스트 통합 검색을 위한 솔루션
이 아키텍처는 Google Cloud Storage를 활용하여 미디어 파일을 저장하고 BigQuery 객체 테이블을 사용하여 이러한 파일을 참조합니다. 멀티모달 임베딩 모델은 이미지와 동영상의 시맨틱 임베딩을 생성한 다음 효율적인 유사성 검색을 위해 BigQuery에서 색인을 생성하여 원활한 교차 모달 검색 경험을 지원합니다.


텍스트에서 시각적 콘텐츠로: 이미지 및 동영상을 위한 멀티모달 검색
유사한 솔루션을 구현하려면 다음 단계를 따르세요.
1~2단계: Cloud Storage에 이미지 및 동영상 데이터 업로드
모든 이미지 및 동영상 파일을 Cloud Storage 버킷에 업로드합니다. 데모를 위해 Google 검색을 통해 GitHub에서 제공하는 일부 이미지와 동영상을 다운로드했습니다. Cloud Storage 버킷에 업로드하기 전에 README.md 파일을 삭제해야 합니다.
미디어 파일 준비
-
자체 데이터를 사용하여 작업할 모든 이미지와 동영상 파일을 수집합니다.
-
파일을 쉽게 관리하고 액세스할 수 있도록 적절하게 구성하고 이름을 지정합니다.
Cloud Storage에 데이터 업로드
-
Cloud Storage 버킷을 아직 만들지 않았으면 만듭니다.
-
미디어 파일을 버킷에 업로드합니다. Google Cloud 콘솔,
gsutil
명령줄 도구 또는 Cloud Storage API를 사용할 수 있습니다. -
파일이 제대로 업로드되었는지 확인하고 버킷의 이름과 파일이 저장된 경로를 메모합니다(예:
gs://your-bucket-name/your-files
).
3단계: BigQuery에서 객체 테이블 만들기
Cloud Storage 버킷에 있는 소스 이미지 및 동영상 파일을 가리키도록 BigQuery에서 객체 테이블을 만듭니다. 객체 테이블은 Cloud Storage에 있는 비정형 데이터 객체에 대한 읽기 전용 테이블입니다. BigQuery 객체 테이블의 기타 사용 사례를 여기에서 알아볼 수 있습니다.
객체 테이블을 만들기 전에 여기에 설명된 대로 연결을 설정합니다. 연결의 주 구성원에 'Vertex AI 사용자' 역할이 있고 프로젝트에 대해 Vertex AI API가 사용 설정되어 있는지 확인합니다.
원격 연결 만들기
객체 테이블 만들기
4단계: 멀티모달 임베딩 만들기
선행 학습된 멀티모달 임베딩 모델을 사용하여 미디어 데이터의 임베딩(수치적 표현)을 생성합니다. 이러한 임베딩은 콘텐츠의 시맨틱 정보를 캡처하여 효율적인 유사성 검색을 가능하게 합니다.
5단계: BigQuery에서 벡터 색인 만들기
이미지 및 동영상 데이터에서 생성된 임베딩을 효율적으로 저장하고 쿼리하기 위해 BigQuery에서 임베딩의 벡터 색인을 생성합니다. 이 색인은 나중에 유사성 검색을 수행하는 데 필수입니다.
6단계: 사용자의 쿼리를 텍스트 입력으로 보내기
사용자의 쿼리는 '풀을 먹고 있는 코끼리'와 같은 간단한 자연어 텍스트 입력으로 전송됩니다. 사용자가 쿼리를 제출하면 시스템은 미디어 데이터 처리 방식과 유사하게 이 텍스트 입력을 임베딩으로 변환합니다.
7단계: 사용자 쿼리의 텍스트 임베딩 만들기
동일한 멀티모달 임베딩 모델을 사용하여 사용자 쿼리의 텍스트 임베딩을 만들 수 있습니다. 사용자 쿼리를 저장된 임베딩과 비교하려면 먼저 동일한 멀티모달 임베딩 모델을 사용하여 쿼리 자체의 임베딩을 생성하세요.
8단계: 유사성 검색 수행
유사성 검색은 사용자 쿼리와 이미지 및 동영상이 포함된 소스 데이터 간 비교를 통해 수행되며, 이때 벡터 검색이 사용됩니다. 4단계에서 생성된 벡터 색인을 사용하여 유사성 검색을 수행해 사용자 쿼리와 가장 유사한 미디어 항목을 찾습니다. 이 검색은 사용자 쿼리의 임베딩과 미디어 데이터의 임베딩을 비교합니다.
9단계: 이미지 및 동영상 검색 결과를 사용자에게 반환
마지막으로 유사성 검색의 결과가 사용자에게 표시됩니다. 결과에는 Cloud Storage 버킷에 저장된 가장 유사한 이미지 및 동영상의 URI와 유사성 점수(차이)가 포함됩니다. 이에 따라 사용자는 쿼리와 관련된 미디어 항목을 보거나 다운로드할 수 있습니다.
새로운 차원의 검색을 지원하는 멀티모달 임베딩
멀티모달 임베딩은 이미지와 동영상 형식을 모두 처리할 수 있기 때문에 몇 단계만 거치면 시각적 콘텐츠 전반에 걸쳐 강력한 검색 경험을 구축할 수 있습니다. 이미지 검색, 동영상 검색, 이미지와 동영상 통합 검색 등 모든 사용 사례에서 사용자 경험을 향상하고 콘텐츠 검색을 간소화하는 새로운 차원의 검색을 활용해 보세요.