이제 RAG, 텍스트 청킹, 임베딩의 기본 사항을 다루었으니, 전체 RAG 파이프라인을 단계별로 살펴보겠습니다. 이 상세한 예제는 실제 구현에서 모든 요소가 어떻게 맞물리는지 정확히 보여줄 것입니다.
1단계: 소스 텍스트 청킹
먼저, 소스 문서를 가져와 관리 가능한 청크로 나눕니다. 이 예제에서는 두 개의 간단한 텍스트 섹션을 사용하겠습니다:
- 섹션 1: 의학 연구 - "올해는 이전에 본 적 없는 '버그'인 XDR-47에 대한 이해에서 중요한 진전을 이루었습니다."
- 섹션 2: 소프트웨어 엔지니어링 - "이 부서는 분산 시스템에서 다양한 감염 경로를 연구하는 데 상당한 노력을 기울였습니다"
2단계: 임베딩 생성
다음으로, 각 텍스트 청크를 숫자 임베딩으로 변환합니다. 이를 더 쉽게 이해하기 위해, 항상 정확히 두 개의 숫자를 반환하는 완벽한 임베딩 모델이 있고, 각 숫자가 무엇을 나타내는지 알고 있다고 가정해 보겠습니다:

이 가상의 모델에서:
- 첫 번째 숫자: 텍스트가 의학에 대해 얼마나 이야기하는지
- 두 번째 숫자: 텍스트가 소프트웨어 엔지니어링에 대해 얼마나 이야기하는지
따라서 의학 연구 섹션은 [0.97, 0.34]를 얻습니다 - 매우 의학적이며, "버그"라는 단어 때문에 소프트웨어와도 약간 관련이 있습니다. 소프트웨어 엔지니어링 섹션은 [0.30, 0.97]을 얻습니다 - 매우 소프트웨어 중심적이지만, "감염 경로"는 의학적 함의를 가지고 있습니다.
정규화
이러한 임베딩을 저장하기 전에, 각 벡터의 크기를 1.0으로 조정하는 정규화 과정을 거칩니다. 이는 일반적으로 임베딩 API에서 자동으로 처리되지만, 이것이 발생한다는 것을 이해하는 것이 중요합니다.

정규화 후, 우리의 임베딩은 [0.944, 0.331]과 [0.295, 0.955]가 됩니다. 이를 단위 원 위에서 시각화할 수 있으며, 두 점 모두 원의 경계에 정확히 위치합니다.

3단계: 벡터 데이터베이스에 저장
정규화된 임베딩은 벡터 데이터베이스에 저장됩니다 - 이는 우리의 임베딩과 같은 긴 숫자 목록을 저장, 비교, 검색하는 데 최적화된 특수 데이터베이스입니다.

이 시점에서 잠시 멈춥니다. 지금까지의 모든 작업은 미리 수행되는 전처리였습니다. 이제 사용자가 쿼리를 제출하기를 기다립니다.
4단계: 사용자 쿼리 처리
사용자가 "회사에 대해 궁금합니다. 특히, 소프트웨어 엔지니어링 부서가 올해 무엇을 했나요?"와 같은 질문을 하면, 동일한 임베딩 모델을 통해 쿼리를 실행합니다.

이 쿼리는 [0.1, 0.89]로 임베딩됩니다 - 낮은 의학 점수, 높은 소프트웨어 엔지니어링 점수입니다. 정규화 후, [0.112, 0.993]이 됩니다.
5단계: 유사한 임베딩 찾기
이제 벡터 데이터베이스에 "이 사용자 쿼리 임베딩과 가장 가까운 저장된 임베딩을 찾아라"라고 요청합니다. 데이터베이스는 가장 유사한 소프트웨어 엔지니어링 섹션을 반환합니다.

하지만 데이터베이스는 어떻게 "가장 가까운" 것을 판단할까요? 코사인 유사도를 사용합니다.
코사인 유사도
벡터 데이터베이스는 벡터 간의 각도의 코사인을 계산하여 유사도를 측정합니다. 이는 -1에서 1 사이의 숫자를 제공합니다:

- 1.0 = 벡터가 정확히 같은 방향을 가리킴 (매우 유사함)
- 0.0 = 벡터가 수직임 (관련 없음)
- -1.0 = 벡터가 반대 방향을 가리킴 (매우 다름)
우리의 예제에서:
- 사용자 쿼리 대 소프트웨어 엔지니어링: 코사인 유사도 = 0.983 (매우 유사함!)
- 사용자 쿼리 대 의학 연구: 코사인 유사도 = 0.398 (덜 유사함)
코사인 거리
벡터 데이터베이스 문서에서 "코사인 거리"를 자주 보게 될 것입니다. 이는 단순히 1 - 코사인 유사도로, 숫자가 작을수록 더 유사하다는 의미로 척도를 반전시킵니다:
- 0.0 = 매우 유사함
- 1.0 = 수직
- 2.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 파이프라인입니다! 시스템은 사용자의 소프트웨어 엔지니어링 질문에 가장 관련성 높은 컨텍스트를 성공적으로 찾아 Claude에게 제공하여 정보에 기반한 응답을 생성할 수 있도록 했습니다.
이 과정은 사용자가 쿼리를 제출할 때마다 자동으로 발생하며, Claude가 일반적인 학습 지식뿐만 아니라 여러분의 특정 문서를 기반으로 질문에 답변할 수 있게 합니다.