Generative AI / LLMs

RAG 101: 검색 증강 생성 관련 질문과 답변

Reading Time: 6 minutes

데이터 사이언티스트, AI 엔지니어, MLOps 엔지니어, IT 인프라 전문가는 RAG 파이프라인을 설계하고 배포할 때 LLM과 같은 핵심 구성 요소부터 평가 접근 방식까지 다양한 요소를 고려해야 합니다.

핵심은 RAG는 단순한 모델이나 모델 집합이 아니라 하나의 시스템이라는 점입니다. 이 시스템은 여러 단계로 구성되며, RAG 101: 검색 증강 생성 파이프라인 이해하기에서 자세히 설명했습니다. 이러한 모든 단계는 필요에 따라 설계 결정을 내릴 수 있는 기회를 제공합니다.

다음은 자주 묻는 질문과 답변 목록입니다.

언제 LLM을 파인 튜닝해야 하고 RAG를 사용해야 하나요?

LLM의 세계에서 파인 튜닝, 파라미터 효율적 파인 튜닝(PEFT), 신속한 엔지니어링, 검색 증강 생성(RAG) 중 어떤 것을 선택할지는 애플리케이션의 특정 요구 사항과 제약 조건에 따라 달라집니다.

  • 파인 튜닝은 도메인별 데이터 세트로 파라미터의 대부분 또는 전부를 업데이트하여 특정 도메인에 맞게 사전 학습된 LLM을 사용자 지정합니다. 이 접근 방식은 리소스 집약적이지만 특수한 사용 사례에 대해 높은 정확도를 제공합니다.
  • PEFT는 모델의 하위 집합에 초점을 맞춰 더 적은 수의 매개변수 업데이트로 사전 학습된 LLM을 수정합니다. 정확도와 리소스 사용량 사이의 균형을 유지하며, 관리 가능한 데이터 및 계산 요구 사항으로 신속한 엔지니어링보다 개선된 기능을 제공합니다.
  • 프롬프트 엔지니어링은 모델의 파라미터를 변경하지 않고 LLM에 대한 입력을 조작하여 출력을 조정합니다. 리소스를 가장 적게 사용하는 방법으로, 데이터와 계산 리소스가 제한된 애플리케이션에 적합합니다.
  • RAG는 외부 데이터베이스의 정보로 LLM 프롬프트를 개선하는 것으로, 사실상 정교한 형태의 프롬프트 엔지니어링입니다.

한 가지 기법이나 다른 기법을 사용하는 것이 중요한 것이 아닙니다. 실제로 이러한 기술은 함께 사용할 수 있습니다. 예를 들어, LLM 또는 임베딩 모델을 더욱 세분화하기 위해 PEFT를 RAG 시스템에 통합할 수 있습니다. 가장 좋은 접근 방식은 애플리케이션의 특정 요구 사항, 정확도, 리소스 가용성 및 계산 제약 조건의 균형에 따라 달라집니다.

도메인별 정확도를 향상시키는 데 사용할 수 있는 사용자 지정 기법에 대한 자세한 내용은 거대 언어 모델 사용자 지정 기법 선택하기를 참조하세요.

LLM으로 애플리케이션을 구축할 때는 먼저 RAG를 구현하여 외부 정보로 모델의 응답을 향상시키세요. 이 접근 방식은 관련성과 깊이를 빠르게 개선합니다.

나중에 도메인별 정확도가 더 필요한 경우 앞서 설명한 모델 사용자 지정 기법을 사용할 수 있습니다. 이 2단계 프로세스는 RAG를 통한 빠른 배포와 모델 사용자 지정을 통한 목표 개선, 효율적인 개발 및 지속적인 개선 전략 간의 균형을 유지합니다.

파인 튜닝 없이 RAG 정확도를 높이는 방법은 무엇인가요?

이 질문은 한 개의 글이 아니라 여러 개의 글이 필요합니다. 요컨대, RAG를 활용하는 엔터프라이즈 솔루션에서 정확도를 확보하는 것은 매우 중요하며, 파인 튜닝은 RAG 시스템의 정확도를 향상시킬 수 있는(또는 향상시키지 못할 수 있는) 하나의 기술일 뿐입니다.

