다음을 통해 공유


검색 기능 강화 생성 또는 미세 조정을 통해 대형 언어 모델을 향상시키기

이 문서에서는 LLM(대규모 언어 모델)이 추가 데이터를 사용하여 더 나은 답변을 제공하는 방법을 설명합니다. 기본적으로 LLM은 학습 중에 배운 내용만 알고 있습니다. 실시간 또는 개인 데이터를 추가하여 더 유용하게 만들 수 있습니다.

이 추가 데이터를 추가하는 두 가지 주요 방법이 있습니다.

다음 섹션에서는 두 메서드를 모두 나눠 줍니다.

RAG 이해

RAG는 키 "내 데이터를 통해 채팅" 시나리오를 사용하도록 설정합니다. 이 시나리오에서 조직에는 문서, 설명서 및 기타 독점 데이터와 같은 잠재적으로 큰 텍스트 콘텐츠 모음이 있습니다. 사용자 프롬프트에 대한 답변의 기준으로 이 모음을 사용합니다.

RAG를 사용하면 사용자 고유의 문서를 사용하여 질문에 대답하는 챗봇을 빌드할 수 있습니다. 작동 방법은 다음과 같습니다.

  1. 데이터베이스에 문서(또는 청크라고 함)를 저장합니다.
  2. 각 청크에 대한 포함을 만듭니다. 이를 설명하는 숫자 목록
  3. 누군가가 질문을 하면 시스템에서 비슷한 청크를 찾습니다.
  4. 질문과 함께 관련 청크를 LLM에 보내 답변을 만듭니다.

벡터화된 문서의 인덱스 만들기

먼저 벡터 데이터 저장소를 빌드합니다. 이 저장소에는 각 문서 또는 청크에 대한 포함이 포함됩니다. 다음 다이어그램에서는 문서의 벡터화된 인덱스 만들기의 주요 단계를 보여 줍니다.

RAG 기반 채팅 시스템에서 문서 수집의 다양한 단계를 보여 주는 다이어그램입니다.

다이어그램은 데이터 파이프라인을 보여줍니다. 이 파이프라인은 데이터를 가져오고, 처리하고, 시스템에 대해 관리합니다. 또한 벡터 데이터베이스의 스토리지를 위해 데이터를 준비하고 LLM에 적합한 형식인지 확인합니다.

포함은 전체 프로세스를 구동합니다. 포함은 기계 학습 모델에서 사용할 수 있도록 단어, 문장 또는 문서의 의미를 나타내는 숫자 집합입니다.

포함을 만드는 한 가지 방법은 Azure OpenAI Embeddings API로 콘텐츠를 보내는 것입니다. API는 숫자 목록인 벡터를 반환합니다. 각 숫자는 주제, 의미, 문법 또는 스타일과 같은 콘텐츠에 대해 설명합니다.

  • 주제 문제
  • 의미 체계 의미
  • 구문 및 문법
  • Word 및 구 사용
  • 상황별 관계
  • 스타일 또는 톤

이러한 모든 숫자는 콘텐츠가 다차원 공간에 있는 위치를 보여 줍니다. 수백 또는 수천 개의 차원이 있는 3D 그래프를 상상해 보세요. 컴퓨터는 그림을 그릴 수 없더라도 이러한 종류의 공간을 사용할 수 있습니다.

자습서: Azure AI Foundry 모델 포함에서 Azure OpenAI 탐색 및 문서 검색은 Azure OpenAI Embeddings API를 사용하여 문서에 대한 포함을 만드는 방법에 대한 가이드를 제공합니다.

벡터 및 콘텐츠 저장

다음 단계에서는 벡터 및 콘텐츠(또는 콘텐츠 위치에 대한 포인터) 및 기타 메타데이터를 벡터 데이터베이스에 저장하는 작업이 포함됩니다. 벡터 데이터베이스는 다른 유형의 데이터베이스와 비슷하지만 두 가지 주요 차이점이 있습니다.

  • 벡터 데이터베이스는 벡터를 인덱스로 사용하여 데이터를 검색합니다.
  • 벡터 데이터베이스는 가장 가까운 인접 알고리즘을 사용하는 경우가 많으며, 코사인 유사성 을 거리 메트릭으로 사용하여 검색 조건과 가장 일치하는 벡터를 찾을 수 있습니다.

