목차
[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파라미터 튜닝
'⏳ Time Log > 1. One Day (Daily · TIL)' 카테고리의 다른 글
| [TIL] Day 107 — 모의면접 (3/20) (0) | 2026.06.08 |
|---|---|
| [TIL] Day 98 — 머신러닝 핵심 개념 + 데이터 흐름 정리 (3/12) (0) | 2026.06.08 |
| [TIL] Day 97 — Python 가상환경(venv) + LangChain 개발 환경 세팅 + 호텔 챗봇 실행 (3/11) (0) | 2026.06.08 |
| [TIL] Day 80 — 특강: AI 시대 개발자 취업 전략 (2/10) (0) | 2026.06.08 |