무엇보다도 RAG 정확도를 측정할 수 있는 방법을 찾아야 합니다. 어디서부터 시작해야 할지 모른다면 어떻게 개선해야 할지 알 수 없습니다. RAG 시스템을 평가하기 위한 프레임워크에는 Ragas, ARES, Bench 등 여러 가지가 있습니다.

정확도에 대한 몇 가지 평가를 수행한 후에는 파인 튜닝이 필요하지 않은 정확도를 개선하기 위해 살펴볼 수 있는 곳이 많이 있습니다.

사소하게 들릴 수 있지만, 먼저 데이터가 올바르게 구문 분석되고 로드되고 있는지 확인하세요. 예를 들어, 문서에 표나 이미지가 포함되어 있는 경우 특정 데이터 로더가 문서에 있는 정보를 놓칠 수 있습니다.

데이터가 수집된 후에는 데이터가 청크 처리됩니다. 청크는 텍스트를 세그먼트로 분할하는 프로세스입니다. 청크는 고정된 문자 길이일 수도 있지만, 문장 분할 및 재귀적 청크와 같은 다양한 청크 방법이 있습니다. 텍스트가 청크되는 방식에 따라 검색을 위해 임베딩 벡터에 저장되는 방식이 결정됩니다.

이 외에도 다양한 색인 및 관련 검색 패턴이 있습니다. 예를 들어, 다양한 종류의 사용자 질문에 대해 여러 개의 인덱스를 구성할 수 있으며, 사용자 쿼리는 LLM에 따라 적절한 인덱스로 라우팅될 수 있습니다.

다양한 검색 전략도 있습니다. 가장 기본적인 전략은 인덱스와 코사인 유사도를 사용하는 것이지만 BM25, 사용자 지정 검색기 또는 지식 그래프도 검색을 개선할 수 있습니다.

리트리버의 결과 순위를 재조정하면 고유한 요구 사항에 따라 추가적인 유연성과 정확도 향상을 제공할 수도 있습니다. 쿼리 변환은 더 복잡한 질문을 세분화하는 데 효과적일 수 있습니다. LLM의 시스템 프롬프트만 변경해도 정확도가 크게 달라질 수 있습니다.

결국, 다양한 접근 방식이 제공하는 정확도의 변화를 실험하고 측정하는 데 시간을 할애하는 것이 중요합니다.

LLM이나 임베딩 모델과 같은 모델은 RAG 시스템의 일부일 뿐이라는 점을 기억하세요. 파인 튜닝을 하지 않고도 높은 정확도를 달성하기 위해 RAG 시스템을 개선할 수 있는 방법은 여러 가지가 있습니다.

LLM을 데이터 소스에 연결하려면 어떻게 해야 하나요?

LangChain, LlamaIndex와 같이 LLM을 데이터 소스에 연결하기 위한 다양한 프레임워크가 있습니다. 이러한 프레임워크는 평가 라이브러리, 문서 로더, 쿼리 메서드 등 다양한 기능을 제공합니다. 새로운 솔루션도 계속 출시되고 있습니다. 다양한 프레임워크에 대해 읽어보고 자신의 애플리케이션에 가장 적합한 소프트웨어와 소프트웨어 구성 요소를 선택하는 것이 좋습니다.

RAG가 검색하는 데이터에 대한 참조를 인용할 수 있나요?

예. 실제로 검색된 데이터에 대한 참조를 인용할 수 있으면 사용자 경험이 향상됩니다. NVIDIA/GenerativeAIExamples GitHub 리포지토리에 있는 AI 챗봇 RAG 워크플로우 예시에서는 소스 문서로 다시 연결하는 방법을 보여줍니다.

RAG에는 어떤 유형의 데이터가 필요하나요? 데이터를 보호하는 방법은 무엇인가요?

현재로서는 텍스트 데이터가 RAG에서 잘 지원됩니다. 멀티모달 사용 사례에 대한 연구가 진행됨에 따라 이미지나 표와 같은 다른 형태의 데이터에 대한 RAG 시스템의 지원도 개선되고 있습니다. 데이터와 데이터의 위치에 따라 데이터 전처리를 위한 추가 도구를 작성해야 할 수도 있습니다. LlamaHubLangChain에서 다양한 데이터 로더를 사용할 수 있습니다. 체인을 사용하여 강화된 파이프라인을 구축하는 방법에 대한 자세한 내용은 프롬프트 인젝션에 대비한 보안 LLM 시스템을 참조하세요.

