LangChain, RAG

Youngho LEE·2025년 9월 7일

핵심 구성 요소 & 역할

블록LangChain 대표 컴포넌트핵심 역할설계 포인트
Document LoaderDirectoryLoader, WebBaseLoader, PyPDFLoader, 등원천 데이터 수집가능한 한 원문 메타데이터(제목, URL, 섹션) 보존
Text SplitterRecursiveCharacterTextSplitter, MarkdownHeaderTextSplitter문서 → 청크화chunk_size/overlap을 질의 길이/도메인에 맞게 튜닝 (코드/표/제목 경계 고려)
EmbeddingsHuggingFaceEmbeddings(예: BAAI/bge-m3) 또는 OpenAIEmbeddings의미 벡터화한국어/도메인 맞춤 임베딩 선택, 정규화 권장
Vector StoreChroma, FAISS, Milvus, Pinecone, Weaviate, Qdrant벡터 색인/근접검색규모·비용·지연 시간 기준 선택, 필드 인덱스/필터링 활용
Retrieveras_retriever(search_type="mmr"/"similarity")쿼리 → 관련 청크 Top-kk, fetch_k, MMR(다양성), 메타필터; 필요 시 Hybrid(BM25+벡터)
Query Transform(선택)MultiQueryRetriever, HyDE, Step-back질의 재작성다의성/부족한 키워드 보완, Recall↑
Reranker/Compression(선택)ContextualCompressionRetriever + LLMChainExtractor 또는 Cross-Encoder 재랭크장황한 컨텍스트를 가볍게·정확하게노이즈↓, 프롬프트 길이 관리, Latency vs Quality 트레이드오프
Prompt TemplateChatPromptTemplate지침·컨텍스트·질문을 구조화출처 인용”, “근거 중심 답변” 지시어 명시
LLMChatOpenAI, ChatAnthropic, ChatOllama근거기반 답변 생성비용/지연/성능 균형, JSON 모드/구조화 출력 가능
Chains (LCEL)create_stuff_documents_chain + create_retrieval_chain검색 → 생성 파이프라인LCEL로 투명한 파이프라인(디버그/재조합 쉬움)
Memory(대화형)ConversationBufferMemory사용자 맥락 유지질의 응답 근거는 항상 문서에서—기억과 분리
Observability/CacheLangSmith(트레이싱), InMemoryCache/Redis성능/오류 추적, 비용↓프롬프트/임베딩 캐시로 응답속도 향상
EvaluationRAGAS, LangChain Eval품질 측정/회귀테스트Hit@k, nDCG, Faithfulness 등 자동 지표
profile
개발자

0개의 댓글