목차

    ⏳ Time Log/1. One Day (Daily · TIL)

    [TIL] Day 99 — LangChain RAG + OpenAI API 활용 (3/13)

    this.Serena 2026. 6. 8. 22:00

    [TIL] Day 99 — LangChain RAG + OpenAI API 활용 (3/13)

    날짜: 2026-03-13
    기술 스택: Python LangChain LangGraph RAG FAISS OpenAI API Pandas


    한 줄 요약: OpenAI API로 챗봇 개발 + LangChain 기반 RAG 구현(FAISS/PDF) + 프롬프트 엔지니어링 기법 실습


    OpenAI API 주요 LLM 모델 비교

    플랫폼 특징 비용
    OpenAI (GPT-4o 등) 고성능, 범용 유료 (API Key 필요)
    Groq 초고속 추론, LLaMA 기반 무료 티어 있음
    Ollama 로컬 실행, 완전 오프라인 무료
    HuggingFace 오픈소스 모델 다양 무료 (일부 유료)

    RAG (Retrieval-Augmented Generation) 구현

    LLM이 답변 전 외부 지식베이스에서 관련 정보를 검색해 정확성을 높이는 패턴

    FAISS를 활용한 기본 RAG

    from langchain_community.vectorstores import FAISS
    from langchain_openai import OpenAIEmbeddings
    from langchain.text_splitter import RecursiveCharacterTextSplitter
    
    # 1. 문서 로드 & 청크 분할
    splitter = RecursiveCharacterTextSplitter(chunk_size=500, chunk_overlap=50)
    docs = splitter.split_documents(documents)
    
    # 2. 임베딩 → 벡터 DB 저장
    vectorstore = FAISS.from_documents(docs, OpenAIEmbeddings())
    
    # 3. 유사도 검색
    retriever = vectorstore.as_retriever()
    results = retriever.invoke("호텔 체크인 시간은?")

    PDF 파일 기반 RAG

    from langchain_community.document_loaders import PyPDFLoader
    
    loader = PyPDFLoader("document.pdf")
    pages = loader.load_and_split()

    Pandas 핵심 문법

    import pandas as pd
    
    df = pd.read_csv("sample.csv")    # CSV 파일을 DataFrame으로 로드
    df.columns.tolist()               # 열 이름 리스트 반환
    df.head(5)                        # 상위 5행 미리보기 (기본값)

    더 알아볼 것

    • FAISS vs ChromaDB — 벡터 DB 선택 기준 (속도 vs 영속성)
    • chunk_size / chunk_overlap 파라미터가 검색 품질에 미치는 영향
    • LangGraph로 다단계 RAG 에이전트 구현 방법
    • 프롬프트 엔지니어링 기법 — Few-shot, Chain-of-Thought, ReAct
    • OpenAI API temperature, max_tokens 파라미터 튜닝