전체 글 549

[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..

[LangChain RAG 구축 시리즈 Ep.20] 🧪 RetrievalQA Chain 성능 최적화 전략 (top-k, score threshold)

이 글에서는 RetrievalQA 또는 ConversationalRetrievalChain의 성능을 높이기 위한검색 튜닝 기법을 정리합니다.특히 top-k 조정, score_threshold 필터링을 중심으로 다룹니다.🎯 목표top-k로 검색 결과 개수 조절score_threshold로 유사도 기준 필터링search_type을 이용해 다양한 검색 방식 실험📦 검색 튜닝이 필요한 이유 문제 상황 원인 불필요한 문서가 답변에 포함됨top-k가 너무 큼관련 없는 답변이 생성됨유사도 기준 없음응답 속도 저하과도한 문서 입력으로 LLM이 느려짐➡️ 이를 해결하기 위해 검색기의 파라미터 조정이 필요합니다.🔧 Step 1. Retriever 구성 시 top-k 설정retriever = vectordb.as_r..

[LangChain RAG 구축 시리즈 Ep.19] 🧠 대화형 QA 시스템: ConversationalRetrievalChain 구성하기

이 글에서는 사용자의 이전 질문과 답변을 기억하여자연스러운 대화 흐름을 이어갈 수 있는ConversationalRetrievalChain을 구성해봅니다.🎯 목표ConversationalRetrievalChain 구성이전 대화 내용을 기억하여 문맥 기반 응답 생성메모리(ConversationBufferMemory)를 통해 히스토리 저장🧠 대화형 RAG의 개념기존 RetrievalQA는 "단일 질문-답변" 방식이라면,ConversationalRetrievalChain은 질문 맥락을 기억하며 대화를 이어갑니다.예시:1️⃣ Q: 상품 테이블 알려줘2️⃣ Q: 컬럼은 뭐야? ← 이전 질문 맥락이 없다면 “무슨 테이블?”로 이해 안 됨🛠️ Step 1. 체인 구성 함수 만들기# src/conversationa..

[LangChain RAG 구축 시리즈 Ep.18] 💬 RetrievalQA 체인을 통해 문서 기반 답변 생성하기

이 글에서는 앞에서 구축한 **Retriever(문서 검색기)**와OpenAI GPT 모델을 연결하여,**문서 기반의 자동 응답 시스템(RetrievalQA Chain)**을 구성합니다.🎯 목표Retriever + LLM(OpenAI) 결합문서 기반 질문 응답 흐름 구성참조 문서와 함께 GPT 응답 출력🛠️ Step 1. RetrievalQA 체인 구성 함수 만들기# src/qa_chain.pyfrom langchain.chains import RetrievalQA # Retrieval QA 체인 클래스from langchain.chat_models import ChatOpenAI # OpenAI GPT 모델from langchain.vectorstores im..

[LangChain RAG 구축 시리즈 Ep.17] 🔍 ChromaDB에서 문서 검색 및 Retriever 구성하기

이 글에서는 이전에 OpenAI 임베딩으로 저장한 벡터 데이터를 기반으로사용자의 질문과 유사한 문서를 검색할 수 있는Retriever(검색기) 를 구성해보겠습니다.🎯 목표ChromaDB에 저장된 벡터 데이터를 불러오기사용자의 자연어 질문을 임베딩하여 유사 문서 검색Retriever 객체를 통해 top-k 검색 구현🗂️ 디렉토리 구조 전제rag-iceberg-project/├── chroma_db/ ← 벡터 저장소└── src/search_documents.py ← 검색기 구성 코드🛠️ Step 1. ChromaDB에서 벡터 불러오기 + 검색기 구성# src/search_documents.pyfrom langchain.vectorstores..

[LangChain RAG 구축 시리즈 Ep.16] 🧠 변환된 텍스트 문서를 OpenAI Embedding으로 벡터화하기

이 글에서는 이전에 생성한 .txt 형식의 자연어 문서를 OpenAI의 임베딩 모델을 활용해벡터로 변환하고 ChromaDB에 저장하는 과정을 실습합니다.이 벡터는 향후 검색(Retrieval)에서 핵심적인 역할을 하게 됩니다.🎯 목표.txt 문서를 읽어 자연어 텍스트로 로딩OpenAI 임베딩 모델을 통해 벡터 생성ChromaDB에 벡터를 저장하여 추후 검색 가능하도록 구성🗂️ 파일 구성 예시rag-iceberg-project/├── docs/products.txt ← 이전 글에서 생성된 자연어 문서├── chroma_db/ ← 벡터 DB 저장 디렉토리└── src/embed_documents.py ← 이번 글..

[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.14] 🔧 프로젝트 구조 설계 및 의존성 설치

이 글에서는 지금까지 살펴본 RAG 구성 요소들을 실제 프로젝트로 통합하기 위한폴더 구조 설계와 Python 환경 세팅, 필수 패키지 설치 방법까지RAG 프로젝트의 기본구조를 구성해봅니다.🎯 목표실제 프로젝트 형태의 디렉토리 구조 만들기Python 가상환경 설정필수 라이브러리 설치 (langchain, openai, chromadb 등)🗂️ Step 1. 프로젝트 디렉토리 구조 설계rag-iceberg-project/│├── data/ # metadata.json 보관 디렉토리│ └── products_metadata.json│├── docs/ # 전처리된 자연어 문서 저장│ └── products.txt│├──..

[LangChain RAG 구축 시리즈 Ep.13] 🧪 Stuff / MapReduce / Refine 전략 비교

이 글에서는 RAG 시스템에서 여러 개의 문서가 검색되었을 때,GPT가 어떤 방식으로 응답을 생성할지를 결정하는문서 조합 전략(Combining Strategy) 3가지 — Stuff, MapReduce, Refine 를 비교해봅니다.🔍 문서 조합 전략이란?검색된 여러 문서를 LLM에게 어떻게 전달할 것인지를 결정하는 전략입니다. 전략 방식 stuff모든 문서를 한 번에 LLM에 전달map_reduce각 문서별로 응답 후, 전체 응답을 정리refine첫 문서로 응답한 뒤, 나머지 문서로 점진적 개선🧠 각 전략의 특징 전략 장점 단점 Stuff빠름, 간단문서가 많으면 context overflowMapReduce안정적 처리시간 오래 걸림Refine정교함 ↑불필요하게 verbose 해질 수 있음📦..

728x90