본문 바로가기

Google Cloud Blog

텍스트 데이터 분석을 위한 Vertex AI Embeddings: 대규모 언어모델(LLM) 쉽게 활용하기

텍스트 데이터 분석을 위한 Vertex AI Embeddings: 대규모 언어모델(LLM) 쉽게 활용하기

이제 많은 사람들이 Gen AI 및 대규모 언어 모델(LLM)을 프로덕션 서비스로 가져오는 방법에 대해 생각하기 시작했습니다. "LLM 또는 AI 챗봇을 기존 IT 시스템, 데이터베이스 및 비즈니스 데이터와 통합하는 방법", "우리는 수천 개의 제품을 보유하고 있습니다. 어떻게 LLM이 모든 제품을 정확하게 기억하게 할 수 있습니까?" 또는 "AI 챗봇의 환각 문제를 어떻게 처리해야 안정적인 서비스를 구축할 수 있을까?". 손쉽게 활용할 수 있는 솔루션을 제안합니다.: 임베딩 및 벡터 검색 활용하기(Grounding)

Grounding이란 무엇입니까? 임베딩 및 벡터 검색이란 무엇입니까? 이 게시물에서는 기업용으로도  신뢰할 수 있는 Gen AI 서비스를 구축하기 위해 이러한 중요한 개념을 배웁니다. 하지만 더 자세히 살펴보기 전에 예를 들어 보겠습니다.

밀리초 단위로 800만 개의 스택 오버플로 질문에 대한 시맨틱 검색. (Demo)

이 데모는  public live 데모로 제공됩니다. "STACKOVERFLOW"를 선택하고 코딩 질문을 쿼리로 입력하면 Stack Overflow에 게시된 8백만 개의 질문에 대해 텍스트 검색을 실행합니다. 

다음 사항은 이 데모를 구축하는 기술들입니다

  • LLM 지원 시맨틱 검색: 800만 개의 Stack Overflow 질문과 쿼리 텍스트는 모두 Vertex AI Generative AI 모델에서 해석됩니다. 모델은 질문 본문의 텍스트 및 코드 스니펫의 의미와 의도(시맨틱)를 사서 수준의 정밀도로 이해합니다. 데모는 관련성이 높은 질문을 찾기 위해 이 기능을 활용하고 사용자 경험 측면에서는 단순한 키워드 검색을 훨씬 뛰어 넘습니다. 예를 들어 "한 번만 인스턴스화하는 클래스를 작성하는 방법"을 입력하면 모델이 컴퓨터 프로그래밍의 맥락에서 의미가 동일하다는 것을 알고 있으므로 데모 상단에 "singleton 클래스를 만드는 방법"이 표시됩니다. .
  • Grounded to business facts: 이 데모에서는 LLM이 복잡하고 긴 프롬프트 엔지니어링으로 800만 항목을 암기하도록 시도하지 않았습니다. 대신 벡터 검색을 사용하여 스택 오버플로 데이터 세트를 모델에 외부 메모리로 첨부하고 프롬프트 엔지니어링을 사용하지 않았습니다. 즉, 출력은 모두 LLM의 인위적 출력이 아니라 business facts에 직접 "Grounded"(연결)됩니다. 따라서 데모는 상업용 서비스로 바로 활용할 수 있습니다. LLM 메모리의 제한이나 hallucinations과 같은 LLM의 예기치 않은 동작으로 인해 어려움을 겪지 않습니다.
  • 확장 가능하고 빠름: 데모는 깊은 의미론적 이해 기능을 유지하면서 수십 밀리초 안에 검색 결과를 제공합니다. 또한 데모는 매초 수천 개의 검색 쿼리를 처리하도록 확장할 수 있습니다. 이것은 LLM 임베딩과 Google AI의 벡터 검색 기술의 조합으로 가능합니다.

이 솔루션의 핵심 기술은 1) Vertex AI Embeddings for Text로 생성된 임베딩과 2) Vertex AI Matching Engine에 의한 빠르고 확장 가능한 벡터 검색입니다. 이러한 기술들을 살펴보는 것으로 시작하겠습니다.

첫 번째 핵심 기술: Vertex AI Embeddings for Text

2023년 5월 10일에 Google Cloud는 텍스트 및 이미지용 Embedding API를 Vertex AI Model Garden에서 사용할 수 있다고 발표했습니다. 

  • 텍스트 임베딩 : API는 최대 3,072개의 입력 토큰을 입력하고 768개의 차원 텍스트 임베딩을 출력하며 공개 미리보기로 사용할 수 있습니다. 2023년 5월 10일부터 가격은 1,000자당 $0.0001입니다 (최신 가격은 Generative AI 모델 가격 책정 페이지).
  • 이미지 임베딩: 기준 Google AI의 Contrastive Captioners(CoCa) 모델, API는 이미지 또는 텍스트 입력을 받아 신뢰할 수 있는 테스터가 사용할 수 있는 1024차원 이미지/텍스트 멀티모달 임베딩을 출력합니다. 이 API는 소위 "멀티모달" 임베딩을 출력하여 텍스트 쿼리 또는 그 반대로 이미지에서 시맨틱 검색을 실행할 수 있는 멀티모달 쿼리를 가능하게 합니다. 곧 다른 블로그 게시물에서 이 API를 소개할 예정입니다.

