검색 품질 UP! Vertex AI 임베딩 튜닝
생성형 AI 모델을 기반으로 한 앱이나 서비스에 대한 사용자 눈 높이가 빠르게 높아지고 있습니다. 빅테크 기업의 상용 서비스를 이용해 본 사용자는 회사에서 제공하는 서비스에도 같은 수준의 사용자 경험을 기대합니다. 그러다 서비스를 구현하는 입장에서 보면 사실 이게 쉽지 않은 일입니다. 생성형 AI 앱의 검색, 답변, 추천 기능을 향상시켜 사용자 경험을 전반적으로 개선하기 위해서는 임베딩 튜닝 작업을 해야 합니다. 관련해 이번 포스팅에서는 사용자의 의도나 맥락을 제대로 파악하지 못해 사용자가 실망하는 일이 없도록 하기 위해 Vertex AI를 활용해 임베딩 튜닝을 하는 방법을 간단히 알아보겠습니다.
임베딩 튜닝이란?
임베딩(Embedding)은 텍스트 같은 비정형 데이터를 고차원 벡터로 변환하는 기술입니다. 각 단어나 문장, 문서를 숫자 벡터로 표현하면 의미와 관계를 수치화해 다룰 수 있는데, 임베딩 공간에서는 의미적으로 유사한 단어와 문장이 서로 가까운 위치에 놓입니다. 예를 들어 고양이와 야옹이는 철자가 다르더라도 임베딩 공간에서 가까운 벡터로 표현되는데, 이런 특성 덕분에 자연어 처리에서 문맥과 의미를 파악하는 핵심 도구로 활용됩니다.
의미론적 유사성 검색(semantic search)은 이렇게 만들어진 질의(Query)와 문서(Document)의 임베딩 벡터 간 유사도를 비교해 가장 비슷한 문서를 찾아내는 방식으로 작동합니다. 사용자가 질문을 던지면 이를 임베딩 벡터로 변환하고, 사전에 임베딩되어 있는 문서 벡터들과 비교해 가장 유사도가 높은 결과를 반환합니다. 단순 키워드 매칭이 아니라 텍스트의 숨은 맥락을 파악하므로, 키워드가 직접 언급되지 않아도 관련있는 답변을 포함한 문서를 찾을 수 있다는 장점이 있습니다. 즉, 임베딩은 질의와 데이터 간의 숨은 의미 관계를 효과적으로 포착하여 더 똑똑한 검색이 가능하도록 돕습니다.
임베딩 튜닝의 필요성
그렇다면 왜 임베딩을 튜닝(Embedding Tuning)해야 할까요? 임베딩을 도입하기 전에는 주로 단어 기반 유사성 검색이 쓰였는데, 이는 표현이 조금만 달라져도 원하는 정보를 놓치고, 동의어나 변형 표현을 제대로 포착하지 못한다는 한계가 있었습니다. 임베딩을 사용하면 이러한 단점을 상당 부분 해소할 수 있지만, 위키피디아 등 범용 데이터로 학습된 모델은 회사 내부 문서나 특정 도메인에서 쓰이는 전문 용어와 미묘한 뉘앙스를 충분히 반영하기 어렵습니다. 따라서 질문-문서 쌍 데이터를 활용해 임베딩 모델을 재훈련(fine-tuning)하여 특정 도메인에 최적화된 벡터 공간을 만들어낼 필요가 있습니다.
이렇게 튜닝된 모델은 새로운 질문에 대해서도 일반 모델보다 훨씬 높은 관련성을 지닌 문서를 우선적으로 찾아내며, 실제 연구 결과에서도 도메인 특화 데이터로 임베딩을 튜닝하면 검색 정확도가 크게 향상됩니다. 이러한 튜닝 작업을 할 때 활용할 수 있는 대표적인 플랫폼이 바로 Vertex AI입니다. Vertex AI는 Google Cloud에서 제공하는 통합 플랫폼으로 데이터 준비부터 모델 훈련, 하이퍼파라미터 튜닝, 배포, 모니터링까지 지원합니다. 특히 2023년 이후에는 생성형 AI 지원 기능이 추가되어, 미리 학습된 파운데이션 모델(Foundation Model)을 파인튜닝할 수 있도록 했습니다. 텍스트 임베딩을 위한 모델, 예컨대 구글에서 제공하는 textembedding-gecko 같은 사전학습 모델도 이미 준비되어 있으며, Vertex AI는 이러한 임베딩 모델을 손쉽게 튜닝할 수 있는 파이프라인을 제공합니다.
Vertex AI에서 임베딩 튜닝하고 배포하기
Vertex AI에서 임베딩 모델을 튜닝하고 배포하는 전 과정을 살펴보면 크게 네 가지 단계를 거칩니다. 첫 번째는 튜닝 데이터 세트를 준비하는 단계로 질문과 그에 대응하는 문서 조각, 그리고 두 텍스트의 관련성을 수치화한 점수를 포함하여 모델이 어떤 관계를 학습해야 하는지 알려줄 수 있는 데이터를 만들어야 합니다. 이렇게 만든 데이터를 Cloud Storage(GCS)에 업로드한 뒤, Vertex AI의 파이프라인이 해당 데이터를 학습에 활용할 수 있게 경로를 지정해주면 됩니다.
세 번째 단계에서는 Vertex AI Python SDK 또는 콘솔 UI를 이용해 임베딩 튜닝 잡(Job)을 실행합니다. 간단한 몇 줄의 코드만 작성하면 Vertex AI가 모델 훈련에 필요한 인프라를 프로비저닝하고, 데이터 세트를 읽어들여 최적의 설정으로 모델을 학습시킵니다. 학습이 완료되면 튜닝된 임베딩 모델이 하나의 버전 형태로 등록되고, 이를 실제 추론에 사용하기 위해 Vertex AI Endpoint로 배포하면 실시간으로 질의 텍스트의 벡터를 생성해주는 온라인 서비스가 완성됩니다. 이 배포 과정을 Vertex AI 파이프라인으로 자동화해두면, 새로운 데이터가 들어올 때마다 손쉽게 모델을 재학습하고 업데이트할 수도 있습니다.
임베딩 튜닝 효과
그렇다면 임베딩 튜닝이 실제 애플리케이션에 얼마나 효과적일까요? Chat2Docs이라는 애플리케이션을 이용하는 가상의 금융 조직 사례를 통해 효과를 짐작할 수 있습니다. A라는 금융 조직은 방대한 문서를 보유하고 있습니다. 이 데이터를 활용하는 상황을 가정했을 때 사용자가 “올해 3분기 순이익이 무엇인가?” 같은 질문을 던지면, 사전 학습된 일반 임베딩 모델은 3분기, 순이익 같은 단어만 보고 과거 분기의 재무제표를 높은 순위로 올리는 엉뚱한 결과를 답으로 낼 수 있습니다.
하지만 금융 애널리스트들이 자주 물었던 질문-답변 데이터를 수집해 임베딩 모델을 재훈련하면 모델이 올해와 3분기, 순이익의 문맥적 중요성을 학습해 실제로 원하는 문서를 제대로 찾아낼 수 있습니다. 이렇게 튜닝된 모델을 적용하면 Chat2Docs는 전문 용어가 들어간 질문도 놓치지 않고 문체나 표현이 달라도 의미적으로 같은 정보를 빠짐없이 잡아냅니다.
이처럼 튜닝된 임베딩 모델은 RAG 시스템을 강화합니다. 한마디로 대규모 데이터 환경에서 원하는 정보를 빠짐없이 정확하게 찾는 능력을 임베딩 튜닝으로 강화할 수 있다는 것입니다. 여기에 Vertex AI의 자동화된 ML 파이프라인까지 결합하면, 새로운 문서나 질의 패턴이 등장해도 신속하게 모델을 업데이트하며 검색 성능을 계속 높여나갈 수 있게 됩니다.
가상의 사례를 통해 알 수 있듯이 임베딩은 텍스트 의미를 벡터 공간에 담아내는 강력한 기법이고, Vertex AI를 통한 임베딩 튜닝이 결합되면 생성형 AI 애플리케이션에서 뛰어난 검색 및 정보 활용 성능을 기대할 수 있습니다. 특히 사내 문서 챗봇이나 도메인 특화 질의응답 시스템을 구축하는 경우에는 정확도가 높은 답변을 제공하기 위해 임베딩 튜닝이 필수입니다. Vertex AI에서 제공하는 관리형 파이프라인은 데이터 준비부터 모델 배포까지 엔드투엔드로 지원하므로 인프라 부담 없이도 자체 데이터에 특화된 임베딩 모델을 얻을 수 있습니다. 실무에서 이를 바로 적용해보고 싶다면 메가존소프트가 도움을 드리겠습니다.