LLM & Generative AI/RAG in Practice

[LangChain RAG 구축 시리즈 Ep.04] ❄️ Iceberg란? 메타데이터 구조와 RAG 연결

ygtoken 2025. 4. 5. 19:30
728x90

이 글에서는 RAG 시스템의 실제 적용 대상인 Apache Iceberg의 개념과 구조를 살펴보고,
그 안의 핵심 파일인 metadata.json이 RAG의 문서 임베딩 대상으로 왜 적합한지를 설명드립니다.


❄️ Iceberg란 무엇인가요?

Apache Iceberg는 대규모 테이블을 데이터 레이크 상에서 관리하기 위한 테이블 포맷입니다.
Parquet, ORC와 같은 파일을 하나의 테이블처럼 관리할 수 있도록 해주는 메타데이터 기반 시스템이에요.


🧩 Iceberg 테이블의 구조

Iceberg는 물리적인 데이터 파일 외에도 다음과 같은 메타데이터 파일을 사용합니다.

구성 요소 설명
metadata.json 테이블 스키마, 스냅샷 정보, 파티션 구조 등을 포함한 중심 메타정보
manifest.list 어떤 데이터 파일이 존재하는지에 대한 목록
manifest 파일들 개별 파일들의 경로, 파티션 정보 등 세부 정보

💡 RAG 시스템에서 가장 유용한 것은 metadata.json입니다.


📄 metadata.json 안에는 어떤 정보가 있나요?

{
  "format-version": 2,
  "table-uuid": "1234-5678",
  "schema": {
    "fields": [
      { "id": 1, "name": "id", "type": "long" },
      { "id": 2, "name": "product_name", "type": "string" }
    ]
  },
  "partition-spec": [
    { "source-id": 2, "field-id": 1000, "name": "product_name", "transform": "identity" }
  ]
}

✅ 위 내용을 기반으로, 우리는 아래처럼 텍스트 문서로 가공할 수 있습니다.

📂 Table: product_info  
🧬 Columns: id (long), product_name (string)  
🧩 Partitioned by: product_name

이런 형태로 변환된 문서를 벡터화하여 RAG에 사용할 수 있습니다.


🔗 Iceberg 메타데이터와 RAG의 연결

Iceberg 역할 RAG 활용 방식
테이블 스키마 컬럼 기반 검색, 테이블 추천
파티션 정보 필터 조건 안내, 쿼리 자동 생성 기초
snapshot 정보 변경 이력 안내, 데이터 최신성 파악

➡️ 결국 Iceberg의 구조는 “테이블 설명서” 역할을 하며, RAG에 매우 적합한 문서입니다.


🎯 왜 metadata.json을 문서로 임베딩하는가?

이유 설명
✅ 구조가 명확하다 테이블 이름, 컬럼, 파티션이 명시적으로 기록됨
✅ 문서화하기 쉽다 JSON → 자연어로 쉽게 가공 가능
✅ 검색 가치가 높다 사용자의 질문과 매우 높은 관련성

🛠️ 실전 준비: 다음 단계에서 할 일

  1. Iceberg metadata.json을 불러오기
  2. 컬럼/테이블 정보를 자연어 텍스트로 가공하기
  3. 이 텍스트를 벡터로 변환하여 Chroma에 저장하기

이렇게 하면, 사용자의 질문(“고객 정보를 담은 테이블은?”)에
RAG가 metadata.json 기반으로 정확히 응답할 수 있습니다.


📎 요약 및 핵심 정리

  • Iceberg는 데이터 레이크의 테이블 메타데이터 관리 시스템입니다.
  • 중심 파일인 metadata.json은 테이블 구조, 컬럼, 파티션 정보를 포함하고 있습니다.
  • 이 파일을 문서로 가공하여 벡터화하면 RAG 시스템에 활용할 수 있습니다.
728x90