다중 모달 검색은 현대 AI 시스템에서 중요한 도전 과제를 나타냅니다. 기존 검색 시스템은 충분한 메타데이터나 태깅 없이는 다양한 데이터 유형을 효과적으로 검색하기 어렵습니다. 이는 텍스트, 이미지, 오디오 등 다양한 콘텐츠를 대량으로 관리하는 헬스케어 회사들에게 특히 문제가 되며, 이로 인해 비구조화된 데이터 소스가 종종 발생합니다.
의료 분야에서 일하는 사람이라면 비구조화된 데이터와 구조화된 데이터를 병합하는 어려움을 이해할 것입니다. 이의 대표적인 예는 임상 문서입니다, 여기서 환자의 손으로 쓴 임상 메모나 퇴원 요약서가 종종 PDF, 이미지, 그리고 비슷한 형식으로 제출됩니다. 이것은 수동으로 변환하거나 광학 문자 인식 (OCR)을 사용하여 필요한 정보를 찾아야 합니다. 이 단계를 거친 후에도, 데이터를 기존의 구조화된 데이터와 매핑하여 효과적으로 활용해야 합니다.
이 블로그에서는 다음을 검토할 것입니다:
이 블로그의 끝부분에서는 다중 모달 임베딩이 헬스케어에 다음과 같은 기능을 가능하게 하는 방법을 확인하게 될 것입니다:
임베딩 공간(AWS | Azure | GCP)은 레코드의 n차원 수학적 표현으로, 하나 이상의 데이터 모달리티를 부동 소수점 숫자의 벡터로 저장할 수 있습니다. 잘 구성된 임베딩 공간에서는 유사한 의미의 레코드가 유사한 공간을 차지하는 것이 유용합니다. 예를 들어, 말의 사진, "트럭"이라는 단어, 개가 짖는 소리의 오디오 녹음을 가지고 있다고 상상해보십시오. 이 세 가지 완전히 다른 데이터 포인트를 다중 모달 임베딩 모델에 전달하고 다음을 받습니다:
여기에 임베딩 공간에서 숫자가 존재할 위치의 시각적 표현이 있습니다:

실제로는 임베딩 공간의 차원이 수백 또는 수천에 이르지만, 설명을 위해 3차원 공간을 사용해봅시다. 이 벡터들의 첫 번째 위치는 “동물성”을, 두 번째는 “교통성”을, 세 번째는 “소리 크기”를 나타낸다고 생각해볼 수 있습니다. 이것은 임베딩을 고려할 때 의미가 있지만, 일반적으로 각 차원이 무엇을 나타내는지는 알 수 없습니다. 중요한 것은 이들이 레코드의 의미론적 의미를 나타낸다는 것입니다.
멀티모달 임베딩 공간을 만드는 여러 가지 방법이 있으며, 이에는 여러 인코더를 동시에 훈련시키는 것 (예: CLIP), 교차 주의 메커니즘을 사용하는 것 (예: DALL-E), 또는 다양한 후훈련 정렬 방법을 사용하는 것이 포함됩니다. 이러한 방법들은 기록의 의미가 원래의 모달리티를 초월하고 다른 이질적인 기록이나 형식과 공유 공간을 차지하게 합니다.
이 공유된 의미 공간이 강력한 크로스-모달 검색 기능을 가능하게 합니다. 텍스트 쿼리와 이미지가 유사한 벡터 표현을 공유할 때, 그들은 아마도 유사한 의미론적 의미를 공유하게 됩니다. 덕분에 별도의 태깅이나 메타데이터 없이도 텍스트 설명만으로 관련 이미지를 검색할 수 있습니다.
멀티모달 검색을 효과적으로 구현하려면, 공유 벡터 공간 내에서 다양한 데이터 유형에 대한 임베딩을 생성할 수 있는 모델이 필요합니다. 이 모델들은 다양한 모달리티 간의 관계를 이해하고 이를 통합된 수학적 공간에서 표현하기 위해 특별히 설계되었습니다.
2025년 6월 현재로서 여러 강력한 다중 모달 임베딩 모델이 사용 가능합니다:
Databricks에서는 인프라와 도구를 제공하여 사용 사례에 맞게 커스터마이징할 수 있는 종단간 솔루션을 호스팅, 평가, 개발할 수 있습니다. 이 사용 사례를 배포하기 시작할 때 다음 시나리오를 고려해 보세요:
이 솔루션의 전체 구현을 보려면 여기에 있는 저장소를 방문하세요: Github 링크
이 예제에서는 구조화된 데이터로 합성 환자 정보를 사용하고, 비구조화된 데이터로는 PDF 형식의 샘플 혜택 설명을 사용합니다. 먼저, Genie Space와 함께 사용하기 위해 합성 데이터가 생성됩니다. 그런 다음 Nomic 다중 모달 임베딩 모델, 최첨단 오픈 소스 다중 모달 임베딩 모델,이 Databricks 모델 서빙에 로드되어 온라인에서 찾은 샘플 혜택 설명에 대한 임베딩을 생성합니다.
이 과정은 복잡해 보이지만, Databricks는 완전한 엔드-투-엔드 솔루션을 가능하게 하는 내장 도구를 제공합니다. 고수준에서 보면, 과정은 다음과 같습니다:
이 지니 스페이스는 자연어를 SQL 쿼리로 변환하는 도구로 사용되어 구조화된 데이터를 쿼리합니다.
이 예제에서, Faker 라이브러리 는 무작위 환자 정보를 생성하는 데 사용될 것입니다. 우리는 데이터를 다양화하기 위해 두 개의 테이블을 만들 것입니다: 환자 방문과 진료 장소, 방문 이유, 보험 제공자, 보험 유형 등의 열이 있습니다.
자연어를 사용하여 데이터를 쿼리하려면, 우리는 Databricks Genie Spaces를 사용하여 쿼리를 자연어로 변환하고 관련 환자 데이터를 검색할 수 있습니다. Databricks UI에서는 왼쪽 바의 Genie 탭을 클릭 → New → patient_visits와 practice_locations 테이블을 선택하면 됩니다.

