iceberg 8

[LangChain RAG 구축 시리즈 Ep.26] 🧩 멀티 테이블 구조에 맞춘 자동 컬렉션 선택 및 태깅 전략

RAG 시스템이 다양한 Iceberg 테이블을 다루게 되면,단일 벡터 컬렉션에 모든 문서를 저장하는 방식은 검색 정확도와 성능의 한계에 부딪히게 됩니다.예를 들어, products, orders, customers와 같은 테이블이 각각 존재한다면,각 테이블의 문서를 분리 저장하고 질문에 따라 적절한 컬렉션을 자동으로 선택해야 합니다.그래서 이 글에서는:✅ 사용자 질문에서 테이블명을 자동으로 추출하고✅ 해당 테이블에 맞는 Chroma 컬렉션을 자동으로 선택하여✅ 정확하고 빠른 검색이 가능한 RAG 시스템을 구현합니다.이 전략은 문서 수가 많거나 테이블이 10개 이상인 데이터 플랫폼에서 매우 유용합니다.🎯 목표사용자 질문에서 Iceberg 테이블명을 추출하는 로직 구현테이블별 벡터 컬렉션을 자동으로 선택하..

[LangChain RAG 구축 시리즈 Ep.15] 📄 Iceberg metadata.json 로딩 및 텍스트화

이 글에서는 Iceberg의 metadata.json 파일을 읽고자연어 기반 설명 문서로 변환한 후, .txt 파일로 저장하는 과정을 구성합니다.이 텍스트 문서는 향후 벡터화 및 검색을 위한 기본 재료가 됩니다.🎯 목표Iceberg 메타데이터(JSON) 파싱자연어 기반 설명 문서로 변환.txt 파일로 저장🗂️ 디렉토리 구조 예시rag-iceberg-project/├── data/products_metadata.json ← Iceberg 메타데이터 파일├── docs/products.txt ← 변환된 텍스트 문서 저장 위치└── src/load_json.py ← 이 글에서 작성할 Python 파일🧾 Step 1. 샘플 meta..

[LangChain RAG 구축 시리즈 Ep.08] 🧠 OpenAI Embedding 실습: JSON을 임베딩해보기