이 블로그에서는 임베딩이 유용한 이유에 대해 자세히 설명하고 Embeddings API for Text를 활용하여 애플리케이션을 구축하는 방법을 보여줍니다. 향후 블로그 게시물에서는 Embeddings API for Image에 대해 자세히 설명합니다.

Vertex AI Model Garden의 텍스트용 Embeddings API

임베딩이란 무엇입니까?

그렇다면 시맨틱 검색과 임베딩이란 무엇입니까? LLM이 부상하면서 IT 엔지니어와 ITDM이 LLM의 작동 방식을 이해하는 것이 왜 중요해졌습니까? 이에 대해 알아보려면 Google I/O 2023 세션의 이 동영상을(5분) 시청하세요. 

또한 기초 과정: Embeddings on Google Machine Learning Crash Course는 임베딩에 대해 자세히 알아볼 수 있는 훌륭한 자료입니다.

LLM text embedding 사용 사례

임베딩 API를 사용하면 LLM 기능과 결합된 임베딩의 혁신을 다음과 같은 다양한 텍스트 처리 작업에 적용할 수 있습니다.

  • LLM 기반 시맨틱 검색: 텍스트 임베딩은 임베딩 공간에서 사용자 쿼리 및 문서의 의미와 의도를 모두 나타내는 데 사용할 수 있습니다. 사용자의 쿼리 의도와 유사한 의미를 가진 문서는 벡터 검색 기술로 빠르게 찾을 수 있습니다. 이 모델은 문서의 각 문장과 단락의 미묘한 뉘앙스를 캡처하는 텍스트 임베딩을 생성할 수 있습니다.
  • LLM 기반 텍스트 분류: LLM 텍스트 임베딩은 훈련이나 미세 조정(소위 제로샷 학습) 없이 다양한 컨텍스트에 대한 깊은 이해로 텍스트 분류에 사용할 수 있습니다. task별 training이 없는 기존의 언어 모델에서는 불가능했습니다.
  • LLM 기반 추천: 텍스트 임베딩은 Two-Tower model 기반의 training을 가능하게 하여 우수한 추천 모델을 개발할 수 있습니다. 이 모델은 쿼리와 후보 임베딩 간의 관계를 학습하여 시맨틱 제품 추천을 통해 차세대 사용자 경험을 제공합니다.
  • LLM 기반 클러스터링, 이상 감지, 감정 분석등도 LLM 수준의 깊은 의미 체계 이해를 통해 처리할 수 있습니다.

"사서 수준" 정확도로 800만 개의 텍스트 정렬

Vertex AI Embeddings for Text에는 768차원의 임베딩 공간이 있습니다. 위의 비디오에서 설명했듯이 공간은 다양한 텍스트를 의미별로 정리한 거대한 지도를 나타냅니다. 각 입력 텍스트를 사용하여 모델은 지도에서 위치(임베딩)를 찾을 수 있습니다.

API는 3,072개의 입력 토큰을 사용할 수 있으므로 긴 텍스트와 프로그래밍 코드의 전반적인 의미를 소화하고 단일 임베딩으로 나타낼 수 있습니다. 그것은 마치 사서가 다양한 산업에 대해 잘 알고 수백만 개의 텍스트를 주의 깊게 읽고 미묘한 뉘앙스의 미세한 차이도 분류할 수 있는 수백만 개의 범주로 분류하는 것과 같습니다.

임베딩 공간을 시각화하면 모델이 "사서 수준" 정밀도로 텍스트를 정렬하는 방법을 실제로 관찰할 수 있습니다. Nomic AI는 높은 확장성과 부드러운 UI로 임베딩 공간을 저장, 시각화 및 상호 작용하기 위한 Atlas라는 플랫폼을 제공하며 Google과 협력하여 8백만 개의 Stack Overflow 질문의 임베딩 공간을 시각화했습니다. Nomic AI 덕분에 이 페이지에서 브라우저의 각 데이터 포인트를 확대 및 축소하여 공간을 탐색할 수 있습니다.

공간을 포함하는 800만 개의 스택 오버플로 질문 Nomic AI Atlas로 시각화 (여기에서 탐색해 보세요)

Embeddings API(스택 오버플로 질문)의 "사서 수준" 의미론적(semantic) 분석

이 데모에는 컴퓨터 프로그래밍과 같은 특정 데이터 세트에 대한 training이나 fine-tuning이 필요하지 않습니다. 이것은 LLM의 zero-shot 학습 기능의 혁신적인 부분입니다. 금융, 의료, 소매, 제조, 건설, 미디어 등 다양한 산업에 적용할 수 있으며, 산업별 데이터 세트 수집 및 모델 training에 시간과 비용을 들이지 않고도 산업 중심의 비즈니스 문서에 대한 심층적인 의미 검색이 가능합니다.

