편집

다음을 통해 공유


RAG 준비 단계

Azure AI 서비스
Azure AI Search
Azure OpenAI Service
Azure Machine Learning

RAG(Retrieval-augmented Generation) 개발 및 실험의 첫 번째 단계는 준비 단계입니다. 이 단계에서는 솔루션의 비즈니스 도메인을 정의합니다. 도메인을 정의한 후에는 문서를 수집하고, 문서 분석을 수행하고, 도메인과 관련된 샘플 질문을 수집합니다. 이러한 단계는 상호 관련되어 있으므로 병렬로 수행합니다. 예를 들어 문서 분석을 통해 수집해야 하는 테스트 문서 및 테스트 쿼리를 확인할 수 있습니다. 질문하는 질문은 문서의 콘텐츠로 답변할 수 있어야 하며 문서는 관련 질문에 답변해야 합니다.

이 문서는 시리즈의 일부입니다. 소개를 읽습니다.

솔루션 도메인 확인

이 프로세스의 첫 번째 단계는 솔루션 또는 사용 사례에 대한 비즈니스 요구 사항을 명확하게 정의하는 것입니다. 이러한 요구 사항은 솔루션이 답변해야 하는 질문의 종류와 이러한 질문에 답변하는 데 도움이 되는 원본 데이터 또는 문서를 결정하는 데 도움이 됩니다. 이후 단계에서 솔루션 도메인은 포함 모델 전략을 알리는 데 도움이 됩니다.

문서 분석

문서 분석의 목표는 문서 컬렉션에 대한 충분한 정보를 수집하여 다음을 이해하는 데 도움이 되는 것입니다.

  • 문서의 다양한 분류입니다. 예를 들어 제품 사양, 분기별 보고서, 자동차 보험 계약 또는 건강 보험 계약이 있을 수 있습니다.

  • 다양한 유형의 문서입니다. 예를 들어 PDF, Markdown 파일, HTML 파일 또는 DOCX 파일이 있을 수 있습니다.

  • 보안 제약 조건입니다. 예를 들어 공개적으로 액세스할 수 있는지 여부에 따라 문서에 액세스하려면 인증 및 권한 부여가 필요할 수 있습니다.

  • 문서의 구조입니다. 예를 들어 문서의 길이는 다를 수 있습니다. 또는 토픽 중단, 상황에 맞는 관련 이미지 또는 테이블 형식 데이터가 있을 수 있습니다.

다음 섹션에서는 이 정보를 사용하여 로드 및 청크 전략을 선택하는 방법을 설명합니다.

문서 분류

필요한 테스트 문서 수를 결정하는 데 도움이 되도록 문서의 다양한 분류를 이해해야 합니다. 분석의 이 부분은 보험이나 금융과 같은 높은 수준의 분류에 대해 알려야 합니다. 또한 건강 보험 문서 또는 자동차 보험 문서와 같은 하위 분류에 대해 알려야합니다. 또한 하위 분류에 다른 구조 또는 콘텐츠가 있는지 여부를 알고 싶습니다.

목표는 가지고 있는 다양한 문서 변형을 모두 이해하는 것입니다. 그런 다음 필요한 테스트 문서의 수와 분석을 확인할 수 있습니다. 실험에서 특정 문서 분류를 오버하거나 아래에 표시하지 않으려는 경우

문서 형식

컬렉션의 다양한 파일 형식을 이해하면 테스트 문서의 수와 분석을 확인할 수 있습니다. 예를 들어 분기별 보고서에 대한 PDF 및 Open XML 문서 형식이 있는 경우 각 문서 유형에 대한 테스트 문서가 필요합니다. 문서 유형을 이해하면 문서 로드 및 청크 분할에 대한 기술 요구 사항을 이해하는 데도 도움이 됩니다. 이러한 기술 요구 사항에는 이러한 파일 형식을 처리할 수 있는 특정 라이브러리가 포함됩니다.