이 글에서는 실제 Iceberg의 metadata.json 파일에서 필요한 정보를 추출하여,자연어 기반 문서로 가공한 뒤, OpenAI의 임베딩 모델을 활용해 벡터로 변환하는 과정을 실습합니다.🎯 목표metadata.json에서 테이블 정보를 추출사람이 이해할 수 있는 문장 형태로 재구성LangChain의 OpenAIEmbeddings로 벡터화향후 검색(Retriever)에서 활용 가능한 문서 벡터 생성🔍 Step 1. 예시 JSON 데이터 준비 (💬 상세 주석 포함){ "table-name": "products", // 테이블 이름 "schema": { "fields": [ // 테이블 컬럼 정의 목록 { "id": 1, "name": "product_id", "type": ..

[LangChain RAG 구축 시리즈 Ep.06] 📝 텍스트 vs 구조형 데이터: 어떻게 임베딩할까?

이 글에서는 자연어 텍스트와 구조형 JSON 데이터를 임베딩할 때어떻게 접근 방식이 달라야 하는지,그리고 각각 어떤 방식으로 가공해야 검색 성능을 극대화할 수 있는지를 실습과 함께 알아보겠습니다.🤖 임베딩은 텍스트 기반이다우리가 사용하는 임베딩 모델 대부분은텍스트의 의미를 숫자로 표현하는 것에 최적화돼 있습니다.즉, 단순한 숫자 나열이나 키-값 구조보다는사람이 이해할 수 있는 문장 구조를 더 잘 이해합니다.🔍 구조형 데이터 vs 자연어 텍스트 항목 구조형(JSON 등) 자연어 텍스트 예시{"name": "product", "type": "string"}"product라는 이름의 문자열 컬럼"임베딩 적합도❌ 낮음✅ 높음추천 처리 방식자연어로 가공 필요그대로 사용 가능🧪 실습: 같은 정보를 임베딩했..

[LangChain RAG 구축 시리즈 Ep.05] 🧩 왜 metadata.json을 문서처럼 다뤄야 할까?

이 글에서는 RAG 시스템에 Iceberg의 metadata.json을 입력으로 활용할 때,왜 이 구조화된 JSON 파일을 자연어 기반 문서처럼 가공해야 하는지, 그리고어떻게 가공해야 검색 성능이 좋아지는지를 실제 예시와 함께 알아보겠습니다.❓ JSON 그대로 임베딩하면 안 되나요?많은 분들이 처음엔 이렇게 생각할 수 있습니다:“metadata.json은 구조가 잘 되어 있는데, 그냥 통째로 벡터화하면 되는 거 아냐?”하지만 실제로는 그대로 벡터화하면 RAG 성능이 매우 떨어집니다.🧱 구조적 JSON → 의미 중심 텍스트로 바꿔야 하는 이유 문제 설명 ⚠️ 벡터가 정보의 핵심을 놓침“field-id”, “source-id” 같은 키워드가 의미를 흐림⚠️ LLM이 이해하기 어려움LLM은 자연어 문맥에 ..

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

이 글에서는 RAG 시스템의 실제 적용 대상인 Apache Iceberg의 개념과 구조를 살펴보고,그 안의 핵심 파일인 metadata.json이 RAG의 문서 임베딩 대상으로 왜 적합한지를 설명드립니다.❄️ Iceberg란 무엇인가요?Apache Iceberg는 대규모 테이블을 데이터 레이크 상에서 관리하기 위한 테이블 포맷입니다.Parquet, ORC와 같은 파일을 하나의 테이블처럼 관리할 수 있도록 해주는 메타데이터 기반 시스템이에요.🧩 Iceberg 테이블의 구조Iceberg는 물리적인 데이터 파일 외에도 다음과 같은 메타데이터 파일을 사용합니다. 구성 요소 설명 metadata.json테이블 스키마, 스냅샷 정보, 파티션 구조 등을 포함한 중심 메타정보manifest.list어떤 데이터 파일..

[LangChain RAG 구축 시리즈 Ep.03] 🧠 LLM은 어디까지 알고 있을까? 외부 지식의 필요성

이 글에서는 RAG 시스템이 왜 필요한지를 LLM의 한계를 중심으로 살펴보겠습니다.GPT와 같은 모델은 매우 똑똑해 보이지만, 알고 있는 정보에는 한계가 있습니다.그리고 바로 이 한계를 극복하기 위한 해법이 RAG입니다.❓ GPT는 정말 모든 걸 알고 있을까?많은 분들이 GPT-4는 모든 걸 알고 있다고 생각합니다.하지만 실제로는 훈련 당시 데이터까지만 알고 있으며,그 이후에 생긴 지식은 모릅니다.예를 들어…🧪 질문: “2024년 12월에 발표된 Iceberg 최신 버전의 주요 기능은?” 🤖 GPT 응답: "죄송합니다. 제 지식은 2023년까지입니다."즉, GPT는 현재 정보에 대해 답할 수 없습니다.💥 LLM이 스스로 모르는 것 예시 설명 🔄 최신 테이블 구조 변경metadata.json 파..

[LangChain RAG 구축 시리즈 Ep.01] 🔍 RAG를 구성하는 핵심 컴포넌트 4가지

이 글에서는 RAG 시스템을 구성하는 핵심 요소(Component) 4가지를 소개하고,이들이 어떻게 상호작용하며 전체 검색-생성 흐름을 만드는지 알기 쉽게 정리해드립니다.✨ RAG 시스템 전체 흐름 요약먼저 전체 그림을 한눈에 보고 시작하겠습니다.[사용자 질문] ↓[문서 검색기 Retriever] ↓ ⟵ 벡터화된 문서 저장소(VectorDB)[선택된 문서 + 질문] ↓[LLM (GPT-3.5/4 등)] ↓[최종 답변 생성]핵심 키워드: 검색기(Retriever) + 언어 모델(LLM) + 문서 저장소(VectorDB)📦 RAG 구성 요소 4가지✅ 1. 문서 임베딩 & 벡터스토어 (Vector Store)역할: 텍스트 문서(예: metadata.json) → 숫..

728x90