1TB 규모의 기술 문서 기반 RAG 시스템 구축기: 성공과 실패!

by DD
2개월 전
조회수 6

1TB 규모의 기술 문서를 기반으로 한 RAG 시스템 구축 과정을 상세히 설명함

Ollama, LlamaIndex, ChromaDB 등 다양한 기술 스택(Tech Stack)을 활용하여 시스템을 구축함

메모리 관리, 파일 필터링, GPU 활용 등 시스템 구축 과정에서 발생한 문제와 해결책 제시

Azure Blob Storage를 활용하여 대용량 문서 관리 문제를 해결하고, 사용자 경험을 개선함

대용량 문서 처리의 난관과 해결책

게시글에서는 1TB에 달하는 기술 문서를 처리하는 과정에서 발생한 메모리 부족 문제를 지적한다. 특히, LlamaIndex를 사용한 초기 시도에서 대용량 파일 처리(Large File Processing)로 인해 랩탑의 RAM이 부족해지는 상황이 발생했다. 해결책으로 파일 확장자 및 패턴 기반의 파일 필터링(File Filtering)을 적용하여 불필요한 파일 처리를 방지하고, PDF, DOCX 등 다양한 형식의 문서를 텍스트로 변환하여 처리했다. 이러한 과정을 통해 처리해야 할 파일 수를 54% 감소시켰다.

벡터 데이터베이스(Vector Database) 선택의 중요성

게시글은 RAG 시스템에서 벡터 데이터베이스(Vector Database)의 중요성을 강조하며, ChromaDB를 선택한 경험을 공유한다. 초기에는 LlamaIndex의 기본 JSON 형식을 사용했지만, 대용량 데이터 처리의 한계에 직면했다. ChromaDB로 전환하면서 배치 처리(Batch Processing) 방식을 도입하여 메모리 문제를 해결하고, 데이터 손실 없이 인덱싱을 진행할 수 있었다. 또한, ChromaDB는 SQLite 기반의 데이터 저장(Data Storage)을 지원하여 백업 및 복구의 용이성을 제공했다.

GPU 가속(GPU Acceleration)을 통한 성능 개선

저자는 RAG 시스템의 성능 향상을 위해 GPU 가속(GPU Acceleration)의 필요성을 강조한다. 랩탑의 내장 그래픽 카드로 500MB의 문서를 처리하는 데 4~5시간이 소요되었지만, NVIDIA RTX 4000 SFF Ada GPU를 탑재한 가상 머신을 임대하여 처리 시간을 단축했다. 이는 대규모 데이터 처리(Large-Scale Data Processing)에서 GPU의 중요성을 보여주는 사례이다. 또한, 컨테이너(Container)를 수정하여 GPU를 효율적으로 활용할 수 있도록 시스템을 최적화했다.

Azure Blob Storage를 활용한 문서 관리

게시글은 Azure Blob Storage를 활용하여 대용량 문서 관리 문제를 해결한 방법을 제시한다. 시스템은 ChromaDB에 저장된 벡터 인덱스를 사용하여 질문에 대한 답변을 생성하고, 답변에 필요한 원본 문서는 Azure Blob Storage에서 제공한다. 사용자는 답변과 함께 제공되는 SAS 토큰(SAS Token)을 통해 Azure Blob Storage에 저장된 문서를 직접 다운로드할 수 있다. 이러한 아키텍처는 데이터 격리 아키텍처(Data Isolation Architecture)를 구현하여 시스템의 디스크 공간 제약을 해결하고, 문서 접근성을 향상시켰다.

From zero to a RAG system: successes and failures