블로그

Elasticsearch 벡터 데이터베이스: 몇 분 만에 출시하고, 경제적인 수천억 개 규모의 확장

최적화된 기본 설정, 서드파티 및 네이티브 Jina AI 모델, 관리형 GPU 추론을 기본 제공하여 하 이브리드 검색의 까다로운 부분을 이미 해결했습니다. 인프라가 아닌 신속하고 확장 가능한 AI 앱을 구축하세요.

Try out vector search for yourself using this self-paced hands-on learning for Search AI. You can start a free cloud trial or try Elastic on your local machine now.

Elasticsearch는 전 세계에서 벡터 워크로드용으로 가장 널리 배포된 플랫폼 중 하나로, GitHub, Docusign, Seismic 등 수많은 기업의 시맨틱 검색, 검색 증강 생성(RAG) 및 추천 기능을 지원합니다. 오늘 벡터 기반 애플리케이션에 최적화된 새로운 서버리스 오퍼링인 Elasticsearch Vector Database를 발표합니다. 문서와 쿼리만 제공하면 인프라와 함께 임베딩 및 인덱스 튜닝을 처리해 드립니다. 또한 비용을 저렴하고 확장 가능하게 유지합니다. 

신규 사용자에게 이는 고품질 벡터 검색을 실행할 수 있는 가장 빠른 방법입니다. 이미 Elasticsearch를 사용 중인 경우, 별도의 시스템을 도입하지 않아도 새로운 기능을 통해 데이터가 이미 존재하는 플랫폼에서 바로 벡터 검색을 이용할 수 있습니다. Elasticsearch 벡터 데이터베이스는 대규모 언어 모델(LLM)의 기반 구축부터 AI 에이전트에 검색 및 메모리 기능 제공, 수천억 개의 벡터 처리에 이르기까지 다양한 시나리오를 지원합니다. 새 프로젝트를 생성하고 몇 분 안에 시작해 보세요.

하나의 엔진, 모든 벡터 사용 사례

Elasticsearch 벡터 데이터베이스는 벡터를 사용하여 애플리케이션을 구축하는 모든 사용자를 위해 구축되었습니다.

  • RAG: 밀집 및 희소 벡터 검색으로 LLM에 적합한 컨텍스트를 검색하거나, 벡터 검색과 어휘 검색을 모두 결합한 하이브리드 검색을 사용하십시오. 생성 품질은 검색 품질에 따라 향상됩니다.

  • AI 에이전트: 다단계 에이전트 루프에서 요구하는 짧은 지연 시간으로 문서 및 대화 메모리에 대한 빠르고 필터링된 검색 기능을 에이전트에 제공하세요.

  • 시맨틱 검색: 파이프라인 코드 없이 단 하나의 필드 유형으로 키워드가 아닌 의미를 기반으로 매칭합니다.

  • 추천 및 유사성: 제품, 이미지 또는 보유한 모든 콘텐츠 전반에서 대규모로 최근접 이웃을 찾습니다.

벡터 워크로드에 필요한 모든 것을 기본 최적화 상태로 제공

벡터 기반 애플리케이션을 구축하려면 여러 개의 개별 요소를 연결해야 합니다. 즉, 임베딩 모델을 설정하고 호스팅하며, 이를 통해 문서를 색인하고, 벡터를 효율적으로 저장하고, 각 쿼리에 임베딩 모델을 적용하고, 벡터 저장소와 일치시키고, 마지막으로 일치 항목에 해당하는 문서를 검색해야 합니다. Elasticsearch 벡터 데이터베이스는 추가 구성이나 설정 없이 이 모든 작업을 처리합니다.

vectordb_document 인덱스 모드를 사용한 벡터 색인

vectordb_document 인덱스 모드는 벡터 우선 워크로드를 위해 특별히 설계된 새로운 인덱스 구성으로, 기본적으로 활성화되어 있으므로 전문가가 선택할 설정을 사용할 수 있습니다. 활성화되는 기능은 다음과 같습니다.

  • 기본적으로 bfloat16 적용: 벡터는 재현율에 거의 영향을 주지 않으면서 float32의 절반 크기로 저장되므로, 양자화를 적용하기 전부터 디스크 사용 공간을 대략 절반으로 줄여 줍니다.

  • 소스 벡터 제외: Elasticsearch에서는 임베딩이 이미 검색에 사용되는 인덱스 구조에 존재하므로, _source에 두 번째 원시 사본을 보관하는 것은 저장 공간을 늘리고 결과를 가져오는 속도를 늦출 뿐입니다. 중복을 제외하여 응답이 더 빠르게 반환되며 저장하는 양도 줄어듭니다.

  • 적절한 파일을 캐시에 미리 로드: 벡터 쿼리가 가장 먼저 사용하는 데이터 구조를 미리 메모리에 워밍업하므로 첫 번째 쿼리부터 천 번째 쿼리까지도 번개처럼 빠르게 실행됩니다.

  • 병렬 병합: 병합을 통해 세그먼트가 더 체계적인 벡터 구조로 통합되므로 재현율과 지연 시간이 모두 개선되며, 이러한 병합을 멀티스레드로 실행하면 더 빠르게 도달할 수 있습니다.

