Chroma 7

[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.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.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.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.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.09] 🗂️ ChromaDB로 벡터 저장소 구성하기

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

728x90