보안 제약 조건

보안 제약 조건을 이해하는 것은 로드 및 청크 전략을 결정하는 데 중요합니다. 예를 들어 문서의 일부 또는 전부에 인증, 권한 부여 또는 네트워크 표시가 필요한지 여부를 식별해야 합니다. 문서가 보안 경계 내에 있는 경우 코드가 해당 문서에 액세스하거나 프로세스를 구현하여 문서를 처리 코드의 액세스 가능한 위치에 안전하게 복제할 수 있는지 확인합니다.

문서는 문서의 컨텍스트에 중요한 이미지 또는 오디오와 같은 멀티미디어를 참조하는 경우가 있습니다. 해당 미디어에는 문서 자체와 유사한 액세스 제어가 적용될 수도 있습니다. 해당 미디어에 인증 또는 네트워크 가시선이 필요한 경우 코드가 미디어에 액세스할 수 있는지 또는 액세스 권한이 있고 콘텐츠를 복제할 수 있는 프로세스가 있는지 확인해야 합니다.

워크로드에 서로 다른 사용자가 고유한 문서 또는 문서 세그먼트에만 액세스할 수 있어야 하는 경우 청크 분할 솔루션에서 이러한 액세스 권한을 유지하는 방법을 이해해야 합니다.

문서 구조

문서의 레이아웃과 문서의 콘텐츠 형식을 포함하여 문서의 구조를 이해해야 합니다. 문서의 구조와 내용을 이해하면 다음과 같은 결정을 내릴 수 있습니다.

  • 문서에서 노이즈를 정리하거나, 미디어를 추출하거나, 콘텐츠의 서식을 다시 지정하거나, 무시할 항목에 주석을 달기 위해 전처리가 필요한지 여부

  • 문서의 콘텐츠를 무시하거나 제외할지 여부

  • 캡처할 문서의 일부

  • 문서 청크 분할 방법

  • 이미지, 테이블, 차트 및 기타 포함된 미디어를 처리하는 방법

다음 섹션에서는 이러한 결정 중 일부를 결정하는 데 사용할 수 있는 분류된 질문을 나열합니다.

무시할 수 있는 항목 확인

일부 구조적 요소는 문서에 의미를 추가하지 않을 수 있으며 청크 분할 시 안전하게 무시될 수 있습니다. 경우에 따라 이러한 요소는 중요한 컨텍스트를 추가하고 쿼리와 인덱스의 관련성을 향상시킬 수 있지만 전부는 아닙니다. 일반적인 문서 기능에 대해 다음 질문을 하여 관련성을 추가할지 아니면 무시해야 하는지 확인합니다.

  • 문서에 목차가 포함되어 있나요?

  • 머리글 또는 바닥글이 있나요?

  • 저작권 또는 고지 사항이 있나요?

  • 각주 또는 각주가 있나요?

  • 워터마크가 있나요?

  • 주석 또는 주석이 있나요?

전처리 및 청크 전략 결정

문서의 구조에 대한 다음 질문은 쉽게 처리할 수 있도록 문서를 전처리해야 하는지 여부를 결정하는 데 도움이 될 수 있습니다. 청크 전략을 선택하는 데도 도움이 됩니다.

  • 여러 열 데이터 또는 여러 열 단락이 있나요? 단일 열 콘텐츠와 동일한 방식으로 다중 열 콘텐츠를 구문 분석하지 않습니다.

  • 문서는 어떻게 구조화되어 있습니까? 예를 들어 HTML 파일은 포함된 테이블 형식 데이터와 구분해야 하는 테이블을 사용하는 경우가 있습니다.

  • 몇 개의 단락이 있나요? 단락은 얼마나 걸리나요? 단락 길이가 비슷한가요?

  • 문서에 있는 언어, 언어 변형 또는 방언은 무엇인가요?

  • 문서에 유니코드 문자가 포함되어 있나요?

  • 숫자 형식은 어떻게 지정합니까? 쉼표 또는 소수점이 포함되어 있나요? 일관성이 있나요?

  • 문서의 어떤 부분이 균일하고 균일하지 않은 부분은 무엇입니까?

  • 의미 체계 의미를 추출할 수 있는 헤더 구조가 있나요?

  • 글머리 기호 또는 의미 있는 들여쓰기를 사용하나요?

