RAG

🍿 영상으로 먼저 보고 싶으신가요?

Elastic Snackable Series의 이 짧은 영상을 확인해 보세요.

검색 증강 생성(RAG)은 검증 가능한 추가 정보 소스로 모델에 근거를 제공하여 언어 모델의 응답 품질을 높이는 기법입니다. 먼저 외부 데이터 저장소에서 관련 컨텍스트를 검색한 뒤, 이를 모델의 컨텍스트 윈도우에 추가하는 방식으로 동작합니다.

RAG는 모델이 추론 시점에 제공된 정보로부터 학습하는 인컨텍스트 학습의 한 형태입니다. 파인튜닝이나 지속적 사전학습에 비해 RAG는 더 빠르고 저렴하게 구현할 수 있으며 여러 이점을 제공합니다.

RAG sits at the intersection of information retrieval and generative AI

RAG는 정보 검색과 생성형 AI가 만나는 지점에 있습니다. Elasticsearch는 전문 검색, 벡터 검색, 하이브리드 검색 등 다양한 검색 기능은 물론 필터링, 집계, 보안 기능까지 제공하므로 RAG를 구현하기에 훌륭한 도구입니다.

Elasticsearch로 RAG를 구현하면 다음과 같은 이점이 있습니다.

  • 향상된 컨텍스트: 추가 데이터, 최신 데이터, 비공개 데이터로 언어 모델에 근거를 제공할 수 있습니다.
  • 환각 감소: 모델이 신뢰할 수 있는 출처를 인용하도록 하여 사실 오류를 최소화합니다.
  • 비용 효율성: 모델을 파인튜닝하거나 지속적으로 사전학습하는 것에 비해 유지 관리 부담이 적습니다.
  • 내장 보안: 역할 기반 접근 제어, 필드/문서 수준 보안 등 Elasticsearch의 사용자 권한 부여 기능을 활용해 데이터 접근을 제어합니다.
  • 단순해진 응답 파싱: 언어 모델이 Elasticsearch 응답 파싱과 검색된 컨텍스트 포맷팅을 처리하므로 별도의 파싱 로직이 필요 없습니다.
  • 유연한 구현: 기본적인 전문 검색으로 동작하며, 이후 더 고급이고 연산 집약적인 시맨틱 검색 기능을 점진적으로 추가할 수 있습니다.

다음 다이어그램은 Elasticsearch를 사용하는 간단한 RAG 시스템을 보여줍니다.

Components of a simple RAG system using Elasticsearch

워크플로는 다음과 같습니다.

  1. 사용자가 쿼리를 제출합니다.
  2. Elasticsearch가 전문 검색, 벡터 검색 또는 하이브리드 검색으로 관련 문서를 검색합니다.
  3. 언어 모델이 사용자 지정 지침에 따라 컨텍스트를 처리하고 응답을 생성합니다. 사용자 지정 지침의 예로는 "출처를 인용하라" 또는 "content 필드를 마크다운 형식으로 간결하게 요약하라" 등이 있습니다.
  4. 모델이 최종 응답을 사용자에게 반환합니다.
Tip

더 고급 구성에서는 1단계와 2단계 사이에 쿼리 재작성을 넣을 수 있습니다. 이 중간 단계에서는 서로 다른 지침을 가진 하나 이상의 추가 언어 모델을 사용해 쿼리를 재구성함으로써 더 구체적이고 상세한 응답을 얻을 수 있습니다.

인덱스에서 관련 컨텍스트를 검색해 언어 모델에 전달하는 방식으로 Elasticsearch 기반 RAG 애플리케이션을 만들 수 있습니다. 이 기본 방식은 모든 배포 유형, 솔루션, 프로젝트 유형에서 동작합니다.

  1. Elasticsearch 검색 기능(전문, 벡터, 시맨틱 또는 하이브리드 검색)을 사용해 관련 문서를 검색합니다
  2. 검색된 콘텐츠를 언어 모델에 컨텍스트로 전달합니다
  3. 언어 모델이 사용자 데이터에 근거한 응답을 생성합니다

ES|QL COMPLETION 명령: COMPLETION 명령을 사용하면 ES|QL 쿼리 안에서 프롬프트와 컨텍스트를 언어 모델로 바로 보낼 수 있습니다.

Agent Builder: Elasticsearch 인덱스를 검색하고, 도구를 사용하며, 대화 컨텍스트를 유지하는 AI 에이전트를 만듭니다. Agent Builder는 상태를 유지하는 RAG 애플리케이션 구축을 위한 완전한 프레임워크를 제공합니다. 자세한 내용은 Agent Builder 문서를 참고하세요.

사용자 정의 구현: 임의의 Elasticsearch 검색 방식(Query DSL, ES|QL 또는 retriever)으로 문서를 검색한 뒤, 애플리케이션 코드에서 원하는 언어 모델 제공자의 API 또는 SDK와 통합합니다.

Elasticsearch 솔루션이나 서버리스 프로젝트 유형을 사용한다면 다음 추가 도구로 RAG 워크플로를 구성할 수 있습니다.

Agent Builder: Agent Builder로 AI 기반 검색 경험을 구축하세요. 채팅 인터페이스를 통해 Elasticsearch 데이터를 다룰 수 있는 내장 에이전트, 도구, 스킬을 제공합니다.

Playground(지원 중단): Playground는 9.4 버전부터 지원이 중단되었습니다. 대신 Agent Builder를 사용하세요.

Elasticsearch로 RAG 시스템을 구축하는 방법은 다음 블로그 게시물에서 더 알아보세요.