특히 기업의 경우 데이터 보안이 가장 중요합니다. 예를 들어, 일부 인덱싱된 데이터는 특정 사용자만을 대상으로 할 수 있습니다. 역할에 따라 시스템에 대한 액세스를 제한하는 역할 기반 액세스 제어(RBAC)는 데이터 액세스 제어 기능을 제공할 수 있습니다. 예를 들어, 벡터 데이터베이스에 대한 요청에 사용자 세션 토큰을 사용하여 해당 사용자의 권한 범위를 벗어난 정보가 반환되지 않도록 할 수 있습니다.

환경에서 모델을 보호하기 위한 많은 용어는 데이터베이스나 기타 중요한 자산을 보호하기 위해 사용할 수 있는 용어와 동일합니다. 프로덕션 파이프라인의 결과인 프롬프트 입력, 출력 및 오류 결과와 같은 활동을 시스템이 어떻게 기록할지 생각해 보세요. 이러한 활동은 제품 학습 및 개선을 위한 풍부한 데이터 세트를 제공할 수 있지만, 모델 파이프라인 자체를 관리하는 것처럼 신중하게 관리해야 하는 PII와 같은 데이터 유출의 원인이 될 수도 있습니다.

AI 모델에는 클라우드 배포에 공통적인 패턴이 많이 있습니다. 이러한 환경에서 흔히 볼 수 있는 RBAC, 속도 제한 및 기타 제어와 같은 도구를 최대한 활용하여 AI 배포를 더욱 견고하게 만들어야 합니다. 모델은 이러한 강력한 파이프라인의 한 요소일 뿐입니다. 자세한 내용은 LLM 지원 애플리케이션 보안을 위한 모범 사례를 참조하세요.

모든 LLM 배포에서 중요한 한 가지 측면은 최종 사용자와의 상호 작용 방식입니다. RAG 파이프라인의 대부분은 자연어 입력과 출력에 중점을 두고 있습니다. 입력/출력 조정을 통해 일관된 기대치를 충족하는 환경을 제공할 수 있는 방법을 고려해야 합니다.

사람들은 다양한 방식으로 질문을 할 수 있습니다. 입출력을 2차적으로 검사하여 시스템이 최상의 상태로 실행되는지 확인하고, 시스템이 구축된 목적에 맞는 질문을 해결하며, LLM 애플리케이션이 처리하도록 구축되지 않은 질문에 대해 사용자를 다른 곳으로 안내할 수 있는 NeMo 가드레일과 같은 툴을 통해 LLM에 도움을 줄 수 있습니다.

RAG 파이프라인을 가속하려면 어떻게 해야 하나요?

RAG 시스템은 많은 구성 요소로 이루어져 있으므로 RAG 파이프라인을 가속화할 수 있는 기회는 많습니다:

  • 데이터 전처리
  • 인덱싱 및 검색
  • LLM 추론

데이터 전처리

중복 제거는 중복 데이터를 식별하고 제거하는 프로세스입니다. RAG 데이터 전처리의 맥락에서 중복 제거는 검색을 위해 색인화해야 하는 동일한 문서의 수를 줄이는 데 사용할 수 있습니다.

NVIDIA NeMo 데이터 큐레이터는 NVIDIA GPU를 사용하여 최소 해싱, Jaccard 유사성 컴퓨팅 및 연결된 구성 요소 분석을 병렬로 수행함으로써 중복 제거를 가속화합니다. 이를 통해 대규모 데이터 세트의 중복을 제거하는 데 걸리는 시간을 크게 줄일 수 있습니다.

또 다른 기회는 청킹입니다. 다운스트림 임베딩 모델은 최대 길이 이하의 문장만 인코딩할 수 있기 때문에 큰 텍스트 코퍼스를 더 작고 관리하기 쉬운 청크로 나누어야 합니다. OpenAI와 같이 널리 사용되는 임베딩 모델은 최대 1536개의 토큰을 인코딩할 수 있습니다. 텍스트에 토큰이 더 많으면 단순히 잘립니다.

NVIDIA cuDF는 GPU에서 병렬 데이터 프레임 연산을 수행하여 청킹을 가속화하는 데 사용할 수 있습니다. 이렇게 하면 대규모 코퍼스를 청킹하는 데 필요한 시간을 크게 줄일 수 있습니다.