벡터 저장 공간, 압축 및 자동 튜닝

  • 벡터가 자동으로 압축됩니다. 더 나은 이진 양자화(BBQ)는 재현율을 유지하면서 벡터 메모리 공간을 최대 32배까지 줄이고, DiskBBQ는 대규모 워크로드의 메모리 요구 사항을 더욱 줄여줍니다. 

  • 자동 보정을 선택하면 각 세그먼트의 양자화가 데이터에 맞게 조정되고, 데이터가 변화함에 따라 병합할 때마다 다시 조정됩니다. 18개 데이터 세트에서 테스트한 결과, 초당 쿼리 수(QPS)는 평균 16.7% 향상되었으며 대부분의 데이터 세트에서 재현율도 개선되었습니다.

관리형 GPU 추론 기반 임베딩

  • 기본 Jina AI 임베딩 및 순위 재지정 모델로 임베딩을 생성하거나, 모델 서버를 운영할 필요 없이 Elastic Inference Service(EIS)를 통해 관리형 GPU에서 타사 모델을 가져오세요. 자체 모델을 선호하신다면 자체 호스팅도 가능합니다.

  • semantic_text 필드 유형은 청킹 및 임베딩과 함께 쿼리를 자동으로 처리하므로, 시장에서 시맨틱 검색으로 가는 가장 간단한 경로입니다. 

하이브리드 검색 및 필터링된 벡터 검색

  • 하이브리드 검색이 기본 제공되어 단일 쿼리에서 전체 텍스트 검색과 벡터 검색을 결합할 수 있습니다. 상호 순위 결합(RRF) 또는 원하는 다른 결합 메커니즘을 사용하여 결과를 혼합할 수 있습니다. 벡터 검색은 일반적으로 하이브리드 검색에서 제대로 구성하기 가장 까다로운 부분입니다. Elasticsearch 벡터 데이터베이스를 사용하면 이 문제를 쉽게 해결할 수 있으며 전체 하이브리드 스택이 더욱 향상됩니다. 

  • 필터링된 벡터 검색을 사용하면 재현율을 저하시키는 사후 처리가 아니라 벡터 검색 자체의 일부로 메타데이터 필터를 적용할 수 있습니다.

첫날부터 엔터프라이즈

또한 역할 기반 액세스 제어(RBAC), 감사 로깅, 순수 벡터 데이터베이스에는 일반적으로 부족한 규정 준수 인증도 이용할 수 있습니다.

확장 시에도 경제적이고 예측 가능

Elasticsearch 벡터 데이터베이스는 규모가 확장되어도 경제적인 비용을 유지하도록 구축되었습니다. 저장 공간을 선형적으로 유지하고 메모리 사용량을 낮게 유지하는 BBQ 및 DiskBBQ 압축 기술 덕분에 수천억 개의 벡터로 확장하더라도 비용이 급증하지 않습니다. 또한 실제로 지불하는 비용은 여러분이 이미 알고 있는 수치, 즉 저장하는 데이터 양, 인덱싱하는 데이터 양, 필요한 검색 용량을 기반으로 산정됩니다. 문서 수, 벡터 차원 및 쿼리 부하를 예측하면 프로젝트를 생성하기 전에 지불할 비용을 산출할 수 있습니다. 또한 월말에 청구서의 항목을 한 줄 한 줄 명확하게 파악할 수 있습니다. 불투명한 컴퓨팅 단위가 없으며 백그라운드 작업에 예상치 못한 요금도 청구되지 않습니다.

Elasticsearch 벡터 데이터베이스 시작하기

서버리스 벡터 데이터베이스 프로젝트 만들기

Elastic Cloud에서 새로운 서버리스 벡터 데이터베이스 프로젝트를 생성하세요. 데이터를 엔드포인트로 지정하면 인덱싱 준비가 완료됩니다.

