LLM & Generative AI/RAG in Practice 31

📚 LangChain 기반 RAG 구축 시리즈 총정리

문서 기반 GPT 응답 시스템을 처음부터 끝까지LangChain + FastAPI + OpenAI + ChromaDB로 구축하는 실전 시리즈입니다.🧱 기본 구성 (개념 + 벡터화)Ep.01 | 🔍 RAG를 구성하는 핵심 컴포넌트 4가지Ep.02 | 📄 Iceberg 메타데이터 로딩 및 전처리Ep.03 | 🧠 임베딩 및 ChromaDB 컬렉션 저장Ep.04 | 🗂️ 문서 컬렉션 구조 설계 전략🔍 검색기 & 응답 체인 구성Ep.05 | 🔎 벡터 검색기 구성 및 Top-k 튜닝Ep.06 | 🧪 Retrieval QA 체인 기본 구성Ep.07 | 🧵 대화형 QA 체인 + Memory 적용Ep.08 | 🔄 체인 방식 비교: Stuff vs Map-Reduce vs Refine🚀 API 서버 &..

[LangChain RAG 구축 시리즈 Ep.30] 📦 전체 시스템 구조 정리 및 운영 환경 배포 전략

지금까지 우리는 LangChain 기반 RAG 시스템을 구축하며,문서 로딩부터 임베딩, 검색, GPT 응답 생성, 대화 메모리, 요약 전략까지 모두 다뤘습니다.이제는 이 기능들을 하나로 통합하여:📦 운영 가능한 RAG API 서버 구성🐳 Docker로 컨테이너화🧪 개발 → 운영 환경 이관을 위한 설정 전략까지 정리합니다.실무 배포를 고려한 구조로, 팀에서 공유 가능한 RAG 플랫폼을 구축하는 것이 목표입니다.🎯 목표RAG 서버 기능 통합 및 구조 정리Dockerfile 작성 및 실행운영 환경 배포 전략 (예: 포트 구성, API Key 관리, 볼륨 마운트)🗂️ 전체 프로젝트 구조 (예시)rag-iceberg/├── chroma_db/ # 벡터 DB 저장 ..

[LangChain RAG 구축 시리즈 Ep.28] 🧵 멀티 테이블 + 대화형 흐름을 위한 Memory 설계 전략

지금까지 우리는 사용자 질문을 기반으로적절한 Iceberg 테이블을 선택하고, 해당 문서에서 정보를 검색해GPT가 정답을 생성하는 단발성 RAG 시스템을 구축해왔습니다.하지만 실제 업무에서 사용자가 묻는 방식은 이렇습니다:“상품 목록 알려줘”(이후) “그 중에서 가격이 가장 높은 건 뭐야?”(이후) “그 상품의 고객 리뷰는 있어?”이처럼 대화 흐름이 이어지는 구조에서는이전 질문과 응답이 다음 질문에 영향을 주어야 합니다.이번 글에서는 이러한 흐름을 구현하기 위해ConversationBufferMemory를 기반으로 대화 상태를 유지하는 구조를 설계합니다.🎯 목표LangChain의 Memory 기능을 이해하고 적용질문-응답의 히스토리를 유지한 대화형 RAG 구현다양한 테이블에서 이어지는 질의를 자연스럽게..

[LangChain RAG 구축 시리즈 Ep.27] 🔄 GPT를 활용한 질문 → 테이블 자동 매핑 고도화 전략

이전 글에서는 질문에서 단순한 키워드 기반으로 Iceberg 테이블명을 추출하고,그에 따라 적절한 컬렉션을 자동으로 선택하는 방식을 구현했습니다.하지만 이 방식은 키워드가 명확하게 포함된 경우에만 작동하고,"이 고객이 어떤 상품을 구매했는지 알려줘" 같은 질문은 정확한 테이블 매핑이 어렵습니다.그래서 이번 글에서는:✅ GPT 모델을 활용하여 질문 문맥을 분석하고✅ 어떤 테이블이 가장 적절한지 의사결정(Mapping) 하도록 설계하며✅ 기존 FastAPI API에 이 기능을 통합합니다.이제는 질문에 "products"라는 단어가 없어도,GPT가 "아 이건 products 테이블 질문이군"이라고 판단해서 연결해줍니다.🎯 목표GPT 모델을 활용해 질문 → 테이블명 추론 기능 구현기존 키워드 매칭 방식보다 유..

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

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

[LangChain RAG 구축 시리즈 Ep.25] 🛡️ 사용자 인증이 포함된 RAG API 구성 전략

