검색 증강 생성이란?

URL 복사

검색 증강 생성(Retrieval-Augmented Generation, RAG)은 대규모 언어 모델(LLM) 을 외부 리소스에 연결하여 생성형 AI 애플리케이션으로부터 더 나은 답변을 얻는 방법입니다. 

Red Hat AI 살펴보기

RAG는 데이터 리포지토리, 텍스트 모음, 기존 도큐멘테이션과 같은 선택한 외부 지식 소스를 통해 LLM 내에 존재하는 데이터를 보완하는 수단을 제공합니다. 이러한 리소스는 벡터 데이터베이스로 세분화되고 인덱싱되며, 참조 자료로 사용되어 더 정확한 답변을 제공합니다.

RAG는 선택한 정보 소스에서 특정한 실시간 정보를 검색하도록 LLM에 지시하므로 유용합니다. RAG는 모델 학습 및 미세 조정(fine-tuning) 비용을 들이지 않고도 사용자 정의 경험을 제공하여 비용을 절약할 수 있습니다. 또한 LLM에 쿼리 시 긴 문서보다는 가장 관련 있는 정보만 전송하여 리소스도 절약할 수 있습니다.

생성형 AI에 대해 자세히 알아보기 

Red Hat 리소스

LLM은 머신 러닝과 자연어 처리(NLP) 기술을 사용해 인간의 언어를 이해하고 생성합니다. LLM은 커뮤니케이션과 데이터 처리에 매우 유용할 수 있지만, 다음과 같은 단점도 있습니다.

  • LLM은 상용화된 데이터로 학습하지만 조직의 내부 데이터 세트와 같이 참조하고자 하는 특정 정보가 포함되어 있지 않을 수 있습니다.
  • LLM에는 지식 단절(knowledge cut-off) 날짜가 있어, 학습한 정보가 지속적으로 업데이트되지 않습니다. 그 결과, 해당 소스 자료는 오래되어 더 이상 관련성이 없어질 수 있습니다.
  • LLM은 때때로 "환각"이라고도 알려진 허위 또는 오래된 정보를 제공하기도 합니다.

RAG 아키텍처를 LLM 기반 질문-답변 시스템에 구현하면 LLM과 선택한 추가 지식 소스 간의 커뮤니케이션 라인이 제공됩니다. LLM은 상호 참조하고 외부 지식을 보완할 수 있어 사용자 쿼리에 더 신뢰할 수 있고 정확한 답변을 출력합니다.

대규모 언어 모델에 대해 자세히 알아보기 

RAG 아키텍처에 내장된 검색 메커니즘을 활용하면 LLM의 일반적인 학습 이상의 추가 데이터 소스를 활용할 수 있습니다. RAG를 통한 외부의 검증 가능한 일련의 사실에 기반한 LLM은 다음과 같은 여러 유익한 목표를 지원합니다.

정확성
RAG는 사용자가 이러한 주장을 검증할 수 있도록 인용할 수 있는 소스를 LLM에 제공합니다. 또한 질문이 지식 범위를 벗어나면 "모르겠습니다"라고 답하도록 RAG 아키텍처를 설계할 수 있습니다. 전반적으로, RAG는 LLM이 부정확하거나 오해의 소지가 있는 정보를 출력으로 내놓을 가능성을 줄이고 사용자 신뢰를 높일 수 있습니다.

비용 효율성
LLM을 재교육하고 미세 조정하는 것은 비용과 시간이 많이 소요되며, 도메인별 정보로 처음부터 챗봇과 같은 것을 구축하기 위한 기반 모델을 생성하는 것도 마찬가지입니다. 사용자는 RAG를 활용해 문서나 파일을 쉽게 업로드하여 정보의 소스를 교체하거나 업데이트할 수 있을 뿐만 아니라 새로운 데이터를 LLM에 도입할 수 있습니다.