개발자는 벡터 데이터베이스에 저장된 문서 모음을 사용하여 검색기 구성 요소 빌드하여 사용자의 쿼리와 일치하는 문서를 검색할 수 있습니다. 시스템은 이 데이터를 사용하여 LLM에 사용자의 쿼리에 응답하는 데 필요한 내용을 제공합니다.

문서를 활용하여 쿼리에 답변하기

RAG 시스템은 먼저 의미 체계 검색을 사용하여 답변을 작성할 때 LLM에 도움이 될 수 있는 문서를 찾습니다. 다음 단계에서는 답변을 작성하기 위해 LLM에 사용자의 원래 프롬프트와 일치하는 문서를 보내는 작업이 포함됩니다.

다음 다이어그램에서는 간단한 RAG 구현(순 진한 RAG이라고도 함)을 보여 줍니다.

간단한 RAG 흐름을 보여 주는 다이어그램

다이어그램에서 사용자는 쿼리를 제출합니다. 먼저 시스템은 사용자의 프롬프트를 포함으로 바꿉니다. 그런 다음 벡터 데이터베이스를 검색하여 프롬프트와 가장 유사한 문서 또는 청크를 찾습니다.

코사인 유사성은 두 벡터 간의 각도를 확인하여 두 벡터가 얼마나 가까운지 측정합니다. 값이 1에 가까이면 벡터가 매우 유사합니다. -1 가까운 값은 매우 다르다는 것을 의미합니다. 이 방법은 시스템에서 유사한 콘텐츠가 있는 문서를 찾는 데 도움이 됩니다.

가장 가까운 인접 알고리즘은 지정된 지점에 가장 가까운 벡터를 찾습니다. K-가장 가까운 인접 항목(KNN) 알고리즘은 가장 가까운 상위 k 일치 항목을 찾습니다. 권장 사항 엔진과 같은 시스템은 종종 KNN과 코사인 유사성을 함께 사용하여 사용자의 요구에 가장 적합한 일치 항목을 찾습니다.

검색 후 가장 일치하는 콘텐츠와 사용자의 프롬프트를 LLM에 보내 더 관련성이 큰 응답을 생성할 수 있습니다.

과제 및 고려 사항

RAG 시스템에는 다음과 같은 고유한 과제가 있습니다.

  • 데이터 개인 정보: 특히 외부 원본에서 정보를 검색하거나 처리할 때 사용자 데이터를 책임감 있게 처리합니다.
  • 계산 요구 사항: 검색 및 생성 단계가 모두 중요한 컴퓨팅 리소스를 사용할 것으로 예상합니다.
  • 정확도 및 관련성: 정확하고 관련 있는 응답을 제공하는 데 집중하고 데이터 또는 모델의 편향을 감시합니다.

개발자는 효율적이고 윤리적이며 가치 있는 RAG 시스템을 빌드하기 위해 이러한 과제를 해결해야 합니다.

프로덕션 지원 RAG 시스템을 빌드하는 방법에 대한 자세한 내용은 고급 검색 보강된 세대 시스템 빌드를 참조하세요.

생성 AI 솔루션을 빌드하고 싶으신가요? Python용 사용자 고유의 데이터 샘플을 사용하여 채팅 시작부터 시작합니다. 자습서는 .NET, Java 및 JavaScript에도 사용할 수 있습니다.

모델 미세 조정

미세 조정은 대규모 일반 데이터 세트에 대한 초기 학습 후 더 작은 도메인별 데이터 세트에서 LLM을 다시 학습시킵니다.