이미지 처리 요구 사항 확인

문서의 이미지를 이해하면 이미지 처리 전략을 선택하는 데 도움이 될 수 있습니다. 이미지의 종류, 처리할 수 있는 충분한 해상도가 있는지 여부 및 이미지에 필요한 모든 정보가 포함되어 있는지 여부를 알아야 합니다. 다음 질문은 이미지 처리 요구 사항을 이해하는 데 도움이 됩니다.

  • 문서에 이미지가 포함되어 있나요?

  • 이미지는 어떤 해상도인가요?

  • 이미지에 텍스트가 포함되어 있습니까?

  • 값을 추가하지 않는 추상 이미지가 있나요? 예를 들어 아이콘은 의미 체계 값을 추가하지 않을 수 있습니다. 아이콘에 대한 설명을 추가하는 것은 일반적으로 문서의 콘텐츠와 관련이 없으므로 솔루션에 해로울 수 있습니다.

  • 이미지와 주변 텍스트 간의 관계는 무엇인가요? 이미지에 독립 실행형 콘텐츠가 있는지 또는 언어 모델에 전달할 때 사용해야 하는 이미지의 컨텍스트가 있는지 확인합니다. 캡션은 이미지에 포함되지 않은 중요한 컨텍스트가 있을 수 있는 주변 텍스트의 예입니다.

  • 이미지의 접근성 설명과 같은 풍부한 텍스트 표현이 있나요?

테이블, 차트 및 기타 미디어 처리 요구 사항 결정

테이블, 차트 및 기타 미디어에 캡슐화된 정보를 이해하면 처리 방법을 결정하는 데 도움이 될 수 있습니다. 다음 질문은 테이블, 차트 및 기타 미디어 처리 요구 사항을 이해하는 데 도움이 됩니다.

  • 문서에 숫자가 포함된 차트가 있나요?

  • 문서에 테이블이 포함되어 있나요?

    • 중첩 테이블과 같은 테이블이 복잡합니까, 아니면 호환성이 아닌가요?

    • 테이블에 대한 캡션이 있나요?

    • 테이블은 얼마인가요? 긴 테이블에는 청크의 반복 헤더가 필요할 수 있습니다.

  • 비디오 또는 오디오와 같은 다른 유형의 임베디드 미디어가 있나요?

  • 문서에 수학 방정식이나 과학적 표기법이 있나요?

대표 테스트 문서 수집

이 단계에서는 솔루션에서 사용하는 문서를 가장 잘 나타내는 문서를 수집합니다. 문서는 정의된 사용 사례를 해결하고 질문 수집 병렬 단계에서 수집한 질문에 답변해야 합니다.

고려 사항