RAG는 추론 비용도 절감합니다. 로컬 모델을 실행하는 경우 자체 하드웨어에 요구 사항을 적용하거나 애플리케이션 프로그래밍 인터페이스(API)를 통해 외부 서비스를 사용하는 경우 종량제 요금 청구로 인해 LLM 쿼리는 비용이 많이 듭니다. RAG는 전체 참조 문서를 LLM에 한 번에 전송하는 대신 참조 자료에서 가장 관련성 높은 청크만 전송할 수 있으므로 쿼리 크기가 줄어들고 효율성이 개선됩니다.

개발자 제어
기존의 미세 조정 방식에 비해, RAG는 더욱 액세스 가능하고 간단한 방식으로 피드백을 받고, 트러블슈팅을 수행하고, 애플리케이션을 수정하도록 지원합니다. 개발자의 경우, RAG 아키텍처로 누릴 수 있는 가장 큰 장점은 도메인별 및 최신 정보 스트림을 개발자들이 활용할 수 있다는 것입니다.

데이터 주권과 프라이버시
LLM은 학습 데이터의 정보를 노출할 수 있기 때문에 LLM 툴을 미세 조정하기 위해 기밀 정보를 사용하는 것은 과거에는 위험했습니다. RAG는 민감한 데이터를 온프레미스에 유지하면서 로컬 LLM이나 신뢰할 수 있는 외부 LLM에 정보를 제공함으로써 이러한 프라이버시 우려 사항에 대한 솔루션을 제공합니다. RAG 아키텍처는 다양한 인증 수준으로 민감한 정보 검색을 제한하도록 설정할 수도 있습니다. 즉, 특정 사용자는 보안 취급 인가 수준에 따라 특정 정보에 액세스할 수 있습니다. 

RAG 아키텍처는 외부 소스에서 데이터를 검색하여 해당 데이터를 LLM의 컨텍스트로 처리하고 혼합된 소스에 따라 답변을 생성합니다. 이 프로세스에는 세 가지 주요 단계인 데이터 준비, 검색, 생성이 포함됩니다.

1단계: 데이터 준비(검색용)

  • 도큐멘테이션 소싱 및 로드: LLM과 공유하려는 소스 문서를 식별 및 획득하고, 텍스트 파일, 데이터베이스 테이블, PDF 등 LLM이 이해할 수 있는 형식인지 확인합니다. 소스 형식과 관계없이 각 문서를 벡터 데이터베이스에 포함하기 전에 텍스트 파일로 변환해야 합니다. 이 프로세스는 추출(Extract), 변환(Transform), 로드(Load), 즉 ETL 단계라고도 합니다. ETL은 저장, 분석 및 머신 러닝을 위해 준비하는 방식으로 원시 데이터를 정리하고 구성합니다.
     
  • 변환: 검색을 위해 '텍스트 분할' 또는 '청킹'으로 문서를 준비합니다. 즉, 업데이트된 문서를 구문 분석하고 뚜렷한 특징에 따라 관련 '청크'로 카탈로그화합니다. 예를 들어, 문단으로 형식이 지정된 문서는 표와 그림으로 구조화된 문서보다 모델이 찾고 검색하기가 더 쉽습니다.

    청킹은 의미, 문장, 토큰, 형식, HTML 문자 또는 코드 유형과 같은 요인을 근거로 할 수 있습니다. 많은 오픈소스 프레임워크는 LlamaIndexLangChain 등 문서 수집 프로세스를 지원할 수 있습니다.
     

  • 임베딩: 임베딩은 전문화된 머신 러닝 모델(벡터 임베딩 모델)을 사용하여 데이터를 숫자 벡터로 변환하고 수학적 연산을 적용하여 데이터 조각 간의 유사성과 차이점을 평가할 수 있습니다. 임베딩을 사용하면 관련 없는 세부 사항을 폐기하면서 텍스트(또는 이미지)를 콘텐츠의 핵심 의미를 캡처하는 벡터로 변환할 수 있습니다. 임베딩 프로세스는 청크 데이터를 숫자 값(예: [1.2, -0.9, 0.3])으로 할당하여 벡터 데이터베이스라는 더 큰 시스템 내에 인덱싱할 수 있습니다.

    이 숫자 값은 벡터 데이터베이스에서 RAG 아키텍처가 콘텐츠 청크 간의 연관성을 표시하고 해당 데이터를 정리해 검색을 최적화할 수 있도록 지원합니다. 이 인덱싱은 벡터를 구조화하여 유사한 개념이 인접한 좌표에 저장되도록 하는 것이 목표입니다. 예를 들어 "커피"와 "차"는 서로 가깝게 배치됩니다. "뜨거운 음료"도 가깝게 배치됩니다. "휴대폰" 및 "텔레비전"과 같은 관련 없는 개념은 멀리 배치됩니다. 두 개의 벡터 점 사이의 거리 또는 근접성은 모델이 검색하여 사용자 쿼리 출력에 포함할 정보를 결정하는 데 도움이 됩니다.
     

  • 저장: 여러 소스(선택한 외부 문서 및 LLM)의 조합된 데이터는 중앙 리포지토리에 저장됩니다.
     

