주요 컨텐츠로 이동
Engineering blog

벡터 검색(Vector Search) 공개 미리보기 발표

Akhil Gupta
Sergei Tsarev
Eric Peter
이 포스트 공유하기

(번역: Lina Ryoo) Original Blog Post

검색 증강 생성(Retrieval Augmented Generation, RAG)에 대한 소식에 이어, 데이터브릭스 벡터 검색(Vector Search)의 공개 미리보기를 발표하게 되어 기쁩니다. 지난 6월에 열린 DATA+AI Summit에서 일부 고객에게 비공개 미리보기를 제공한 바 있으며, 이제 모든 고객이 사용할 수 있게 되었습니다. 개발자는 데이터브릭스 벡터 검색을 통해 PDF, 오피스 문서, 위키 등과 같은 비정형 문서에 대한 유사도 검색을 통해 RAG 및 생성형 AI 애플리케이션의 정확도를 향상시킬 수 있습니다. 벡터 검색은 데이터브릭스 Data Intelligence Platform의 일부로, Lakehouse에 저장된 데이터를 사용하여 빠르고 안전하게 RAG 및 생성형 AI 애플리케이션이 정확한 응답을 제공할 수 있도록 지원합니다.

 

데이터브릭스 벡터 검색은 빠르고 안전하며 사용하기 편리하게 설계되었습니다.

  • 총 소유 비용(TCO) 절감과 빠른 속도 - 벡터 검색은 타사 대비 최대 5배 낮은 지연 시간으로 TCO(총 소유 비용)을 절감하며 높은 성능을 제공하도록 설계되었습니다.
  • 간단하고 빠른 개발자 환경 - 벡터 검색을 사용하면 복잡한 맞춤형 데이터 수집/동기화 파이프라인을 구축할 필요 없이 클릭 한 번으로 모든 델타 테이블을 벡터 인덱스로 동기화할 수 있습니다.
  • 통합 거버넌스 - 벡터 검색은 데이터 인텔리전스 플랫폼을 지원하는 Unity Catalog 기반의 보안 및 데이터 거버넌스 도구를 활용하므로 비정형 데이터에 대한 별도의 데이터 거버넌스 정책을 수립하고 유지할 필요가 없습니다.
  • 서버리스 확장 - 데이터브릭스의 서버리스 인프라는 인스턴스 및 서버 유형을 구성할 필요 없이 워크플로에 맞추어 자동으로 확장됩니다.

벡터 검색(Vector Search)은 무엇인가요?

벡터 검색(Vector Search)은 정보 검색 및 RAG 애플리케이션에서 사용되는 방법으로 질의와의 유사성을 기반으로 문서나 레코드를 찾는 데 사용되는 방법입니다. 벡터 검색을 사용하면 '금요일 밤에 신기 좋은 파란색 신발'과 같은 일상에서 사용할 수 있는 언어로 구성된 일반 언어 질의를 입력해도 관련 검색 결과를 얻을 수 있습니다.

기술 기반 대기업들은 수년 동안 벡터 검색을 사용하여 제품 경험을 강화해 왔으며, 생성형 AI의 등장으로 마침내 모든 조직에 이러한 기능이 대중화되었습니다.
다음은 벡터 검색의 작동 방식에 대한 분석입니다:

 

임베딩: 벡터 검색에서 데이터와 질의는 생성형 AI 모델의 임베딩이라는 다차원 공간에서 벡터로 표현됩니다. 
벡터 검색을 사용하여 대규모 단어 말뭉치에서 의미적으로 유사한 단어를 찾고자 하는 간단한 예를 들어 보겠습니다. 예를 들어, 'dob'라는 단어로 말뭉치에 질의하면 'puppy'와 같은 단어가 반환되기를 원할 것입니다. 하지만 'car'를 검색하면 'van'과 같은 단어를 반환받고 싶을 것입니다. 기존 검색에서는 동의어 또는 '유사 단어' 목록을 유지해야 하는데, 이는 생성이나 확장이 어려운 작업입니다. 우리는 벡터 검색을 사용하기 위해 생성형 AI 모델을 사용하여 이러한 단어를 임베딩이라고 하는 n차원 공간의 벡터로 변환할 수 있습니다. 이러한 벡터는 'dog'와 'puppy'와 같이 의미적으로 유사한 단어가 n차원 공간에서 'dog'와 'car'보다 서로 더 가깝다는 속성을 갖게 됩니다.

