Sign in to save your progressYou can keep reading without an account, but completed lessons won't be saved.
Sign in

이제 RAG, 텍스트 청킹, 임베딩의 기본 사항을 다루었으니, 전체 RAG 파이프라인을 단계별로 살펴보겠습니다. 이 예제는 이러한 모든 요소가 어떻게 함께 작동하여 관련 정보를 검색하고 응답을 생성하는지 정확히 보여줄 것입니다.

1단계: 소스 텍스트 청킹

먼저, 소스 문서를 가져와 관리하기 쉬운 청크로 나눕니다. 이 예제에서는 두 개의 간단한 텍스트 섹션을 사용하겠습니다:

  • 섹션 1: 의학 연구 - "올해는 이전에 본 적 없는 '버그'인 XDR-47에 대한 이해에서 중요한 진전이 있었습니다."
  • 섹션 2: 소프트웨어 엔지니어링 - "이 부서는 분산 시스템에서 다양한 감염 경로를 연구하는 데 상당한 노력을 기울였습니다"

2단계: 임베딩 생성

다음으로, 임베딩 모델을 사용하여 각 텍스트 청크를 숫자 임베딩으로 변환합니다. 이를 더 쉽게 이해하기 위해, 항상 정확히 두 개의 숫자를 반환하는 완벽한 임베딩 모델이 있고, 각 숫자가 무엇을 나타내는지 알고 있다고 가정해 보겠습니다.

이 가상의 모델에서:

  • 첫 번째 숫자는 텍스트가 의학 분야에 대해 얼마나 많이 이야기하는지를 나타냅니다
  • 두 번째 숫자는 텍스트가 소프트웨어 엔지니어링에 대해 얼마나 많이 이야기하는지를 나타냅니다

의학 연구 섹션의 경우, [0.97, 0.34]를 얻을 수 있습니다 - 매우 의학 중심적이지만 "버그"라는 단어로 인해 약간의 소프트웨어 요소가 있습니다. 소프트웨어 엔지니어링 섹션의 경우, [0.30, 0.97]을 얻습니다 - 소프트웨어 중심적이지만 "감염 경로"로 인한 의학적 함의가 있습니다.

정규화

임베딩 API는 일반적으로 각 벡터의 크기를 1.0으로 조정하는 정규화 단계를 수행합니다. 여기서 수학에 대해 걱정할 필요는 없습니다 - 자동으로 처리됩니다. 이는 [0.944, 0.331][0.295, 0.955]와 같은 정규화된 벡터를 제공합니다.

이러한 임베딩을 단위 원에서 시각화할 수 있으며, 각 점은 텍스트 청크 중 하나를 나타냅니다.

3단계: 벡터 데이터베이스에 저장

이러한 임베딩을 벡터 데이터베이스에 저장합니다 - 임베딩과 같은 긴 숫자 목록을 저장, 비교, 검색하는 데 최적화된 특수 데이터베이스입니다.

이 시점에서 잠시 멈춥니다. 지금까지의 모든 작업은 미리 수행되는 전처리였습니다. 이제 사용자가 쿼리를 제출하기를 기다립니다.

4단계: 사용자 쿼리 처리

사용자가 "회사에 대해 궁금합니다. 특히, 소프트웨어 엔지니어링 부서가 올해 무엇을 했나요?"와 같은 질문을 하면, 동일한 임베딩 모델을 통해 쿼리를 실행합니다.

이 쿼리는 [0.1, 0.89]와 같이 임베딩됩니다 - 낮은 의학 점수, 높은 소프트웨어 엔지니어링 점수. 정규화 후, [0.112, 0.993]을 얻습니다.

5단계: 유사한 임베딩 찾기

사용자의 쿼리 임베딩을 벡터 데이터베이스로 보내고 가장 유사한 저장된 임베딩을 찾도록 요청합니다.

데이터베이스는 사용자가 질문한 내용과 가장 가까운 일치이기 때문에 소프트웨어 엔지니어링 섹션을 반환합니다.

유사성 작동 방식: 코사인 유사도

벡터 데이터베이스는 코사인 유사도를 사용하여 어떤 임베딩이 가장 유사한지 결정합니다. 이는 두 벡터 사이의 각도의 코사인을 측정합니다.

코사인 유사도에 대한 주요 사항:

  • 결과는 -1에서 1까지의 범위입니다
  • 1에 가까운 값은 높은 유사성을 의미합니다
  • -1에 가까운 값은 매우 다름을 의미합니다
  • 0은 수직(관계 없음)을 의미합니다

이 예제에서, 사용자 쿼리와 소프트웨어 엔지니어링 청크 간의 코사인 유사도는 0.983입니다 - 매우 높은 유사성입니다. 의학 연구 청크와의 유사성은 0.398에 불과합니다 - 훨씬 낮습니다.

코사인 거리

벡터 데이터베이스 문서에서 "코사인 거리"를 자주 볼 수 있습니다. 이는 단순히 (1 - 코사인 유사도)로 계산됩니다. 코사인 거리를 사용하면:

  • 0에 가까운 값은 높은 유사성을 의미합니다
  • 값이 클수록 유사성이 낮음을 의미합니다

이 조정은 많은 맥락에서 숫자를 해석하기 더 쉽게 만듭니다.

6단계: 최종 프롬프트 생성

마지막으로, 사용자의 질문과 찾은 가장 관련성 있는 텍스트 청크를 가져와 프롬프트로 결합하고 응답을 위해 Claude에 전송합니다.

프롬프트는 다음과 같을 수 있습니다:

Answer the user's question about the financial document.

<user_question>
How many bugs did engineers fix this year?
</user_question>

<report>
## Section 2: Software Engineering
This division dedicated significant effort to studying various infection vectors in our distributed systems
</report>

이것이 완전한 RAG 파이프라인입니다! 시스템은 의미적 유사성을 기반으로 가장 관련성 있는 정보를 성공적으로 검색하고 정확한 응답을 생성하기 위한 컨텍스트로 제공했습니다.