[reinvent 2024] Elasticsearch와 Amazon Bedrock을 이용한 RAG 애플리케이션 구축(Elastic 스폰서)

Summary

Amazon Bedrock의 Elasticsearch Open Inference API 및 Playground와 Elastic의 통합을 사용하여 개발자가 Amazon Bedrock에서 모든 대규모 언어 모델을 사용하여 RAG 애플리케이션을 빌드할 수 있는 유연성을 향상시키는 방법을 알아보세요. 이 세션에서는 방대한 모델 라이브러리를 활용하여 고급 검색 환경의 개발을 간소화하는 방법을 검토합니다. 개발자가 Elasticsearch 환경 내에서 직접 고급 모델 테스트 및 임베딩 기능을 통해 대화형 검색을 개선하는 방법을 알아보세요. 이 프레젠테이션은 AWS 파트너인 Elastic에서 제공합니다.


리인벤트 2024 테크 블로그의 더 많은 글이 보고 싶다면?

Tech Blog

AWS re:Invent 2024 Tech Blog written by MegazoneCloud

Overview

  • Title: Building RAG applications with Elasticsearch and Amazon Bedrock (sponsored by Elastic)
  • Date: 2024년 12월 4일(수)
  • Venue: Venetian | Level 3 | Murano 3304
  • Speaker:
  • Ayan Ray(Senior Partner Solutions Architect, Generative AI, Amazon Web Services)
  • Industry: Cross-Industry Solutions

들어가며

우리는 지금까지 어떤 내용을 검색할 때 우리가 검색하고자 하는 내용의 키워드를 직접 추려내어 검색에 활용했습니다. 하지만 이런식의 검색은 사용자의 키워드 추출 능력에 따라, 혹은 동일한 주제가 다양한 키워드에 따라 정확한 데이터를 찾을 수도, 못 찾을 수 도 있었습니다. 하지만 Elasticsearch를 활용한 Semantic 검색을 활용한다면 보다 자연스러운 질문을 통해 보다 포괄적이고 정확한 데이터를 검색할 수 있습니다. 이번 세션에서는 Elasticsearch 와 Amazon Bedrock을 사용하여 RAG(Retrieval Augmented Generation, 검색증강생성) 애플리케이션을 만드는 방법에 대해 알아보겠습니다.

New Normal

생성형 AI는 검색에 있어 뉴노멀이 되었습니다. 기존 검색엔진들의 데이터 제공 방식은 단순히 사용자의 키워드 검색에 대해 관련된 페이지 링크를 보여주는 것에 그쳤습니다. 하지만 생성형 AI는 단순 링크를 보여주는 것이 아닌 실제 답변을 제공합니다.

이런 생성형AI의 핵심적인 부분이 바로 RAG 라고 할 수 있습니다. 사용자가 궁금한 것이 일반적인 내용이라면 상관없겠지만 특정 기업의 정보, 혹은 AI가 학습하지 못한 최신정보에 대한 내용이라면 이야기가 달라집니다.

Elasticsearch의 다양한 기능

RAG에 있어 가장 중요한 부분은 Vector 유사도 검색이라고 볼 수 있고 Elasticsearch는 이러한 기능을 제공합니다. Elasticsearch Relevance Engine (ESRE)은 AI기반 검색 애플리케이션을 구동하도록 설계되었습니다.
VectorDB로서 속도향상 및 기업단위 혹은 페타바이트 단위 스케일 단위의 데이터에서도 활용 가능함을 확인했습니다. 또한 연관검색 및 RAG에 활용할 수 있는 최고의 hybrid search기능 역시 가지고 있으며 쉽게 Elasticsearch를 활용할 수 있도록 ELSER, 양자화 등 여러 기능을 지원합니다.

최근 몇 년간 Elasticsearch는 다양한 측면에서 괄목할만한 성능 향상을 이뤄냈습니다.

지연시간은 accelerated multigraph vector search를 통해 60%이상 줄어들었으며, 속도 및 메모리 최적화 관련해서 scalar quantization, better binary quantization을 통해 각각 8배, 32배 이상 좋아졌습니다. 또한 인덱싱 속도 역시 144% 이상 향상되었습니다.

1) Better Binary Quantization (BBQ)
특히,  BBQ의 경우 Elastic 8.16 버전에서 새롭게 제공되는 것으로 실수 벡터를 양자화를 통해 bit단위로 바꾸며 이는 최대 95%의 메모리를 절약할 수 있습니다. 벡터 양자화 시간 자체도 수십배 빨라졌으며 벡터검색 퍼포먼스 역시 빨라졌습니다

2) New _inference API
새로운 _inference API를 통해 Amazon Bedrock과 연결하는 등 다양한 엔드포인트를 생성하여 활용할 수도 있습니다. 예를 들어, API의 끝에 bedrock-embeddings 라고 적은 후 JSON 구문으로 한번만 PUT 명령을 날리면 새로운 엔드포인트가 생성되며 이후 이 엔드포인트를 통해 bedrock-embeddings라는 이름으로 Amazon Bedrock의 Titan embeddings 모델을 활용할 수 있습니다.

3) Rerank API

 _inference/rerank API를 통해 검색결과를 Re-Ranking 할 수 있습니다. 최초 검색 결과를 재정렬하여 질문에 따라 결과의 우선순위를 조절하는 기능입니다.

4) Semantic Text Field

기존 Semantic 검색은 아래와 같이 상당히 복잡한 작업이 선행되어야 했습니다.

하지만 이제는 Semantic Text Field를 설정하면 복잡한 과정은 제외하고 자동으로 청킹 및 임베딩을 관리할 수 있습니다.

5) RRF

Reciprocal Rank Fusion (RRF)는 서로 다른 지표를 가진 여러 결과를 하나의 결과 집합으로 결합하는 방식입니다. 결과점수 척도가 다른 두 검색 방법인 Lexcial & Semantic 검색 결과를 하나의 결과로 합치는 방식으로 별도 튜닝이 필요 없고 지표들이 서로 관련되지 않아도 고품질의 결과를 얻을 수 있습니다.

6) Geospatial search

지리적 검색을 할 수도 있습니다. 예시처럼 bounding box를 선택하여 검색하고자 하는 공간을 선택합니다.

공간이 선택되면 실제 쿼리는 다음과 같이 설정되어 검색이 진행되고 원하는 공간 내 검색 결과를 확인할 수 있습니다. 지리적 검색은 예를들어 부동산 관련 기업에서 생성형 AI를 접목시킨 애플리케이션을 설계해야 하는 경우 활용할 수 있습니다.

이처럼 Elasticsearch는 생성형 AI 애플리케이션에 필요한 구성요소를 제공하고 있고, 제공할 것입니다.

결론

이번 세션에서는 RAG 애플리케이션 개발을 위하여 Vector Database로 활용할 수 있는 Elasticsearch의 다양한 Features에 대해 알아봤습니다. Elasticsearch는 생성형AI 애플리케이션에 필요한 구성요소를 제공하기위해 지속적으로 노력해왔으며 앞으로도 관련 기능을 끊임없이 추가해 나갈 예정입니다. 생성형 AI에서 RAG는 뗄래야 뗄 수 없는 핵심이 되는 부분이며 RAG에 있어 Vector Search는 반드시 필요한 부분으로 추후 Elasticsearch가 어느정도까지 발전하여 생성형 AI의 핵심이 될 지 기대가 됩니다.
글 │메가존클라우드, AI & Data Analytics Center (ADC), Data Engineering 2 Team, 정지원 매니저
게시물 주소가 복사되었습니다.