2단계: 검색

  • 데이터가 벡터 데이터베이스로 카탈로그화되면, 알고리즘은 사용자의 프롬프트 및 쿼리와 관련 있는 정보의 스니펫을 찾고 검색합니다. LangChain과 같은 프레임워크는 의미, 메타데이터, 상위 문서와 같은 데이터 내 유사성에 기반한 검색을 포함해 여러 다양한 검색 알고리즘을 지원합니다.

    개방형 도메인 소비자 설정에서 정보 검색은 정보 소스의 API를 통해 액세스되는 인터넷의 인덱싱된 문서에서 이루어집니다. 정보를 비공개로 유지하고 외부 소스로부터 보호해야 하는 폐쇄형 도메인 엔터프라이즈 설정에서 RAG 아키텍처를 통한 검색은 로컬로 유지되고 보안을 강화할 수 있습니다.

    마지막으로, 검색 데이터는 프롬프트에 주입되고 처리를 위해 LLM으로 전송됩니다.
     

3단계: 생성

  • 출력: 응답이 사용자에게 표시됩니다. RAG 방식이 의도한 대로 작동하는 경우, 사용자는 제공된 소스 지식에 기반한 정확한 답변을 얻게 됩니다.

Red Hat Consulting을 통해 AI 프레임워크 사용하기 

머신 러닝 모델을 구축하는 경우 입력한 데이터 품질이 결과의 품질에 직결되므로 고품질 소스 문서를 찾는 것이 중요합니다. 왜곡되거나 편향된 결과를 생성하는 시스템은 AI를 사용하는 모든 조직에 심각한 우려 사항입니다. 따라서 소스 문서에 편향된 정보가 포함되지 않도록 주의해야 합니다. 즉, 권한 있는 그룹을 체계적으로 유리하게 하고 권한이 없는 그룹을 체계적으로 불리하게 하는 편향을 포함하지 않는 것이 출력의 편향을 완화하는 데 필수적입니다.

RAG 아키텍처에 사용하기 위해 데이터를 소싱하는 경우, 소스 문서에 포함하는 데이터가 정확히 인용되고 최신 정보인지 확인해야 합니다. 또한 인간 전문가는 모델을 더 광범위한 대상에 배포하기 전에 출력을 평가해야 하며, 모델이 프로덕션 사용을 위해 배포된 후에도 결과의 품질을 계속 평가해야 합니다.

데이터 학습 방식과 RAG 아키텍처 간의 차이점을 이해하면 필요에 따라 어떤 AI 리소스를 배포해야 하는지 전략적 결정을 내리는 데 도움이 됩니다. 또한 동시에 두 가지 이상의 방식을 사용할 수도 있습니다. 데이터 작업을 위한 몇 가지 일반적인 방식과 프로세스를 살펴보고 이를 RAG와 비교해 보겠습니다.

