LLM & Generative AI/RAG in Practice 31

[LangChain RAG 구축 시리즈 Ep.10] 🧪 벡터 검색 결과 해석하기 (top-k, score 등)

이 글에서는 RAG의 핵심인 벡터 검색의 내부 동작 방식을 집중적으로 살펴봅니다.특히 벡터 간 유사도 계산, top-k 정렬 기준, 검색 점수(score)의 의미를 시각적으로 이해할 수 있도록 설명드립니다.❓ 질문: "top-k 검색은 어떻게 작동하나요?"사용자의 질문도 벡터로 변환되며,저장된 문서 벡터들과 비교해가장 유사한 문서 상위 k개(top-k) 를 선택합니다.그렇다면 유사도는 어떤 기준으로 계산될까요?🧠 Cosine Similarity: 벡터 간 유사도 측정의 핵심 용어 설명 Cosine Similarity두 벡터가 이루는 각도의 코사인 값을 계산값 범위-1 ~ 1 (1에 가까울수록 유사함)사용 이유벡터 크기와 무관하게 방향성만 비교 가능예시: 문장 코사인 유사도 (예시) 상품 테이블0.9..

[LangChain RAG 구축 시리즈 Ep.09] 🗂️ ChromaDB로 벡터 저장소 구성하기

이 글에서는 앞에서 생성한 임베딩 벡터를 ChromaDB에 저장하고,이 벡터들을 기반으로 문서 검색이 가능하도록Retriever 객체를 구성하는 전체 과정을 실습합니다.🎯 목표LangChain에서 ChromaDB 벡터 저장소 구성하기JSON → 자연어 문서 → 벡터 → Chroma 저장저장된 벡터에 대해 질문(query)으로 검색 테스트🔧 ChromaDB란?Chroma는 로컬에서 작동하는 빠르고 간단한 벡터 DB입니다. 장점 설명 ✅ 설치 필요 없음LangChain과 함께 자동 동작✅ 검색 속도 빠름작은 실습/PoC에 적합✅ 오픈소스커스터마이징 가능📝 Step 1. 문서 벡터화 후 ChromaDB에 저장하기from langchain.vectorstores import Chroma ..

[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.07] 💬 사용자 질문을 벡터와 어떻게 매칭할까?

이 글에서는 RAG 시스템에서 사용자 질문을 어떻게 벡터로 변환하고,그 벡터가 문서와 어떤 방식으로 매칭되는지를 실제 원리와 예시를 통해 쉽게 설명합니다.🎯 오늘의 주제 요약“사용자 질문도 벡터로 바꾼 다음,이미 저장된 문서 벡터들과 비교해서가장 유사한 것(top-k)을 고른다.”이 과정을 정확히 이해하면 RAG 검색기의 작동 방식이 명확해집니다.🔢 Step 1: 사용자 질문 → 벡터로 변환사용자가 "상품 정보를 담고 있는 테이블이 뭐야?"라고 질문하면,이 문장은 아래처럼 벡터로 변환됩니다. (예시)[0.124, -0.554, 0.223, ..., 0.039] # 1536차원의 벡터➡️ 이 벡터는 embedding.embed_query()를 통해 생성됩니다.🧠 Step 2: 문서 벡터들과 거리 계..

[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.02] 📦 Embedding의 원리와 벡터의 의미

이 글에서는 RAG의 핵심 기술 중 하나인 **Embedding(임베딩)**의 개념을 설명하고,왜 우리가 문서를 벡터로 바꾸는지, 그것이 어떤 방식으로 검색에 활용되는지를 쉽게 풀어드립니다.🤔 임베딩이란 무엇인가요?“문장이나 단어를 숫자의 집합으로 바꾸는 것”언어 모델은 텍스트 그 자체를 이해하지 못합니다.따라서 우리가 사용하는 문장이나 단어를 숫자(벡터)로 바꿔줘야 컴퓨터가 비교하거나 검색할 수 있습니다.🎯 Embedding의 핵심 목적 목적 설명 🧠 의미를 담은 벡터 생성“상품 이름이 뭐야?” 와 “제품 명이 뭐지?”를 비슷한 벡터로 표현🔍 검색을 가능하게 함질문 벡터와 문서 벡터 간의 거리를 계산해 유사도 검색📦 LLM에 정보 전달“이 질문과 관련 있는 문서”를 찾아서 LLM에게 넘겨줌?..

[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