RAG(Retrieval-Augmented Generation) 패턴은 언어 모델을 사용하여 모델이 아직 알지 못하는 특정 또는 소유 데이터를 처리하는 애플리케이션을 빌드하는 업계 표준 접근 방식입니다. 아키텍처는 간단하지만 이 아키텍처에 적합한 RAG 솔루션을 설계, 실험 및 평가하려면 엄격하고 과학적 접근 방식의 이점을 활용하는 많은 복잡한 고려 사항이 포함됩니다.
이 문서는 시리즈의 소개입니다. 시리즈의 각 문서에서는 RAG 솔루션 디자인의 특정 단계를 다룹니다.
이 시리즈의 다른 문서에서는 다음과 같은 고려 사항을 다룹니다.
- 평가 중에 사용할 테스트 문서 및 쿼리를 확인하는 방법
- 청크 분할 전략을 선택하는 방법
- 보강해야 하는 청크 및 보강 방법을 결정하는 방법
- 올바른 포함 모델을 선택하는 방법
- 검색 인덱스 구성 방법
- 벡터, 전체 텍스트, 하이브리드 및 수동 다중 검색과 같은 검색을 확인하는 방법
- 각 단계를 평가하는 방법
RAG 아키텍처
요청 흐름 및 데이터 파이프라인을 포함하여 RAG 솔루션의 상위 수준 아키텍처를 보여 주는
RAG 애플리케이션 흐름
다음 워크플로에서는 RAG 애플리케이션에 대한 개략적인 흐름을 설명합니다.
- 사용자가 지능형 애플리케이션 사용자 인터페이스에서 쿼리를 실행합니다.
- 지능형 애플리케이션은 오케스트레이터에 대한 API 호출을 합니다. 의미 체계 커널, Azure Machine Learning 프롬프트 흐름 또는 LangChain과 같은 도구 또는 플랫폼을 사용하여 오케스트레이터를 구현할 수 있습니다.
- 오케스트레이터는 Azure AI Search에서 수행할 검색을 결정하고 쿼리를 실행합니다.
- 오케스트레이터는 쿼리의 상위 N 결과를 패키지합니다. 프롬프트 내에서 상위 결과와 쿼리를 컨텍스트로 패키지하고 프롬프트를 언어 모델로 보냅니다. 오케스트레이터는 사용자가 읽을 수 있도록 지능형 애플리케이션에 대한 응답을 반환합니다.
RAG 데이터 파이프라인 흐름
다음 워크플로에서는 RAG 애플리케이션에 대한 접지 데이터를 제공하는 데이터 파이프라인에 대한 개략적인 흐름을 설명합니다.
- 문서는 데이터 파이프라인으로 푸시되거나 끌어온 것입니다.
- 데이터 파이프라인은 다음 단계를 완료하여 각 문서를 개별적으로 처리합니다.
- 청크 문서: 문서를 단일 아이디어 또는 개념이 이상적으로 있는 의미 체계적으로 관련된 부분으로 나눕니다.
- 청크 보강: 청크의 콘텐츠를 기반으로 파이프라인이 만드는 메타데이터 필드를 추가합니다. 데이터 파이프라인은 메타데이터를 제목, 요약 및 키워드와 같은 개별 필드로 분류합니다.
- 포함 청크: 포함 모델을 사용하여 청크 및 벡터 검색에 사용되는 다른 메타데이터 필드를 벡터화합니다.
- 청크 유지: 청크를 검색 인덱스에 저장합니다.
RAG 디자인 및 평가 고려 사항
RAG 솔루션을 디자인할 때 다양한 구현 결정을 내려야 합니다. 다음 다이어그램에서는 이러한 결정을 내릴 때 물어봐야 하는 몇 가지 질문을 보여 줍니다.
다음 목록에서는 RAG 솔루션 개발의 각 단계에서 수행해야 하는 작업을 간략하게 설명합니다.
준비 단계중에 다음을 수행해야 합니다.
- 솔루션 도메인을 확인합니다. RAG 솔루션에 대한 비즈니스 요구 사항을 명확하게 정의합니다.
- 대표 테스트 문서를 수집합니다. 문서 컬렉션을 대표하는 RAG 솔루션에 대한 테스트 문서를 수집합니다.
- 테스트 쿼리를 수집합니다. 정보를 수집하고 쿼리를 테스트하고 문서에서 다루지 않는 가상 쿼리 및 쿼리를 생성합니다.
청크단계에서 다음을 수행해야 합니다.
- 청크 경제 이해. 텍스트 컬렉션에 대한 청크 분할 솔루션의 전체 비용을 평가할 때 고려해야 할 요소를 이해합니다.
- 문서 분석을 수행합니다. 문서 유형을 분석할 때 결정을 내리는 데 도움이 되도록 다음 질문을 합니다.
- 문서에서 무시하거나 제외하려는 콘텐츠는 무엇인가요?
- 청크로 캡처하려는 콘텐츠는 무엇인가요?
- 해당 콘텐츠를 어떻게 청크하시겠습니까?
- 청크 분할 방법을 이해합니다. 문장 기반, 고정 크기 및 사용자 지정 방법을 포함하거나 언어 모델 확대, 문서 레이아웃 분석 및 기계 학습 모델을 사용하여 청크 분할에 대한 다양한 방법을 이해합니다.
- 문서 구조가 청크 분할에 미치는 영향을 이해합니다. 문서에 있는 구조의 정도에 따라 청크 분할 방법을 선택합니다.
청크 보강 단계중에 다음을 수행해야 합니다.
- 청크를 정리합니다. 텍스트의 의미에 영향을 주지 않는 차이를 없애기 위해 정리 방법을 구현합니다. 이 메서드는 근접 일치를 지원합니다.
- 청크를 보강합니다. 일반적인 메타데이터 필드를 사용하여 청크 데이터를 보강하고 검색에서 청크 데이터의 잠재적 용도를 이해하는 것이 좋습니다. 메타데이터 콘텐츠를 생성하기 위해 일반적으로 사용되는 도구 또는 기술에 대해 알아봅니다.
포함 단계중에 다음을 수행해야 합니다.
- 포함 모델의 중요성을 이해합니다. 포함 모델은 벡터 검색 결과의 관련성에 크게 영향을 줄 수 있습니다.
- 사용 사례에 적합한 포함 모델을 선택합니다.
- 포함 모델을 평가합니다. 포함을 시각화하고 포함 거리를 계산하여 포함 모델을 평가합니다.
정보 검색 단계에서 다음을 수행해야 합니다. - 검색 인덱스 만들기 벡터 필드에 적절한 벡터 검색 구성을 적용합니다.
- 검색 옵션을 이해합니다. 벡터, 전체 텍스트, 하이브리드 및 수동 다중 검색을 포함하여 다양한 유형의 검색을 고려합니다. 쿼리를 하위 쿼리로 분할하고 쿼리를 필터링하는 방법에 대해 알아봅니다.
- 검색을 평가합니다. 검색 평가 방법을 사용하여 검색 솔루션을 평가합니다.
언어 모델 엔드 투 엔드 평가 단계중에 다음을 수행해야 합니다.
- 언어 모델 평가 메트릭을 이해합니다. 언어 모델의 응답을 평가하는 데 사용할 수 있는 접지성, 완전성, 사용률 및 관련성을 비롯한 여러 메트릭이 있습니다.
- 유사성 및 평가 메트릭을 이해합니다. 유사성 및 평가 메트릭을 사용하여 RAG 솔루션을 평가할 수 있습니다.
- 설명서, 보고 및 집계의 중요성을 이해합니다. 하이퍼 매개 변수 및 평가 결과를 문서화합니다. 여러 쿼리의 결과를 집계하고 결과를 시각화합니다.
- RAG 실험 가속기를 사용합니다. RAG 실험 가속기 GitHub 리포지토리 사용하여 팀이 여러 실험을 실행하고 결과를 유지하며 평가하여 RAG 구현에 가장 적합한 전략을 찾을 수 있도록 도와줍니다.
구조적 접근 방식
단계 및 변수의 수 때문에 RAG 솔루션에 대한 구조적 평가 프로세스를 따르는 것이 중요합니다. 각 단계의 결과를 평가하고 요구 사항에 따라 변경합니다. 최적화를 위해 각 단계를 독립적으로 평가해야 하지만 최종 결과는 고객이 경험하는 것입니다. 각 단계에 대한 자체 승인 조건을 결정하기 전에 이 프로세스의 모든 단계를 이해해야 합니다.
참가자
이 문서는 Microsoft에서 유지 관리합니다. 그것은 원래 다음 기여자에 의해 작성되었습니다.
주요 작성자:
- 라우프 알리우아트 | 소프트웨어 엔지니어 II
- 롭 바그비 | 보안 주 아키텍처 센터 콘텐츠 리드
- Prabal Deb | 주요 소프트웨어 엔지니어
- 채드 키텔 | 주요 소프트웨어 엔지니어
- 리테시 모디 | 수석 엔지니어
- Ryan Pfalz | 선임 기술 프로그램 관리자
- 랜디 서먼 | 주요 AI 클라우드 솔루션 설계자
공용이 아닌 LinkedIn 프로필을 보려면 LinkedIn에 로그인합니다.