RAG 시스템이 외부 사용자 또는 내부 팀원에게 API 형태로 제공되는 순간,접근 제어와 보안은 필수가 됩니다.특히 GPT 기반 응답 시스템은 비용이 발생하거나 민감 정보를 포함할 수 있으므로,인증되지 않은 사용자에게 무제한으로 제공되어선 안 됩니다.이 글에서는 FastAPI 기반 RAG 서버에🔐 API Key 기반 인증 기능을 추가하는 방법을 소개합니다.클라이언트는 요청 시 Authorization 헤더에 키를 포함서버는 키를 검증하고, 일치하지 않으면 요청을 거부키는 하드코딩 대신 환경변수나 설정 파일에서 불러오도록 설계🎯 목표FastAPI에 인증 미들웨어 추가유효한 API Key가 없으면 401 Unauthorized 반환향후 OAuth, 세션 기반 인증으로 확장 가능한 구조 설계🛠️ Step..

[LangChain RAG 구축 시리즈 Ep.24] 🧑‍💻 Streamlit 기반 RAG 웹 UI 만들기

이 글에서는 이전 글에서 만든 FastAPI 기반 RAG 서버를 보다 직관적으로 사용할 수 있는 UI를 만들기 위해,Python 기반의 프론트엔드 라이브러리인 Streamlit을 활용하여🧑‍💻 질문을 입력하고 실시간으로 응답을 확인할 수 있는 웹 애플리케이션을 구현합니다.사용자는 웹 브라우저에서 질문을 입력하고서버는 FastAPI에 요청을 보내 RAG 응답을 받아Streamlit 화면에 답변과 참조 문서를 함께 출력합니다이 글은 RAG 시스템을 사용자에게 시각적으로 보여주기 위한 첫 단추입니다.🎯 목표Streamlit을 사용하여 질문 입력 UI 구성FastAPI 서버와 연동하여 응답 가져오기GPT 응답 및 참조 문서를 깔끔하게 시각화⚙️ Step 1. Streamlit 앱 기본 구성# streaml..

[LangChain RAG 구축 시리즈 Ep.23] 🔧 FastAPI 기반 RAG 서버 구성하기 (엔드포인트 설계)

이제까지 우리는 LangChain을 사용해 문서를 임베딩하고,ChromaDB에 저장하며,Retriever → QA Chain → Conversational QA Chain으로 이어지는전체 RAG 시스템의 기본 구조를 구현해왔습니다.이번 글에서는 이 구조를 FastAPI 웹 서버 형태로 감싸서📡 외부에서 HTTP 요청을 통해 RAG 시스템을 호출할 수 있도록 구성합니다.사용자는 /rag/query로 질문을 보내면서버는 문서를 검색하고 GPT가 응답을 생성하여응답과 함께 참조 문서까지 반환합니다🎯 목표LangChain QA 체인을 FastAPI로 래핑/rag/query POST API 구현질문, 응답, 참조 문서를 포함한 JSON 응답 반환🗂️ 디렉토리 구조 예시rag-iceberg-project/├─..

[LangChain RAG 구축 시리즈 Ep.22] 📊 RAG 성능 평가 지표와 테스트 전략 설계하기

RAG 시스템은 단순한 문서 검색이나 GPT 응답 생성 기능만으로는 충분하지 않습니다.실제 사용자에게 응답을 제공하기 전에, 그 응답이 과연 정확한지, 신뢰할 수 있는지를정량적으로 평가할 수 있는 테스트 체계가 반드시 필요합니다.그래서 이 글에서는👉 LangChain 기반 Retrieval QA 체인을 활용한 자동화 테스트 스크립트를 구현합니다.📄 질문-정답 쌍을 담은 JSON 파일을 읽고🤖 Retrieval QA 체인을 통해 GPT 응답을 생성하고🎯 기대 정답과 비교하여 **정확도(Exact Match)**와 F1 점수를 계산합니다이러한 테스트 루틴은🔍 RAG 시스템이 업데이트되었을 때 품질이 유지되는지,🧪 모델 변경 또는 컬렉션 추가 시 성능 회귀 테스트에 활용 가능한 기반 도구가 됩니다...

[LangChain RAG 구축 시리즈 Ep.21] 🧬 멀티 문서 및 멀티 컬렉션 처리 전략 설계하기

이 글에서는 여러 Iceberg 테이블 정보를 다루는 상황을 가정하여멀티 문서, 멀티 컬렉션, 문서 메타데이터 기반 필터링 전략을 구성해봅니다.모든 코드는 초보자도 이해할 수 있도록 주석을 보강했습니다.🎯 목표여러 문서를 벡터로 임베딩하여 저장하는 방법 학습문서마다 메타데이터를 지정하여 검색 시 필터링 가능하도록 구성테이블별 컬렉션으로 분리하여 관리하는 구조 설계🧪 예시 1: 멀티 문서 단일 컬렉션 구성하기# src/embed_documents.pyfrom langchain.vectorstores import Chroma # ChromaDB를 위한 모듈from langchain.embeddings import OpenAIEmbeddings # Open..

728x90