RAG와 프롬프트 엔지니어링 비교
프롬프트 엔지니어링은 LLM과 상호 작용하는 가장 기본적이며 가장 기술적이지 않은 방식입니다. 프롬프트 엔지니어링에는 사용자가 쿼리할 때 원하는 출력을 생성할 수 있도록 모델이 따라야 하는 일련의 지침을 작성하는 것이 포함됩니다. RAG에 비해, 프롬프트 엔지니어링은 더 적은 데이터(모델이 사전 학습된 것만 사용)를 필요로 하며 비용이 더 적게 들지만(기존 툴과 모델만 사용), 최신 또는 변화하는 정보에 기반한 출력을 생성할 수 없습니다. 또한 출력 품질은 프롬프트의 구문 분석에 따라 다르며, 따라서 응답이 일관되지 않을 수 있습니다.

많은 세부 정보를 필요로 하지 않고 일반적인 주제에 대한 정보를 추출하는 사용자 친화적이고 비용 효율적인 방식을 찾고 있는 경우, RAG가 아닌 프롬프트 엔지니어링을 선택할 수 있습니다.

RAG와 의미 검색 비교
의미론(semantics)은 단어의 의미에 대한 연구를 뜻합니다. 의미 검색은 검색 쿼리 이면의 의도와 맥락을 고려하는 방식으로 데이터를 구문 분석하는 기술입니다.

의미 검색은 NLP와 머신 러닝을 사용하여 쿼리를 해독하고 간단한 키워드 매칭보다 더욱 의미 있고 정확한 응답을 제공하는 데 사용할 수 있는 데이터를 찾습니다. 다시 말하면, 의미 검색은 사용자가 쿼리로 입력한 것과 결과를 생성하기 위해 사용되는 데이터 간의 격차를 해소하는 데 도움이 됩니다.

예를 들어, "꿈의 휴가"에 대한 쿼리를 입력하면, 의미 검색은 사용자가 "이상적인" 휴가에 대한 정보를 원할 가능성이 높다는 것을 모델이 이해하도록 돕습니다. 꿈에 대한 응답을 제공하는 대신 의도와 더 관련 있는 응답(예: 해변 휴가를 위한 홀리데이 패키지)을 제공합니다.

의미 검색은 RAG의 요소이며, RAG는 벡터 데이터베이스 검색 단계 중 의미 검색을 사용해 맥락에 정확하고 최신 상태인 결과를 생성합니다.

RAG와 사전 학습 비교
사전 학습은 대규모 데이터 세트를 학습하여 언어에 대한 폭넓은 이해를 얻기 위한 LLM 교육의 첫 단계입니다. 인간의 뇌가 학습하면서 신경 경로를 구축하는 방식과 유사하게, 사전 학습은 데이터로 학습하면서 LLM 내에 신경망을 구축합니다.

RAG와 비교하여, LLM의 사전 학습은 비용이 더 많이 들고 시간이 더 오래 걸릴 수 있으며, 수천 개의 GPU와 같이 더 많은 컴퓨팅 리소스가 필요할 수 있습니다. 학습된 모델에 상당한 영향을 줄 수 있을 만큼 광범위한 데이터 세트에 액세스할 수 있고 특정 주제나 개념에 대한 기초적인 이해를 LLM에 내장하려는 경우, RAG가 아닌 사전 학습을 선택할 수 있습니다.

RAG와 미세 조정(fine-tuning) 비교
RAG 아키텍처가 LLM이 알아야 할 사항을 정의하는 경우, 미세 조정은 모델이 작동해야 하는 방식을 정의합니다. 미세 조정은 사전 학습된 LLM을 가져와 더 작고 더욱 구체적인 데이터 세트를 사용하여 추가로 학습하는 프로세스입니다. 이렇게 하면 모델은 시간이 지나도 변하지 않는 공통 패턴을 학습할 수 있습니다.