vectors

유사도 계산: 질의와 관련된 문서를 찾기 위해 질의 벡터와 각 문서 벡터 간의 유사도를 계산하여 n차원 공간에서 서로 얼마나 가까운지 측정합니다. 이는 일반적으로 두 벡터 사이의 각도의 코사인을 측정하는 코사인 유사도를 사용하여 수행됩니다. 유사한 벡터를 효율적으로 찾기 위해 여러 알고리즘이 사용되는데, HNSW 기반 알고리즘은 일관적으로 최고 수준의 성능을 보입니다.

 

응용 분야: 벡터 검색에는 다양한 사용 사례가 있습니다:

  • 추천 - 사용자에게 개인화된 컨텍스트에 맞는 추천 제공
  • RAG - RAG 애플리케이션이 사용자의 질의에 답할 수 있도록 관련 비정형 문서 제공
  • 시맨틱 검색 - 관련성 높은 결과를 제공하는 일반 언어 검색 질의 지원
  • 문서 클러스터링 - 데이터 간의 유사점과 차이점 이해

 

고객들이 데이터브릭스 벡터 검색을 선호하는 이유는 무엇일까요? 

"우리는 데이터브릭스의 강력한 솔루션을 활용하여 Lippert의 고객 지원 운영을 혁신할 수 있게 되어 큰 기쁨을 느낍니다. 우리와 같은 규모의 회사에서 역동적인 콜 센터 환경을 관리하다 보면 상담원 이탈이 빈번한 상황에서 신규 상담원들이 빠르게 업무에 적응하는 것이 중요한 과제입니다. 데이터브릭스 솔루션의 핵심은 벡터 검색을 기반으로 한 상담원 지원 환경을 구축하여, 상담원들이 고객 문의에 대한 답변을 신속하게 찾을 수 있도록 지원합니다. 제품 설명서, YouTube 동영상, 지원 사례 등의 다양한 콘텐츠를 벡터 검색에 통합함으로써 데이터브릭스는 상담원이 필요한 지식을 손쉽게 활용할 수 있게 합니다. 이 혁신적인 접근은 효율성을 향상시키며 고객 지원 경험을 높여 Lippert의 경영 방식을 혁신하고 있습니다.” -Chris Nishnick, Artificial Intelligence, Lippert

데이터 수집 자동화

벡터 데이터베이스가 정보를 저장하기 위해서는 다양한 소스에서 가져온 가공되지 않은 원시 데이터를 정리, 처리(파싱/청크 분리)하며 데이터가 벡터로 저장되기 전에 AI 모델과 함께 임베딩되어야 하는 데이터 수집 파이프라인이 필요합니다.  또한, 또 다른 데이터 수집 파이프라인을 구축하고 유지하는 것은 비용이 많이 들며 귀중한 엔지니어링 자원의 시간을 소모하는 작업입니다. 데이터브릭스 벡터 검색은 데이터브릭스 데이터 인텔리전스 플랫폼과 완벽하게 통합되어 있어 새로운 데이터 파이프라인을 구축하고 유지할 필요 없이 데이터를 자동으로 추출하고 해당 데이터를 임베딩할 수 있습니다. 

Delta Sync API를 사용하면 소스 데이터를 자동으로 벡터 인덱스와 동기화할 수 있습니다. 소스 데이터가 추가, 업데이트, 또는 삭제되면 해당 벡터 인덱스를 자동으로 일치 시킵니다. 벡터 검색은 내부적으로 장애를 관리하고 재시도를 처리하며 배치 크기를 최적화하여 별도의 작업이나 입력 없이 최상의 성능과 처리량을 제공합니다. 이러한 최적화를 통해 임베딩 모델 엔드포인트의 활용도를 높여 총 소유 비용을 절감할 수 있습니다.