두 번째 핵심 기술: 빠르고 확장 가능한 벡터 검색

앞에서 본 스택 오버플로 데모의 두 번째 핵심 기술은 벡터 검색 기술입니다. 이것은 Google이 데이터 과학 분야에서 가지고 있는 또 다른 혁신입니다.

백터 검색에서 중요한 문제는 "임베딩 공간에서 유사한 임베딩을 찾는 방법"입니다. 임베딩은 벡터이므로 아래와 같이 벡터 간의 거리 또는 유사성을 계산하여 수행할 수 있습니다.

그러나 임베딩이 수백만 또는 수십억 개인 경우에는 쉽지 않습니다. 예를 들어 768 차원의 임베딩이 8백만 개 있는 경우 8백만 x 768의 순서로 계산을 반복해야 합니다. 완료하는 데 시간이 매우 오래 걸립니다. 실제로 5년 전 100만 개의 임베딩으로 BigQuery에서 이것을 시도했을 때 20초가 걸렸습니다. 

그래서 연구원들은 더 빠른 검색을 위해 ANN(Approximate Nearest Neighbor)이라는 기술을 연구해 왔습니다. ANN은 공간을 여러 공간으로 분리하기 위해 트리 구조를 기반으로 한 "벡터 양자화"를 사용합니다. 이는 쿼리 성능을 개선하기 위한 관계형 데이터베이스의 인덱스와 유사하여 수십억 개의 임베딩으로 매우 빠르고 확장 가능한 검색을 가능하게 합니다.

LLM의 부상으로 ANN은 벡터 검색 기술로 매우 빠르게 인기를 얻고 있습니다.

2020년 Google Research는 ScaNN이라는 새로운 ANN 알고리즘을 발표했습니다. 업계 최고의 ANN 알고리즘 중 하나로 간주되며 Google 검색, YouTube 및 기타 여러 주요 Google 서비스에서 검색 및 추천을 위한 가장 중요한 기반기술이기도 합니다.

개발자는 Google Cloud의 Vertex AI Matching Engine을 통해 Google의 벡터 검색 기술을 손쉽게 활용할 수 있습니다. 이 완전 관리형 서비스를 사용하면 개발자는 임베딩을 인덱스에 추가하고 매우 빠른 벡터 검색을 위해 키 임베딩이 포함된 검색 쿼리를 발행할 수 있습니다. Stack Overflow 데모의 경우 Matching Engine은 수십 밀리초 내에 800만 개의 임베딩에서 관련 질문을 찾을 수 있습니다.

Matching Engine을 사용하면 높은 확장성, 가용성 및 유지 관리가 필요한 프로덕션 시스템을  빠르고 손쉽게 구축할 수 있습니다. 자체 벡터 검색 서비스를 구축하거나 오픈 소스 도구를 사용하는 시간과 비용을 들일 필요가 없습니다.

Matching Engine으로 LLM 활용 및 도입(Grounding)

Embeddings API와 Matching Engine을 활용하면 임베딩기반의 실제 데이터를(LLM의 hallucination이 없는) 실시간으로 제공하는 LLM 시스템을 손쉽게 구축할 수 있습니다. 

앞에서 본 Stack Overflow 데모의 경우 다음과 같은 아키텍처로 시스템을 구축했습니다.

스택 오버플로 시맨틱 검색 데모 아키텍처

데모 아키텍처는 1) BigQuery의 Stack Overflow 데이터 세트와 Vertex AI Workbench로 Matching Engine 인덱스 구축(오른쪽) 및 2) Cloud Run(왼쪽) 및 Matching Engine으로 벡터 검색 요청 처리의 두 부분으로 구성됩니다. 자세한 내용은 다음을 참조하십시오. GitHub의 샘플 노트북.

LangChain과 Vertex AI로 LLM 활용 및 도입(Grounding)

스택 오버플로 데모에 사용된 아키텍처 외에도 널리 사용되는 또 다른 활용(Grounding) 방법은 벡터 검색 결과를 LLM에 입력하고 LLM이 사용자를 위한 최종 답변 텍스트를 생성하도록 하는 것입니다. LangChain은 이 파이프라인을 구현하는 데 널리 사용되는 도구이며 Vertex AI Gen AI embedding API 및 Matching Engine은 손쉽게 LangChain과 통합될 수 있습니다.

시작해 보기

이 게시물에서는 Embeddings for Text API와 Matching Engine의 조합을 통해 기업에서 Gen AI 및 LLM을 신뢰할 수 있는 시스템으로 도입할 수 있는 방법을 살펴보았습니다. 세분화된 의미론적 이해 기능은 다양한 비즈니스에서 정보 검색 및 추천에 인텔리전스를 제공하여 엔터프라이즈 IT 시스템에서 새로운 사용자 경험을 제공할 수 있습니다.

시작하려면 다음 리소스를 확인하세요.


본 글의 원문은 다음에서 확인할 수 있습니다.