RAG와 미세 조정은 표면상 유사해 보일 수 있지만, 차이점이 있습니다. 예를 들어 미세 조정에는 모델 생성에 수많은 데이터와 상당한 컴퓨팅 리소스가 필요하지만, RAG는 단일 문서에서 정보를 검색할 수 있으며 훨씬 적은 컴퓨팅 리소스가 필요합니다. 또한 RAG는 환각을 효과적으로 줄이는 것으로 입증되었지만, 환각을 줄이기 위해 LLM을 미세 조정하는 것은 훨씬 더 시간이 많이 걸리고 어려운 프로세스입니다.

모델은 종종 미세 조정(fine-tuning)과 RAG 아키텍처를 모두 사용하여 장점을 얻을 수 있습니다. 하지만 이미 방대한 양의 데이터와 리소스에 액세스할 수 있거나 데이터가 상대적으로 변하지 않는 경우 또는 RAG가 전문으로 하는 질문-답변 형식보다 더 사용자 정의된 분석이 필요한 전문적인 태스크를 수행 중인 경우에는 RAG가 아닌 미세 조정(fine-tuning)을 선택할 수 있습니다. 

RAG과 미세 조정(fine-tuning) 비교

RAG 아키텍처에는 잠재적인 활용 사례가 많습니다. 다음은 가장 인기 있는 활용 사례 중 일부입니다.

  • 고객 서비스: 특정 문서에서 인사이트를 통해 고객 쿼리에 응답할 수 있는 챗봇을 프로그래밍하면 문제 해결 시간을 줄이고 더욱 효과적인 고객 지원 시스템을 구축할 수 있습니다.

  • 인사이트 생성: RAG는 이미 보유한 문서에서 학습하는 데 도움이 됩니다. RAG 아키텍처를 사용해 LLM을 연간 보고서, 마케팅 문서, 소셜 미디어 댓글, 고객 리뷰, 설문조사 결과, 연구 문서 또는 기타 자료에 연결하고 리소스를 더 잘 이해하는 데 도움이 되는 답변을 찾을 수 있습니다. RAG를 사용하면 소셜 미디어 피드, 웹 사이트 또는 자주 업데이트되는 기타 소스 등의 라이브 소스 데이터에 직접 연결하여 실시간으로 유용한 답변을 생성할 수 있다는 점을 기억하세요.

  • 의료 정보 시스템: RAG 아키텍처는 의료 정보 또는 조언을 제공하는 시스템을 개선할 수 있습니다. RAG는 개인 병력, 진료 예약 서비스, 최신 의학 연구 및 지침과 같은 요소를 검토할 수 있는 잠재력을 통해 환자에게 필요한 지원 및 서비스를 연결하는 데 도움을 줄 수 있습니다.

Red Hat® AI는 고객이 이미 신뢰하는 솔루션을 토대로 구축된 Red Hat의 AI 제품 포트폴리오입니다. 이 기반을 통해 Red Hat 제품의 안정성, 유연성, 확장성이 유지됩니다.

Red Hat AI가 조직에게 제공하는 이점은 다음과 같습니다.

  • AI를 신속하게 도입하고 활용하여 빠르게 혁신
  • AI 솔루션 제공의 복잡성 해소
  • 어디서나 배포

Red Hat의 AI 살펴보기 

개발자 협업 및 관리

조직은 Red Hat AI 솔루션을 통해 기반 워크로드 인프라를 제공하여 LLMOps 프로세스 내에 RAG 아키텍처를 구현할 수 있습니다.

특히 Red Hat® OpenShift® AI는 유연하고 확장 가능한 MLOps 플랫폼으로, AI 지원 애플리케이션을 빌드, 배포, 관리할 수 있는 툴을 개발자에게 제공합니다. 벡터 데이터베이스를 지원하고, 임베딩을 생성하고, LLM에 대한 쿼리를 수행하고, 결과 생성에 필요한 검색 메커니즘을 사용하기 위한 기반 인프라를 제공합니다.

Red Hat AI는 LLM을 개선하기 위한 추가적인 모델 조정 메커니즘도 제공합니다. 이 솔루션을 InstructLab이라고 합니다. 이 솔루션은 오픈소스 커뮤니티를 기반으로 LLM 기능을 향상하는 방식을 채택합니다.

