오늘날의 광고는 단순히 눈길을 끄는 이미지 그 이상을 요구합니다. 타겟 고객의 취향, 세그먼트, 기대에 실제로 부합하는 크리에이티브가 필요합니다. 이는 고객을 이해한 후의 자연스러운 다음 단계로, 세그먼트의 선호도에 대한 지식을 활용하여 진정으로 공감을 얻는 이미지를 만드는 것입니다(고객에게 맞춤화).
멀티모달 검색 증강 생성(RAG) 은 이를 대규모로 수행할 수 있는 실용적인 방법을 제공합니다. 이는 타겟 세그먼트(예: '야외 활동을 좋아하는 반려견 주인')에 대한 텍스트 기반 이해와 의미상 관련된 실제 이미지의 빠른 검색 및 조회를 결합하는 방식으로 작동합니다. 이렇게 조회된 이미지는 새로운 크리에이티브를 생성하기 위한 컨텍스트 역할을 합니다. 이는 고객 데이터와 고품질 콘텐츠 사이의 격차를 해소하여 결과물이 타겟 고객의 공감을 얻도록 보장합니다.
이 블로그 게시물에서는 최신 AI가 이미지 검색 및 멀티모달 RAG를 통해 광고 크리에이티브를 어떻게 더 현실적이고 관련성 있게 만들 수 있는지 Databricks로 엔드투엔드로 구동되는 전체 과정을 시연합니다. 펫 테마 캠페인을 진행하는 'Bricks'라는 가상의 반려동물 사료 브랜드를 예로 들어 이것이 실제로 어떻게 작동하는지 보여드리겠습니다. 하지만 이와 동일한 기법은 개인화와 시각적 품질이 중요한 모든 산업에 적용할 수 있습니다.
이 솔루션은 Unity Catalog, Agent Framework, Model Serving, 배치 Inference, Vector Search, Apps를 활용하여 잠재고객에 대한 이해를 관련성 있고 브랜드에 맞는 시각 자료로 전환합니다. 아래 다이어그램은 아키텍처에 대한 대략적인 개요를 제공합니다.
모든 것이 UC를 통해 처리되므로 시스템은 default로 안전하고, (검색 및 생성에 대한 MLflow 추적을 통해) 관찰 가능하며, (모델 교체, 프롬프트 조정으로) 쉽게 발전시킬 수 있습니다. 더 자세히 알아보겠습니다.
모든 반려동물 이미지 자산(시드 반려동물 이미지, 브랜드 이미지, 최종 광고)은 UC Volume에 저장됩니다. 예:
UC Volumes 는 FUSE 마운트 지점을 통해 이미지 데이터에 효율적인 스토리지 솔루션을 제공하며, 단일 거버넌스 평면을 허용하므로 유용합니다. 노트북, 서빙 Endpoint 또는 Databricks 앱에서 파일에 액세스하는 경우 모두 동일한 ACL이 적용됩니다. 이는 또한 코드에 blob 키가 없다는 것을 의미합니다. 서비스 간에 (바이트가 아닌) 경로를 전달합니다.
빠른 인덱싱과 거버넌스를 위해 Volume을 Delta 테이블로 미러링하여 원시 이미지 바이트(BINARY 열)를 메타데이터와 함께 로드합니다. 그런 다음 이를 모델 서빙 endpoint에 필요한 base64 인코딩 문자열로 변환합니다. 이렇게 하면 임베딩과 같은 다운스트림 배치 Job이 간단하고 효율적으로 처리됩니다.
이제 쿼리 가능한 테이블이 하나가 되었으며, 사람이 읽고 앱에서 사용할 수 있도록 원본 Volume 경로도 보존했습니다.
CLIP 은 대조 학습을 통해 훈련되어 제로샷 분류 및 검색을 위한 정렬된 이미지-텍스트 임베딩을 생성하는, 트랜스포머 텍스트 인코더 모델을 갖춘 경량 이미지 인코더입니다. 빠르고 재현 가능한 검색을 위해, 온라인 조회와 오프라인 배치 추론 모두에 사용할 수 있는 Databricks Model Serving endpoint 를 통해 CLIP 인코더를 노출합니다. 인코더를 MLflow pyfunc 함수로 간단히 패키지하고, UC 모델로 등록 및 log하고, 사용자 지정 모델 서빙으로 제공한 다음, SQL에서 ai_query 로 호출하여 Delta 테이블의 임베딩 열을 채웁니다.
CLIP ViT-L/14 를 base64 이미지 문자열을 받아 정규화된 벡터를 반환하는 작은 pyfunc로 래핑합니다. 로깅 후, 서빙을 위해 모델을 등록합니다.
MLflow를 사용하여 모델을 로깅하고 UC 모델 레지스트리에 등록합니다.
등록된 모델에 대한 GPU 서빙 엔드포인트를 생성합니다. 이를 통해 호출할 수 있는 지연 시간이 짧고 버전이 관리되는 API를 얻게 됩니다.
이미지가 Delta 테이블에 저장되면 SQL을 사용하여 바로 임베딩을 compute합니다. 그 결과 Vector Search에 사용할 수 있는 image_embeddings 열이 포함된 새 테이블이 생성됩니다.
이미지 임베딩을 Delta에 구체화한 후에는 Databricks Vector Search로 검색할 수 있도록 합니다. 패턴은 자체 관리형 임베딩으로 Delta Sync 인덱스를 생성한 다음, 런타임에 CLIP을 사용하여 텍스트 프롬프트를 임베딩하고 상위 K개 유사성 검색을 실행하는 것입니다. 이 서비스는 작고 구조화된 결과(경로 + 선택적 메타데이터)를 반환하며, 원시 바이트가 아닌 UC Volume 경로를 전달하여 나머지 파이프라인을 가볍고 통제된 상태로 유지합니다.
벡터 인덱스를 한 번 생성합니다. 임베딩 테이블에서 지속적으로 동기화하며 지연 시간이 짧은 query를 제공합니다.
인덱스가 Delta와 동기화되므로 새로운 임베딩 테이블 행(또는 업데이트된 임베딩 행)은 자동으로 인덱싱됩니다. 테이블과 인덱스 모두에 대한 액세스는 Unity Catalog ACL을 상속하므로 별도의 권한이 필요하지 않습니다.
추론 시 텍스트 프롬프트를 임베딩하고 유사도 검색을 통해 상위 3개의 결과를 쿼리합니다.
나중에 에이전트에 결과를 전달할 때 응답을 최소화하고 실행 가능하도록 유지할 것입니다. 사용자가 초기 시드 이미지를 거부하는 경우 에이전트가 인덱스를 다시 쿼리하지 않고 순환할 수 있도록 순위가 매겨진 UC 경로만 반환합니다.
여기서는 짧은 텍스트 프롬프트를 받아 두 단계를 오케스트레이션하는 endpoint를 생성합니다.
이 두 번째 부분은 선택 사항이며, 이미지 생성을 실행할지 또는 조회만 실행할지에 따라 토글로 제어됩니다.
생성 단계에서는 Kontext multi-image max 모델을 사용하여 Replicate를 호출합니다. 이 선택은 실용적입니다.
생성 호출:
UC 볼륨에 다시 쓰기 - 생성기에서 base64를 디코딩하고 Files API를 통해 쓰기:
원하는 경우 Kontext/Replicate를 외부 이미지 API(예: OpenAI) 또는 Databricks에서 제공되는 내부 모델로 파이프라인의 나머지 부분을 변경하지 않고 쉽게 교체할 수 있습니다. _replicate_image_generation 메서드의 내부를 교체하고 입력 계약(반려동물 시드 바이트 + 브랜드 바이트)과 출력(PNG 바이트 → UC upload)을 동일하게 유지하기만 하면 됩니다. 채팅 에이전트, 검색, 앱은 이미지 페이로드가 아닌 UC 경로에서 작동하기 때문에 동일하게 유지됩니다.
챗 에이전트는 대화 정책을 보유하고 이미지 생성 엔드포인트를 도구로 호출하는 최종 서빙 엔드포인트 입니다. 이는 반려동물 유형을 제안하고, 이미지 시드 후보를 검색하며, 사용자가 확인한 후에만 최종 광고 이미지를 생성합니다.
도구 스키마는 최소한으로 유지됩니다.
그런 다음 에이전트가 이미지 생성(image-gen) endpoint를 호출할 수 있는 도구 실행 함수를 만듭니다. 이 endpoint는 구조화된 JSON 응답을 반환합니다.
replicate_toogle 매개변수가 이미지 생성을 제어합니다.
엔드포인트를 분할하는 이유는 무엇인가요?
이미지 생성 엔드포인트와 챗 에이전트 엔드포인트를 분리하는 데에는 몇 가지 이유가 있습니다.
위 내용은 모두 Databricks Agent Framework를 기반으로 구축되었으며, 이 프레임워크는 검색과 생성을 신뢰할 수 있고 통제된 에이전트로 전환하는 데 필요한 도구를 제공합니다. 첫째, 이 프레임워크를 사용하면 이미지 생성 서비스(Vector Search 포함)를 도구로 등록하고 정책/프롬프트에서 결정적으로 호출할 수 있습니다. 또한 프로덕션 스캐폴딩을 즉시 사용할 수 있도록 제공합니다. 채팅 루프에는 ResponsesAgent 인터페이스를 사용하며 모든 단계 에서 MLflow 추적 을 사용합니다. 이를 통해 프로덕션 환경에서 다단계 워크플로를 디버깅하고 운영할 때 완전한 관찰 가능성을 확보할 수 있습니다. MLflow 추적 UI 를 통해 이를 시각적으로 탐색할 수 있습니다.
Streamlit 앱은 사용자가 채팅 에이전트와 대화하고 이미지를 렌더링할 수 있는 단일 대화형 환경을 제공합니다. 이는 우리가 구축한 모든 요소를 결합하여 단일의 통제된 제품 환경으로 만듭니다.
작동 방식:
아래는 앱 코드의 두 가지 주요 터치포인트를 보여줍니다. 먼저 에이전트 엔드포인트를 호출합니다.
그리고 UC 볼륨 경로로 렌더링:
전체 시스템을 하나로 묶는 단일 흐름을 살펴보겠습니다. 마케팅 담당자가 '젊은 도시 전문가'를 위한 맞춤형 반려동물 광고 이미지를 생성하고 싶어한다고 상상해 보세요.
채팅 에이전트가 세그먼트를 해석하고 프렌치 불독과 같은 반려동물의 종류를 제안합니다.
'예'라고 답하면 에이전트는 검색 모드에서 이미지 생성 endpoint를 호출하고 Vector Search에서 유사도 순으로 순위가 매겨진 상위 3개 이미지(볼륨 경로)를 반환합니다. 앱은 후보 #0을 시드 이미지로 표시합니다.
사용자가 '괜찮아 보이네요'와 같은 취지의 말을 하면 다음 단계로 진행합니다. 만약 사용자가 “아직 부족해요”라고 말하면, 에이전트는 seed_index 를 1(그다음 2)로 증가시키고 동일한 상위 3개 세트를 재사용하여(추가 벡터 query 없음) 다음 옵션을 보여줍니다. 세 개의 이미지를 본 후에도 사용자가 여전히 만족하지 못하면 에이전트는 새로운 반려동물 설명을 제안하고 다른 Vector Search를 트리거합니다. 이를 통해 UX를 빠르고 결정적으로 유지할 수 있습니다.
확인 시 에이전트는 replicate_toggle=true 및 동일한 seed_index로 endpoint를 다시 호출합니다. endpoint는 UC에서 선택한 시드 이미지를 읽고 브랜드 이미지와 결합한 다음 Replicate에서 Kontext multi-image-max 생성기를 실행한 후 최종 PNG를 다시 UC 볼륨에 upload합니다. UC 경로만 반환됩니다. 그러면 앱이 이미지를 다운로드하여 사용자에게 다시 렌더링합니다.
이 블로그에서는 멀티모달 RAG가 어떻게 고급 광고 개인화를 가능하게 하는지 보여드렸습니다. 실제 이미지 검색으로 생성을 구체화하는 것은 일반적인 비주얼과 특정 잠재고객의 공감을 얻는 크리에이티브의 차이를 만듭니다. 이를 통해 다음이 가능해집니다.
Databricks는 확장 가능하고 거버넌스가 적용되는 고성능 애플리케이션을 보장합니다. 이 아키텍처는 플랫폼 내에서 모든 단계가 엔드투엔드로 실행되므로 프로덕션 준비 상태를 유지합니다.
그 결과 고객 인사이트를 고품질의 브랜드에 맞는 크리에이티브로 대규모로 전환하는 모듈식의 거버넌스가 적용된 RAG 에이전트가 탄생합니다.
(이 글은 AI의 도움을 받아 번역되었습니다. 원문이 궁금하시다면 여기를 클릭해 주세요)
산업
November 13, 2025/1분 이내 소요