사전 학습 중에 LLM은 광범위한 데이터에서 언어 구조, 컨텍스트 및 일반 패턴을 학습합니다. 미세 조정은 특정 작업 또는 토픽에서 더 나은 성능을 발휘할 수 있도록 새로운 포커스가 있는 데이터로 모델을 학습합니다. 학습한 대로 모델은 새 데이터의 세부 정보를 처리하도록 가중치를 업데이트합니다.

미세 조정의 주요 이점

  • 전문화: 미세 조정은 모델이 법률 또는 의료 문서 분석 또는 고객 서비스 처리와 같은 특정 작업을 더 잘 수행하는 데 도움이 됩니다.
  • 효율성: 미세 조정은 모델을 처음부터 학습시키는 것보다 적은 데이터와 적은 리소스를 사용합니다.
  • 적응성: 미세 조정을 통해 모델은 원래 학습에서 다루지 않은 새 작업 또는 도메인을 학습할 수 있습니다.
  • 성능 향상: 미세 조정은 모델이 새 도메인의 언어, 스타일 또는 용어를 이해하는 데 도움이 됩니다.
  • 개인 설정: 미세 조정은 모델의 응답이 사용자 또는 조직의 요구 사항 또는 기본 설정에 맞게 만들 수 있습니다.

제한 사항 및 과제

미세 조정에도 몇 가지 문제가 있습니다.

  • 데이터 요구 사항: 특정 작업 또는 도메인에 대한 고품질의 대규모 데이터 세트가 필요합니다.
  • 과잉 맞춤 위험: 작은 데이터 세트를 사용하면 모델이 학습 데이터에서 잘 수행되지만 새 데이터는 제대로 수행되지 않을 수 있습니다.
  • 비용 및 리소스: 미세 조정에는 특히 대형 모델 또는 데이터 세트의 경우 컴퓨팅 성능이 여전히 필요합니다.
  • 유지 관리 및 업데이트: 도메인이 변경될 때 미세 조정된 모델을 업데이트해야 합니다.
  • 모델 드리프트: 특정 작업을 미세 조정하면 일반 언어 작업에서 모델이 덜 효과적일 수 있습니다.

모델을 미세 조정하여 사용자 지정하는 방법 모델을 미세 조정하는 방법을 설명합니다.

미세 조정 및 RAG

미세 조정 및 RAG는 모두 LLM이 더 잘 작동하는 데 도움이 되지만 각각 다른 요구 사항에 맞습니다. 목표, 가지고 있는 데이터 및 컴퓨팅, 모델을 특수화할지 또는 일반 상태로 유지할지에 따라 올바른 방법을 선택합니다.

미세 조정을 선택해야 하는 경우

  • 작업별 성능: 특정 작업에 대한 상위 결과가 필요하고 과잉 맞춤을 방지하기에 충분한 도메인 데이터가 있는 경우 미세 조정을 선택합니다.
  • 데이터 제어: 기본 모델이 미리 학습된 것과 매우 다른 고유하거나 독점적인 데이터가 있는 경우 미세 조정을 사용합니다.
  • 안정적인 콘텐츠: 작업에 최신 정보가 포함된 지속적인 업데이트가 필요하지 않은 경우 미세 조정을 선택합니다.

RAG를 선택하는 경우

  • 동적 또는 변경 콘텐츠: 뉴스 또는 최근 이벤트와 같은 최신 정보가 필요한 경우 RAG를 사용합니다.
  • 광범위한 주제 적용 범위: 하나의 영역이 아니라 여러 항목에서 강력한 결과를 원하는 경우 RAG를 선택합니다.
  • 제한된 리소스: 학습을 위한 데이터 또는 컴퓨팅이 많지 않고 기본 모델이 이미 좋은 작업을 수행하는 경우 RAG로 이동합니다.

애플리케이션 디자인에 대한 최종 생각

앱에 필요한 사항에 따라 미세 조정과 RAG 중에서 결정합니다. 미세 조정은 특수 작업에 가장 적합하며 RAG는 동적 시나리오에 대한 유연성과 up-to날짜 콘텐츠를 제공합니다.