잠재적인 대표 테스트 문서를 평가할 때 다음 영역을 고려합니다.

  • 관련: 문서는 대화형 애플리케이션의 비즈니스 요구 사항을 충족해야 합니다. 예를 들어 고객이 은행 업무를 수행하는 데 도움이 되는 챗봇을 빌드하는 경우 문서는 해당 요구 사항을 충족해야 합니다. 예를 들어 문서에는 은행 계좌를 열거나 닫는 방법이 표시됩니다. 문서는 병렬 단계에서 수집하는 테스트 질문을 해결할 수 있어야 합니다. 문서에 질문과 관련된 정보가 없으면 솔루션에서 유효한 응답을 생성할 수 없습니다.

  • 표현: 문서는 솔루션에서 사용하는 다양한 유형의 문서를 나타내야 합니다. 예를 들어 자동차 보험 문서에는 건강 또는 생명 보험 문서와 다른 정보가 포함되어 있습니다. 사용 사례에 이러한 세 가지 보험 유형을 모두 지원하는 솔루션이 필요하지만 자동차 보험 문서만 있다고 가정해 보겠습니다. 솔루션은 건강 및 생명 보험 운영에 대해 제대로 수행되지 않을 수 있습니다. 각 변형에 대해 두 개 이상의 문서가 있어야 합니다.

  • 물리적 문서 품질: 문서를 사용할 수 있는 모양이어야 합니다. 예를 들어 스캔한 이미지는 사용 가능한 정보를 추출하지 못할 수 있습니다.

  • 문서 콘텐츠 품질: 문서에 고품질 콘텐츠가 있어야 합니다. 맞춤법 오류 또는 문법 오류를 포함해서는 안 됩니다. 품질이 낮은 콘텐츠를 제공하는 경우 언어 모델이 제대로 작동하지 않습니다.

테스트 문서를 성공적으로 수집하려면 테스트 문서가 특정 도메인을 완전하고 정확하게 나타내는지 질적으로 확신할 있어야 합니다.

테스트 문서 지침

  • 가상 문서보다 실제 문서를 선택합니다. 실제 문서는 개인 데이터를 제거하려면 정리 프로세스를 거쳐야 합니다.

  • 가상 데이터로 문서를 선택적으로 보강하는 것이 좋습니다. 이 프로세스를 통해 향후 예측 시나리오를 포함하여 문서가 모든 종류의 시나리오를 포함하도록 할 수 있습니다. 가상 데이터를 사용해야 하는 경우 가능한 한 실제 데이터와 유사하도록 최선을 다합니다.

  • 문서에서 수집하는 질문을 해결할 수 있는지 확인합니다.

  • 각 문서 변형에 대해 문서가 두 개 이상 있습니다.

  • 언어 모델 또는 기타 도구를 사용하여 문서의 품질을 평가할 수 있습니다.

테스트 쿼리 수집

이 단계에서는 청크, 검색 솔루션 및 프롬프트 엔지니어링을 평가하는 데 사용하는 테스트 쿼리를 수집합니다. 대표 문서를 수집하는 동안 이 단계를 수행합니다. 쿼리를 수집하고 대표 문서가 이러한 쿼리를 동시에 처리하는 방법을 결정해야 합니다. 샘플 쿼리와 이러한 쿼리를 처리하는 샘플 문서의 일부를 모두 사용하여 다양한 전략과 접근 방식을 실험하는 동안 RAG 솔루션의 모든 단계를 평가할 수 있습니다.

테스트 쿼리 출력 수집

이 단계의 출력에는 수집 대표 테스트 쿼리 단계의 콘텐츠와 단계의 대표적인 테스트 문서 수집이 포함됩니다. 출력은 다음 데이터를 포함하는 컬렉션입니다.

  • 쿼리: 합법적인 사용자의 잠재적 프롬프트를 나타내는 질문입니다.

  • 컨텍스트: 쿼리를 처리하는 문서의 모든 실제 텍스트 컬렉션입니다. 컨텍스트의 각 비트에 대해 페이지와 실제 텍스트를 포함해야 합니다.

  • 답변: 쿼리에 대한 유효한 응답입니다. 응답은 문서에서 직접 제공되는 콘텐츠이거나 하나 이상의 컨텍스트에서 변경될 수 있습니다.

가상 쿼리 만들기