semantic_text를 사용한 인덱스 생성

벡터 인덱스 모드는 벡터 구성을 처리합니다. semantic_text를 사용하면 관리형 GPU 추론에서 임베딩 및 청킹 설정과 인덱스 설정이 관리되므로 구축할 임베딩 파이프라인이 필요하지 않습니다.

PUT my-vectors
{
"mappings": {
"properties": {
"description": { "type": "semantic_text" }
    }
  }
}

문서 수집

텍스트를 색인하면 임베딩이 자동으로 생성됩니다.

POST /my-vectors/_doc
{
  "id": "park_rocky-mountain",
  "title": "Rocky Mountain",
  "description": "Bisected north to south by the Continental Divide, this portion of the Rockies has ecosystems varying from over 150 riparian lakes to montane and subalpine forests to treeless alpine tundra."
}

시맨틱 검색 쿼리 실행

방금 생성한 동일한 시맨틱 필드에 대해 쿼리 작업을 수행합니다.

GET /my-vectors/_search
{
  "query": {
    "semantic": {
      "field": "description",
      "query": "a mountain range in the middle of north america"
    }
  }
}

그리고 결과가 반환됩니다.

{
  "took": 80,
  "hits": {
    "max_score": 0.7792325,
    "hits": [
      {
        "_index": "my-vectors",
        "_score": 0.7792325,
        "_source": {
          "id": "park_rocky-mountain",
          "title": "Rocky Mountain",
          "description": "Bisected north to south by the Continental Divide, ..."
        }
      }
    ]
  }
}

시맨틱 검색은 시작에 불과합니다. 완전한 텍스트 기반 쿼리를 실행하거나 두 가지를 결합하여 하이브리드 쿼리로 만들 수 있습니다. 완전한 제어를 위해 자체 벡터 쿼리를 작성할 수도 있습니다. 전체 지침은 문서의 시맨틱 검색 빠른 시작을 참조하세요.

Elasticsearch 벡터 검색의 다음 단계

이미 다음 개선 사항을 진행 중입니다.

  • 향상된 멀티테넌트 처리: 테넌트별로 데이터를 분리하여 유지해야 하는 경우, 더 적은 코드로 더 빠르게 처리할 수 있는 방법을 제공해 드립니다.

  • 자동 인덱스 최적화: '새 인덱스'부터 '완전히 최적화된 인덱스'까지, 가능한 한 적은 조정으로 가능합니다.

  • 지속적인 인프라 개선: 항상 최고의 처리량과 가장 빠른 응답을 얻을 수 있도록 벡터 데이터베이스의 설정 및 인프라를 지속적으로 튜닝합니다.

Elastic Cloud Serverless에서 Elasticsearch 벡터 데이터베이스 써보기

프로덕션급 기본 설정이 튜닝을 대신 처리하여, 빈 프로젝트에서 단 몇 분 만에 하이브리드 필터링 벡터 쿼리를 구축해 보세요. 인프라가 아닌 신속하고 확장 가능한 AI 앱을 구축하세요.

Elastic Cloud Serverless에서 시작하거나 전체 설명서 API 참조를 살펴보십시오.

이 콘텐츠가 얼마나 도움이 되었습니까?

관련 콘텐츠

Elasticsearch 검색 리콜을 측정하고 개선하는 방법: 하이브리드 검색을 통해 0.43에서 0.75로 향상하기

Elasticsearch 검색 리콜을 측정하고 개선하는 방법: 하이브리드 검색을 통해 0.43에서 0.75로 향상하기

Jeffrey Rengifo
세계에서 가장 빠른 벡터 검색을 위해 Elasticsearch simdvec을 구축한 방법

세계에서 가장 빠른 벡터 검색을 위해 Elasticsearch simdvec을 구축한 방법

Chris Hegarty
Elasticsearch와 Jina 임베딩을 활용한 비지도형 문서 클러스터링

Elasticsearch와 Jina 임베딩을 활용한 비지도형 문서 클러스터링

Matthew Adams
TSDS와 ILM의 만남: 늦게 도착하는 데이터를 거부하지 않는 시계열 데이터 스트림 설계

TSDS와 ILM의 만남: 늦게 도착하는 데이터를 거부하지 않는 시계열 데이터 스트림 설계

Bret Wortman
LINQ to Elasticsearch ES|QL: C# 작성, Elasticsearch 쿼리

LINQ to Elasticsearch ES|QL: C# 작성, Elasticsearch 쿼리

Florian Bernd