지원을 바탕으로 한 지속적 협업을 통해 엔터프라이즈 활용 사례에 맞도록 AI 모델 애플리케이션을 신속하고 간편하게 사용자 정의할 수 있습니다.

Red Hat OpenShift AI 살펴보기 

RAG 애플리케이션 생성

Red Hat OpenShift AI는 데이터 사이언스 프로젝트를 빌드하고 AI 기능을 탑재한 애플리케이션을 제공하기 위한 플랫폼입니다. 자체 참조 문서에서 AI 답변을 얻는 방법인 검색 증강 생성(Retrieval-Augmented Generation, RAG)을 지원하는 데 필요한 모든 도구를 통합할 수 있습니다. OpenShift AI를 NVIDIA AI Enterprise와 연결하면 대규모 언어 모델(Large Language Model, LLM)을 실험하여 애플리케이션에 대한 최적의 모델을 찾을 수 있습니다.

문서 파이프라인 구축

RAG를 활용하려면 먼저 문서를 벡터 데이터베이스에 수집해야 합니다. 예시 애플리케이션에서는 제품 문서 세트를 Redis 데이터베이스에 임베드합니다. 이러한 문서는 자주 변경되기 때문에, 이 프로세스에 대한 파이프라인을 구축하여 주기적으로 실행하면 항상 최신 버전의 문서를 확보할 수 있습니다.

LLM 카탈로그 살펴보기

NVIDIA AI Enterprise에서 다양한 LLM 카탈로그에 액세스하여 여러 가지 옵션을 사용해 보고 그중에서 최상의 결과를 제공하는 모델을 선택할 수 있습니다. 모델은 NVIDIA API 카탈로그에 호스팅됩니다. API 토큰을 설정한 후에는 OpenShift AI에서 바로 NVIDIA NIM 모델 서빙 플랫폼을 사용하여 모델을 배포할 수 있습니다.

적합한 모델 선택

다양한 LLM을 테스트하면서 사용자는 생성된 각 응답을 평가할 수 있습니다. Grafana 모니터링 대시보드를 설정하면 각 모델의 평점, 대기 시간, 응답 시간을 비교할 수 있습니다. 그런 다음 해당 데이터를 기반으로 프로덕션에서 사용하기에 가장 적합한 LLM을 선택할 수 있습니다.


 

An architecture diagram shows an application built using Red Hat OpenShift AI and NVIDIA AI Enterprise. Components include OpenShift GitOps for connecting to GitHub and handling DevOps interactions, Grafana for monitoring, OpenShift AI for data science, Redis as a vector database, and Quay as an image registry. These components all flow to the app frontend and backend. These components are built on Red Hat OpenShift AI, with an integration with ai.nvidia.com.

 

PDF 다운로드

허브

레드햇 공식 블로그

레드햇 공식 블로그에서 고객, 파트너, 커뮤니티 에코시스템 등 현재 화제가 되는 최신 정보를 살펴 보세요.

모든 Red Hat 제품 체험판

무료 제품 체험판을 통해 핸즈온 경험을 얻고, 자격증 시험에 대비하거나 해당 제품이 조직에 적합한지 평가할 수 있습니다.

추가 자료

vLLM이란?

vLLM은 언어 모델이 계산을 더욱 효율적으로 수행할 수 있게 돕는 오픈소스 코드의 집합입니다.

AI 추론이란?

AI 추론은 AI 모델이 데이터를 기반으로 답변을 제공하는 것을 말합니다. 머신 러닝 기술의 복잡한 프로세스 중 마지막 단계입니다.

예측 AI와 생성형 AI 비교

생성 AI와 예측 AI는 차이점과 활용 사례가 많습니다. AI가 진화하는 시대에 이 두 유형을 제대로 구분하면 각각의 기능을 명확히 파악하는 데 도움이 됩니다.

AI/ML 리소스

관련 기사