마지막으로, GPU에서 토큰화기를 가속화할 수 있습니다. 토큰화기는 텍스트를 정수로 변환하여 토큰으로 만든 다음 임베딩 모델에서 사용하는 역할을 합니다. 텍스트를 토큰화하는 프로세스는 특히 대규모 데이터 세트의 경우 계산 비용이 많이 들 수 있습니다.

인덱싱 및 검색

임베딩은 자주 업데이트되는 지식창고에 적합하므로 임베딩 생성은 종종 반복되는 프로세스입니다. 검색은 추론 시점에 이루어지므로 짧은 지연 시간이 필수입니다. 이러한 프로세스는 NVIDIA NeMo Retriever로 가속화할 수 있습니다. NeMo Retriever는 가장 짧은 지연 시간과 최고의 처리량을 위해 최적화된, 상용 준비가 완료된 최첨단 모델과 마이크로서비스를 제공하는 것을 목표로 합니다.

LLM 추론

최소한 완전하게 형성된 응답을 생성하기 위해 LLM이 사용됩니다. LLM은 쿼리 분해 및 라우팅과 같은 작업에도 사용할 수 있습니다.

LLM을 여러 번 호출하는 경우 LLM의 짧은 지연 시간이 매우 중요합니다. NVIDIA NeMo에는 모델 배포를 위한 TensorRT-LLM이 포함되어 있으며, 이는 LLM을 최적화하여 획기적인 추론 가속화 및 GPU 효율성을 모두 달성합니다.

또한 NVIDIA Triton 추론 서버를 사용하면 비용 효율적이고 지연 시간이 짧은 고성능 추론을 위해 최적화된 LLM을 배포할 수 있습니다.

챗봇의 지연 시간을 개선하기 위한 솔루션에는 어떤 것이 있나요?

제안된 NeMo Retriever, NeMo 추론 컨테이너와 같은 RAG 파이프라인을 가속화하기 위해 Triton 추론 서버 및 TensorRT-LLM을 사용하는 것 외에도 스트리밍을 사용하여 챗봇의 체감 지연 시간을 개선하는 것을 고려하는 것이 중요합니다. 응답이 길어질 수 있으므로 응답의 일부가 사용 가능해질 때 스트리밍 UI를 표시하면 체감 지연 시간을 줄일 수 있습니다.

사용 사례에 맞게 파인 튜닝된 더 작은 LLM을 사용하는 것도 고려해 볼 수 있습니다. 일반적으로 작은 LLM은 큰 LLM보다 지연 시간이 훨씬 짧습니다.

일부 파인 튜닝된 7B 모델은 SQL 생성과 같은 특정 작업에서 GPT-4의 정확도를 능가하는 것으로 입증되었습니다. 예를 들어, 엔지니어가 칩 설계용 소프트웨어를 생성하고 최적화하는 데 도움을 주기 위해 NVIDIA에서 내부용으로 구축한 맞춤형 LLM인 ChipNeMo는 70B 파라미터 모델 대신 13B의 파인 튜닝된 모델을 사용합니다. TensorRT-LLM은 플래싱, 플래시어텐션, 페이지어텐션, 증류 및 정량화와 같은 모델 최적화를 제공하여 더 작은 규모의 파인 튜닝 모델을 로컬에서 실행할 수 있으며, 이를 통해 LLM에서 사용하는 메모리를 줄일 수 있습니다.

LLM 응답의 지연 시간은 첫 번째 토큰까지 걸리는 시간(TTFT)과 출력 토큰당 시간(TPOT)의 함수입니다.

latency = TTFT + TPOT(number\_of\_tokens\_to\_generate)

LLM이 작을수록 TTFT와 TPOT 모두 낮아집니다.

기업에서 RAG 구축 시작하기

RAG를 사용하면 LLM에 최신 독점 정보를 쉽게 제공하고, 사용자 신뢰를 높이고, 사용자 경험을 개선하고, 환각을 줄이는 시스템을 구축할 수 있습니다.

최신 정보를 사용하여 자연어로 도메인별 질문에 정확하게 답변할 수 있는 챗봇 구축을 시작하려면 NVIDIA AI 챗봇 RAG 워크플로우를 살펴보세요.

관련 리소스

Discuss (0)

Tags