이제 세가지 간단한 단계로 벡터 인덱스를 생성하는 예제를 살펴보겠습니다. 모든 벡터 검색 기능은 REST API, Python SDK 또는 데이터브릭스 UI를 통해 사용할 수 있습니다.

 

Step 1. UI 또는 REST API/SDK를 사용해 벡터 검색 엔드포인트를 생성하세요. 이 엔드포인트는 벡터 인덱스를 생성하고 질의하는 데 사용될 것입니다.

Vector-index

from databricks.vector_search.client import VectorSearchClient
vsc = VectorSearchClient()
vsc.create_endpoint(name="endpoint", endpoint_type="STANDARD")

Step 2.  소스 데이터로 델타 테이블을 생성한 후, 델타 테이블에서 임베드할 열을 선택하고, 데이터에 대한 임베딩을 생성하는 데 사용되는 모델 서빙 엔드포인트를 선택합니다.  

임베딩 모델은 다음과 같습니다:

  • 사용자에 의해 미세 조정된 모델
  • 상용 오픈 소스 모델(예: E5, BGE, InstructorXL 등)
  • API를 통해 제공되는 독점 임베딩 모델(예: OpenAI, Cohere, Anthropic 등)

Search-index

#The table we'd like to index
source_table_fullname = "acme.product.documentation"

#Name of the vector index
vs_index_fullname = "acme.product.documentation_vs_index"
#Name of the embedding remote endpoint
embedding_model_endpoint_name="embeddings_endpoint"

index=vsc.create_delta_sync_index(
endpoint_name=vs_endpoint_name,
 index_name=vs_index_fullname,
       source_table_name=source_table_fullname,
       pipeline_type="CONTINUOUS",
       primary_key="id",
       embedding_model_endpoint_name=proxy_endpoint_name,
       embedding_source_column="content"
   )

벡터 검색은 REST API를 사용하여 Delta 테이블에서 임베딩을 관리하거나 데이터 수집 파이프라인을 생성하는 것을 선호하는 고객을 위한 고급 모드도 제공합니다. 예제는 벡터 검색 문서를 참조하세요.

 

Step 3. 인덱스가 준비되면 질의를 작성해 질의에 대한 관련 벡터를 찾을 수 있습니다. 그런 다음 이 결과를 검색 증강 생성(RAG) 애플리케이션으로 전송할 수 있습니다.

question = "How can I track billing usage on my workspaces?"

results = index.similarity_search(
 query_text=question,
 columns=["url", "content"],
 num_results=1)
"이 제품은 손쉽게 사용 가능하며 몇 시간 안에 운영을 시작할 수 있었습니다. 우리의 모든 데이터가 이미 델타에 저장되어 있기 때문에 델타 동기화 기능을 갖춘 Vector Search의 통합 관리 환경은 정말 훌륭합니다." 
—- Alex Dalla Piazza (EQT Corporation)“

빌트인 거버넌스

엔터프라이즈 조직은 데이터에 대한 엄격한 보안 및 액세스 제어가 필수적으로, 생성형 AI 모델을 사용하여 접근해서는 안 되는 기밀 데이터에 대한 무단 액세스를 방지해야 합니다. 그러나 현재의 벡터 데이터베이스는 강력한 보안 및 액세스 제어 기능이 미흡하거나, 조직이 데이터 플랫폼과 별도로 보안 정책을 구축하고 유지해야 하는 경우가 많습니다. 이러한 다중 보안 및 거버넌스 정책은 비용과 복잡성을 증가시키며 신뢰성 있게 유지하기 어렵습니다.

