RAG(검색 보강 세대) 패턴은 대규모 언어 모델을 사용하여 대규모 언어 모델에 아직 알려지지 않은 특정 또는 독점 데이터를 추론하는 애플리케이션을 빌드하는 업계 표준 접근 방식입니다. 아키텍처는 간단하지만 이 아키텍처에 맞는 RAG 솔루션을 설계, 실험 및 평가하려면 엄격하고 과학적 접근 방식의 이점을 누릴 수 있는 많은 복잡한 고려 사항이 포함됩니다.
이 가이드는 시리즈로 제공됩니다. 시리즈의 각 문서에서는 RAG 솔루션을 디자인하는 특정 단계를 다룹니다.
이 가이드의 문서에서 다루는 이러한 고려 사항은 다음과 같습니다.
- 평가 중에 사용할 테스트 문서 및 쿼리 결정
- 청크 분할 전략 선택
- 청크를 보강해야 하는 항목 및 방법 결정
- 올바른 포함 모델 선택
- 검색 인덱스 구성 방법 결정
- 수행할 검색 결정: 벡터, 전체 텍스트, 하이브리드, 수동 다중
- 각 단계 평가
이 가이드의 문서에서는 이러한 모든 고려 사항을 다룹니다.
RAG 아키텍처
그림 1 높은 수준의 RAG 아키텍처
RAG 애플리케이션 흐름
다음은 RAG 애플리케이션에 대한 개략적인 흐름입니다.
- 사용자가 지능형 애플리케이션 사용자 인터페이스에서 쿼리를 실행합니다.
- 지능형 애플리케이션은 오케스트레이터에 대한 API 호출을 합니다. 오케스트레이터는 의미 체계 커널, Azure Machine Learning 프롬프트 흐름 또는 LangChain과 같은 도구 또는 플랫폼을 사용하여 구현할 수 있습니다.
- 오케스트레이터는 Azure AI Search에서 수행할 검색을 결정하고 쿼리를 실행합니다.
- 오케스트레이터는 쿼리의 상위 N 결과를 패키지하고, 프롬프트 내에서 컨텍스트로 패키지하고, 쿼리와 함께 프롬프트를 패키지하고, 프롬프트를 큰 언어 모델로 보냅니다. 오케스트레이터는 사용자가 읽을 수 있도록 지능형 애플리케이션에 대한 응답을 반환합니다.
RAG 데이터 파이프라인 흐름
다음은 RAG 애플리케이션에 대한 접지 데이터를 제공하는 데이터 파이프라인에 대한 개략적인 흐름입니다.
문서는 데이터 파이프라인으로 푸시되거나 끌어온 것입니다.
데이터 파이프라인은 다음 단계를 사용하여 각 문서를 개별적으로 처리합니다.
- 청크 문서 - 문서를 의미 체계적으로 관련된 부분으로 나눕니다. 이 부분에는 단일 아이디어나 개념이 이상적입니다.
- 청크 보강 - 청크의 콘텐츠에서 만든 메타데이터 필드를 제목, 요약 및 키워드와 같은 불연속 필드에 추가합니다.
- 청크 포함 - 포함 모델을 사용하여 청크 및 벡터 검색에 사용되는 다른 메타데이터 필드를 벡터화합니다.
- 청크 유지 - 청크를 검색 인덱스에 저장합니다.
RAG 디자인 및 평가 고려 사항
RAG 솔루션을 디자인할 때 수행해야 하는 다양한 구현 결정이 있습니다. 다음 그림에서는 이러한 결정 중 일부를 보여 줍니다.
그림 2. RAG 솔루션을 디자인할 때 발생하는 질문
이 가이드의 일련의 문서에서는 이러한 고려 사항 등을 다룹니다.
- 솔루션 도메인 확인 - RAG 솔루션에 대한 비즈니스 요구 사항을 명확하게 정의하는 것의 중요성에 대해 설명합니다.
- 대표 테스트 문서 수집 - 모음을 대표하는 RAG 솔루션에 대한 테스트 문서 수집에 대한 고려 사항 및 지침을 설명합니다.
- 테스트 쿼리 수집 - 테스트 쿼리 와 함께 수집해야 하는 정보를 설명하고, 문서에서 다루지 않는 가상 쿼리 및 쿼리를 생성하는 방법에 대한 지침을 제공합니다.
- 청크 경제 이해 - 텍스트 모음에 대한 청크 솔루션의 전체 비용을 살펴볼 때 고려해야 할 요소에 대해 설명합니다.
- 문서 분석 수행 - 문서에서 무시하거나 제외할 항목, 청크로 캡처할 항목 및 청크할 방법을 결정하는 데 도움이 되는 문서 형식을 분석할 때 질문할 수 있는 질문 목록을 제공합니다.
- 청크 분할 방법 이해 - 기계 학습 모델을 사용하여 문장 기반, 고정 크기, 사용자 지정, 큰 언어 모델 확대, 문서 레이아웃 분석과 같은 청크 분할에 대한 다양한 접근 방식을 간략하게 설명합니다.
- 문서 구조가 청크 분할 에 미치는 영향 이해 - 문서의 구조 정도가 청크 분할 방법에 대한 선택에 어떤 영향을 미치는지 설명합니다.
- 청크 정리 - 텍스트의 의미 체계에 대한 자료가 아닌 잠재적인 차이를 제거하여 근접성 일치를 지원하기 위해 구현할 수 있는 다양한 정리 방법을 설명합니다.
- 청크 보강 - 검색에서 잠재적인 용도에 대한 몇 가지 지침과 함께 청크 데이터를 보강하는 것을 고려해야 하는 몇 가지 일반적인 메타데이터 필드와 메타데이터 콘텐츠를 생성하는 데 일반적으로 사용되는 도구 또는 기술에 대해 설명합니다.
- 포함 모델의 중요성 이해 - 포함 모델이 벡터 검색 결과의 관련성에 중요한 영향을 미칠 수 있는 방법에 대해 설명합니다.
- 포함 모델 선택 - 포함 모델 선택에 대한 지침을 제공합니다.
- 포함 모델 평가 - 포함 모델을 평가하는 두 가지 방법을 설명합니다. 포함 모델 시각화 및 포함 거리 계산
- 검색 인덱 스 만들기 - 벡터 필드에 적용되는 벡터 검색 구성에 대해 수행해야 하는 몇 가지 주요 결정에 대해 설명합니다.
- 검색 옵션 이해 - 벡터, 전체 텍스트, 하이브리드 및 수동 다중와 같이 고려할 수 있는 검색 유형에 대한 개요를 제공합니다. 쿼리를 하위 쿼리로 분할하고 쿼리를 필터링하는 방법에 대한 지침을 제공합니다.
- 검색 평가 - 검색 솔루션 평가에 대한 지침을 제공합니다.
- 큰 언어 모델 평가 메트릭 이해 - 접지성, 완전성, 사용률 및 관련성을 포함하여 큰 언어 모델 응답을 평가하는 데 사용할 수 있는 몇 가지 메트릭의 개요를 제공합니다.
- 유사성 및 평가 메트릭 이해 - RAG 솔루션을 평가할 때 사용할 수 있는 유사성 및 평가 메트릭의 작은 목록을 제공합니다.
- 설명서, 보고 및 집계 의 중요성 이해 - 평가 결과와 함께 하이퍼 매개 변수를 문서화하고, 여러 쿼리의 결과를 집계하고, 결과를 시각화하는 것의 중요성에 대해 설명합니다.
- RAG 실험 가속기 - RAG 실험 가속기 GitHub 리포지토리를 사용하여 팀이 여러 실험을 실행하고 결과를 유지 및 평가하여 RAG 구현을 위한 최상의 전략을 찾는 데 도움이 되는 방법을 설명합니다.
구조적 접근 방식
단계 및 변수의 수 때문에 구조적 평가 프로세스를 통해 RAG 솔루션을 디자인하는 것이 중요합니다. 각 단계의 결과를 평가하고 요구 사항에 따라 조정합니다. 최적화를 위해 각 단계를 독립적으로 평가해야 하지만 최종 결과는 사용자가 경험하게 될 것입니다. 각 개별 단계에 대한 자체 승인 조건을 결정하기 전에 이 프로세스의 모든 단계를 이해해야 합니다.