RAG 데이터 파이프라인 설명 및 처리 단계
이 문서에서는 RAG 애플리케이션에서 사용할 구조화되지 않은 데이터를 준비하는 방법을 알아봅니다. 구조화되지 않은 데이터는 텍스트 및 이미지를 포함할 수 있는 PDF 문서 또는 오디오 또는 비디오와 같은 멀티미디어 콘텐츠와 같은 특정 구조나 조직이 없는 데이터를 나타냅니다.
구조화되지 않은 데이터에는 미리 정의된 데이터 모델 또는 스키마가 없으므로 구조 및 메타데이터만 기준으로 쿼리할 수 없습니다. 따라서 구조화되지 않은 데이터에는 원시 텍스트, 이미지, 오디오 또는 기타 콘텐츠에서 의미 체계적 의미를 이해하고 추출할 수 있는 기술이 필요합니다.
데이터를 준비하는 동안 RAG 애플리케이션 데이터 파이프라인은 원시 비정형 데이터를 가져와서 사용자의 쿼리와 관련성에 따라 쿼리할 수 있는 불연속 청크로 변환합니다. 데이터 전처리의 주요 단계는 아래에 설명되어 있습니다. 각 단계에는 튜닝할 수 있는 다양한 노브가 있습니다. 이러한 노브에 대한 심층적인 논의는 RAG 애플리케이션 품질 향상을 참조하세요.
검색을 위해 구조화되지 않은 데이터 준비
이 섹션의 나머지 부분에서는 의미 체계 검색을 사용하여 검색하기 위해 구조화되지 않은 데이터를 준비하는 프로세스를 설명합니다. 의미 체계 검색은 사용자 쿼리의 컨텍스트적 의미와 의도를 이해하여 더 관련성이 큰 검색 결과를 제공합니다.
의미 체계 검색은 구조화되지 않은 데이터에 대해 RAG 애플리케이션의 검색 구성 요소를 구현할 때 수행할 수 있는 몇 가지 방법 중 하나입니다. 이러한 문서에서는 검색 노브 섹션의 대체 검색 전략을 다룹니다.
RAG 애플리케이션 데이터 파이프라인의 단계
다음은 구조화되지 않은 데이터를 사용하는 RAG 애플리케이션의 데이터 파이프라인에 대한 일반적인 단계입니다.
- 원시 문서 구문 분석: 초기 단계에는 원시 데이터를 사용 가능한 형식으로 변환하는 작업이 포함됩니다. 여기에는 PDF 컬렉션에서 텍스트, 테이블 및 이미지를 추출하거나 OCR(광학 문자 인식) 기술을 사용하여 이미지에서 텍스트를 추출하는 것이 포함될 수 있습니다.
- 문서 메타데이터 추출(선택 사항): 경우에 따라 문서 제목, 페이지 번호, URL 또는 기타 정보와 같은 문서 메타데이터를 추출하고 사용하면 검색 단계가 올바른 데이터를 보다 정확하게 쿼리하는 데 도움이 될 수 있습니다.
- 청크 문서: 구문 분석한 문서가 임베딩 모델 및 LLM의 문맥 창에 들어갈 수 있도록 문서를 더 작고 독립적인 청크로 분할합니다. 전체 문서를 검색하는 대신 초점이 맞춰진 청크를 검색하면, LLM이 응답을 생성하기 위한 보다 명확한 컨텍스트를 확보할 수 있습니다.
- 청크 포함: 의미 체계 검색을 사용하는 RAG 애플리케이션에서 포함 모델이라는 특수한 유형의 언어 모델은 각 청크를 이전 단계의 각 청크를 숫자 벡터 또는 숫자 목록으로 변환하여 각 콘텐츠의 의미를 캡슐화합니다. 결정적으로 이러한 벡터는 표면 수준 키워드뿐만 아니라 텍스트의 의미 체계적 의미를 나타냅니다. 이렇게 하면 리터럴 텍스트 일치가 아닌 의미에 따라 검색할 수 있습니다.
- 벡터 데이터베이스의 인덱스 청크: 마지막 단계는 청크의 텍스트와 함께 청크의 벡터 표현을 벡터 데이터베이스에 로드하는 것입니다. 벡터 데이터베이스는 포함과 같은 벡터 데이터를 효율적으로 저장하고 검색하도록 설계된 특수한 유형의 데이터베이스입니다. 많은 수의 청크로 성능을 유지하기 위해 벡터 데이터베이스에는 일반적으로 다양한 알고리즘을 사용하여 검색 효율성을 최적화하는 방식으로 벡터 포함을 구성하고 매핑하는 벡터 인덱스가 포함됩니다. 쿼리 시 사용자의 요청이 벡터에 포함되고 데이터베이스는 벡터 인덱스를 활용하여 가장 유사한 청크 벡터를 찾아 해당 원래 텍스트 청크를 반환합니다.
유사성을 계산하는 프로세스는 계산 비용이 많이 들 수 있습니다. Databricks Vector Search와 같은 벡터 인덱스는 복잡한 근사치 메서드를 통해 임베딩을 효율적으로 구성하고 탐색하기 위한 메커니즘을 제공하여 이 프로세스 속도를 높입니다. 이렇게 하면 각 포함을 사용자의 쿼리와 개별적으로 비교하지 않고도 가장 관련성이 높은 결과의 신속한 순위를 설정할 수 있습니다.
데이터 파이프라인의 각 단계에는 RAG 애플리케이션의 품질에 영향을 주는 엔지니어링 결정이 포함됩니다. 예를 들어 3단계에서 적절한 청크 크기를 선택하면 LLM이 특정하지만 상황에 맞는 정보를 수신하고 4단계에서 적절한 포함 모델을 선택하면 검색 중에 반환되는 청크의 정확도가 결정됩니다.
이 데이터 준비 프로세스는 사용자가 쿼리를 제출할 때 트리거되는 온라인 단계와 달리 시스템이 쿼리에 응답하기 전에 발생하므로 오프라인 데이터 준비라고 합니다.