데이터브릭스 벡터 검색은 Unity Catalog와 통합되어 데이터 인텔리전스 플랫폼의 나머지 부분을 보호하는 데 사용되는 동일한 보안 제어 및 데이터 거버넌스를 활용합니다. 벡터 인덱스는 Unity Catalog 내에 엔티티로 저장되며, 동일한 통합 인터페이스를 활용하여 임베딩을 세밀하게 제어하고 데이터에 대한 정책을 정의합니다.

governance

빠른 쿼리 성능 

시장의 성숙도로 인해 많은 벡터 데이터베이스가 소량의 데이터를 사용한 개념 증명(POC) 단계에서는 우수한 결과를 보이지만 프로덕션 배포를 위한 성능 및 확장성 측면에서 부족한 경우가 많습니다. 기본 성능이 부족한 경우 사용자는 검색 인덱스를 조정하고 시스템을 확장하는 방법을 파악해야 하는데, 이는 번거로우며 올바르게 수행하기 어려운 작업입니다. 사용자는 자체 워크로드를 이해하고 어떤 컴퓨팅 인스턴스를 선택할지, 어떤 설정을 사용해야 할지에 대해 어려운 결정을 내려야 합니다. 

반면에 데이터브릭스 벡터 검색은 데이터베이스 조정 및 확장에 필요한 작업이 전혀 없이도 지연 시간을 최소화하고 관련 결과를 신속하게 반환하는 즉시 사용 가능한 우수한 성능을 제공합니다. 벡터 검색은 필터링 유무에 관계없이 쿼리를 매우 빠르게 처리하도록 설계되었습니다. 다른 주요 벡터 데이터베이스보다 최대 5배 더 나은 성능을 보여줍니다. 예상 워크로드 크기(예: 초당 쿼리 수), 필요한 지연 시간, 예상 임베딩 수만 알려주면 나머지는 자동으로 처리됩니다. 인스턴스 유형, RAM/CPU, 벡터 데이터베이스의 내부 작동 방식에 대해 걱정할 필요가 없습니다.  

이미 수천 명의 고객이 데이터브릭스에서 실행하고 있는 AI 워크로드를 지원하기 위해, 데이터브릭스 벡터 검색을 사용자 정의하는 데 많은 노력을 기울였습니다. 이러한 최적화에는 대규모로 최상의 성능을 제공하기 위해 시맨틱 검색에 적합한 최적의 하드웨어를 벤치마킹하고 식별하는 작업, 기본 검색 알고리즘과 네트워크 오버헤드를 최적화하는 작업이 포함되어 있습니다.

fast

다음 단계

데이터브릭스 벡터 검색 문서를 읽고 벡터 검색 인덱스 생성해보기

벡터 검색 가격 자세히 보기 

나만의 RAG 애플리케이션 배포 시작하기 (데모)

데이터브릭스 생성형 AI Webinar 등록하기

고품질 RAG 애플리케이션 만들기 포스트 보러가기

Databricks 무료로 시작하기

관련 포스트

Platform blog

데이터브릭스를 이용하여 고품질 RAG 애플리케이션 만들기

December 11, 2023 작성자: Patrick Wendell, Hanlin Tang in 공지사항
(번역: Youngkyong Ko) Original Blog Post 검색 증강 생성( Retrieval-Augmented-Generation , 이하 RAG)는 내부 데이터와 실시간 데이터를 대규모 언어 모델( Large Language Model...
Engineering blog

데이터브릭스 모델 서빙을 사용하여 프라이빗 LLM 배포하기

데이터브릭스 모델 서빙에 대한 GPU 및 LLM 최적화 지원의 공개 프리뷰를 발표하게 되어 기쁘게 생각합니다! 이번 출시를 통해 LLM 및 비전 모델을 포함한...
Engineering blog

Big Book of MLOps Updated for Generative AI

Last year, we published the Big Book of MLOps, outlining guiding principles, design considerations, and reference architectures for Machine Learning Operations (MLOps). Since...
모든 엔지니어링 블로그 포스트 보기