프로젝트 설명: .NET 8 콘솔 애플리케이션을 활용한 LLM 기반 ETL
본 프로젝트는 .NET 8 콘솔 애플리케이션에서 LLM(거대 언어 모델)을 활용한 ETL(추출, 변환, 로드) 프로세스를 시연합니다.
기존 ETL의 한계 극복:
기존의 ETL 방식은 CSV 파일의 컬럼 이름이 변경될 경우 어려움을 겪습니다. 하지만 본 프로젝트에서는 LLM을 사용하여 런타임에 컬럼 매핑을 추론합니다.
프로세스 설명:
1. CSV 샘플링: CSV 파일의 처음 몇 줄을 샘플링합니다.
2. LLM 추론: 샘플링된 데이터를 사용하여 경량 llama3.2-3B 모델에 쿼리하여 어떤 CSV 컬럼이 고정된 Customer 스키마에 해당하는지 식별합니다.
3. 매핑 적용: 추론된 컬럼 매핑을 사용하여 전체 CSV 파일을 변환합니다.
4. 데이터 변환: 동적인 CSV 데이터를 `Id`, `Name`, `Email`, `SignupDate`, `IsActive` 필드를 가진 구조화된 Customer 레코드로 변환합니다.
5. 데이터 정규화 및 형식 변환: `Convert` 및 `Lookup` 메서드는 유연한 날짜 파싱을 포함한 데이터 정규화 및 형식 변환을 처리합니다.
6. 스트리밍 및 출력: 애플리케이션은 전체 CSV 파일을 스트리밍하고, LLM으로 생성된 매핑을 사용하여 각 행을 처리하며, 줄바꿈으로 구분된 JSON 형식으로 출력합니다.
주요 장점:
- 취약한 설정 파일 제거: 더 이상 깨지기 쉬운 설정 파일이 필요 없습니다.
- 실제 데이터 처리: 지저분하고 예측 불가능한 실제 데이터를 우아하게 처리합니다.
- 효율적인 코드: Semantic Kernel 및 Ollama를 활용하여 약 150줄의 C# 코드로 전체 솔루션을 구축합니다.
결론:
본 프로젝트는 LLM을 동적인 데이터 통합에 활용하는 강력함을 보여줍니다. 이는 기존 ETL 방식에 대한 견고하고 효율적인 대안을 제공합니다.
dev.to
Unlock the Power of LLM-Driven ETL: Transform Variable CSV to Clean JSON with C#, Semantic Kernel & Llama 3.2-3B
Create attached notes ...
