목차

    불편함을 코드로 지웁니다.

    개발 공부 노트, 개발 도구와 문제를 해결한 과정, AI 프롬프트와 Obsidian 활용법을 정리합니다.

      ⏳ Time Log/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 파라미터 튜닝