특정 도메인에 대한 SEM(Subject Matter Expert)가 사용 사례에 대한 포괄적인 질문 목록을 만드는 것은 종종 어려운 일입니다. 이 문제에 대한 한 가지 해결 방법은 수집하는 대표적인 테스트 문서에서 가상 질문을 생성하는 것입니다. 다음 단계에서는 대표 문서에서 가상 질문을 생성하는 실제 방법을 설명합니다.

  1. 문서를 청크합니다. 문서를 청크로 나눕니다. 전체 솔루션에 청크 분할 전략을 사용하지 마세요. 가상 쿼리를 생성하는 데 사용하는 이 일회성 단계를 사용합니다. 문서 수가 적절한 경우 청크를 수동으로 수행할 수 있습니다.

  2. 각 청크에 대한 쿼리를 생성합니다. 각 청크에 대해 수동으로 또는 언어 모델을 사용하여 쿼리를 생성합니다. 언어 모델을 사용하는 경우 일반적으로 각 청크에 대해 두 개의 쿼리를 생성하여 시작합니다. 언어 모델을 사용하여 답변을 만들 수도 있습니다. 다음 예제에서는 청크에 대한 질문과 대답을 생성하는 프롬프트를 보여 줍니다.

    Please read the following CONTEXT and generate two question and answer JSON objects in an array based on the CONTEXT provided. The questions should require deep reading comprehension, logical inference, deduction, and connecting ideas across the text. Avoid simplistic retrieval or pattern-matching questions. Instead, focus on questions that test the ability to reason about the text in complex ways, draw subtle conclusions, and combine multiple pieces of information to arrive at an answer. Ensure that the questions are relevant, specific, and cover the key points of the CONTEXT. Provide concise answers to each question, and directly quote the text from the provided context. Provide the array output in strict JSON format as shown in the output format. Ensure that the generated JSON is completely structurally correct, including proper nesting, comma placement, and quotation marks. There shouldn't be a comma after the last element in the array.
    
    Output format:
    [
      {
        "question": "Question 1",
        "answer": "Answer 1"
      },
      {
        "question": "Question 2",
        "answer": "Answer 2"
      }
    ]
    
    CONTEXT:
    
  3. 출력을 확인합니다. 질문이 사용 사례와 관련이 있는지와 대답이 질문을 해결하는지 확인합니다. SME는 이 확인을 수행해야 합니다.

해결되지 않은 쿼리

문서에서 처리하지 않는 쿼리와 해당 문서가 처리하는 쿼리를 수집하는 것이 중요합니다. 솔루션을 테스트할 때, 특히 언어 모델을 테스트할 때 솔루션이 대답하기에 충분한 컨텍스트가 없는 쿼리에 응답하는 방법을 결정해야 합니다. 솔루션에서 해결할 수 없는 쿼리에 응답하기 위해 솔루션은 다음을 수행할 수 있습니다.

  • 답을 모른다고 명시합니다.

  • 답변을 모르고 사용자가 더 많은 정보를 찾을 수 있는 링크를 제공합니다.

포함된 미디어에 대한 테스트 쿼리 수집

텍스트와 마찬가지로 포함된 미디어를 사용하여 관련성이 높은 답변을 생성하는 다양한 질문을 수집해야 합니다. 그래프, 테이블 또는 스크린샷이 있는 이미지가 있는 경우 모든 사용 사례를 다루는 질문이 있는지 확인합니다. 문서 분석 단계의 이미지 부분에서 이미지 앞이나 뒤의 텍스트가 몇 가지 질문에 답하는 데 필요한지 경우 테스트 쿼리에 해당 질문이 있는지 확인합니다.

테스트 쿼리 수집 지침

  • 사용할 수 있는 실제 고객 질문이 포함된 시스템이 있는지 확인합니다. 예를 들어 고객 질문에 대답하기 위해 챗봇을 빌드하는 경우 지원 센터, FAQ 또는 티켓 시스템의 고객 질문을 사용할 수 있습니다.

  • 사용 사례에 대한 고객 또는 SME는 수집된 문서, 관련 테스트 쿼리 및 문서의 쿼리에 대한 답변이 포괄적이고 대표적이고 올바른지 여부를 결정하는 품질 게이트 역할을 해야 합니다.

  • 질문과 답변 본문을 주기적으로 검토하여 원본 문서를 계속 정확하게 반영하도록 합니다.

다음 단계