반응형

👋 들어가기 전
인프런 제이쓴님의 강의 코드를 분석하며, 개념을 정리해보자.
🏁 학습할 내용
- 필요한 의존성
- 새로운 개념
- 꿀팁
📦의존성
1. pypdf
- 랭체인에서 기본적으로 제공하는 PDF 로더가 포함된 패키지
- pdf안에 이미지 데이터를 읽지 못하는 단점 존재
2. zerox
- llm을 활용하여 ocr을 돌려 문서를 인식하는 패키지
- 다양한 llm 지원
- markdown 형태로 output
💡 ocr이란??
Optical Character Recognitio의 약자
이미지(사진, 스캔 문서) 속에 들어있는 글자를 컴퓨터가 읽을 수 있는 텍스트 데이터로 추출하는 기술
3. UnstructedMarkdownLoader
- 랭체인에서 제공하는 MarkdownLoader
- PDF와 다르게 별도로 split을 해줘야함
- 정확한 컨텍스트가 전달되지 않을 수 있음
- 이 때, txt로 변환하는게 안전함
- markdown, html2text, beautifulsoup4 이ㅛ
- markdown -> html -> BeautifulSoup을 이용한 텍스트 추출
4. RecursiveCharacterTextSpliter
- 문서 split에 사용됨
5.TextLoader
- txt 파일 읽기 위한 Loader
⭐ 새로운 개념
1️⃣ Retrieve
- LLM이 학습하지 않은 외부 데이터를 찾아오는 과정
- RAG의 핵심 패턴
2️⃣ RAG(Retrieval-Augmented Generation, 검색 증강 생성)
- LLM이 아는체하며, 환각을 발생시키지 않도록, 신뢰할 수 있는 외부 문서를 찾아보고 답변하는 기술
- 과정
- Retrieval: 찾아오는 과정
- Augmentation: 찾아온 정보를 사용자의 질문을 하나로 합침
- Generatation: 결합된 정보를 바탕으로 LLM이 최종 답변 생성
3️⃣Vector Store(Vector Database)
- 유사도 검색에 많이 쓰임
- 사과 -> "빨간 과일", "맛있는 과일", "애플"등 맥락이 비슷한 결과를 함께 찾아줌
- 문서, 이미지, 음성, 영상 같은데이터를 숫자 배열인 저장하는 특수 저장소
- 변환 그러면 누가하냐?? 바로 AI모델이 담당함, 이걸 임베딩이라 함 (변환 == 임베딩)
- LangGraph에서는 Chroma를 대표적으로 씀
🍯 꿀팁
1️⃣ sequence 이용

그래프 형태는 같은데 더 간단히 만들 수 있음
- graph_builder 만들 때 add_sequence이용
- 아래 두 코드가 같은 그래프 형태임
graph_builder.add_node('retrieve', retrieve)
graph_builder.add_node('generate', generate)
from langgraph.graph import START, END
graph_builder.add_edge(START, 'retrieve')
graph_builder.add_edge('retrieve', 'generate')
graph_builder.add_edge('generate', END)
graph = graph_builder.compile()
# ======================== 시퀀스 이용 ========================
sequence_graph_builder = StateGraph(AgentState).add_sequence([retrieve, generate])
sequence_graph_builder.add_edge(START, 'retrieve')
sequence_graph_builder.add_edge('generate', END)
sequence_graph = sequence_graph_builder.compile()
2️⃣ chain
🧱 구성 요소
| 구성 요소 | 역할 | 입력 (Input) | 출력 (Output) |
| Prompt | 질문 템플릿 생성 | 딕셔너리 ({var: val}) | PromptValue (완성된 문장) |
| LLM | 언어 모델 (뇌) | 문장 또는 메시지 목록 | BaseMessage (AI의 답변) |
| Output Parser | 답변 정제 (포맷팅) | 메시지 또는 문자열 | 구조화된 데이터 (JSON, List 등) |
| Retriever | 관련 문서 검색 | 검색어 (String) | 문서 목록 (List of Documents) |
✏️ 문법
리닉스 파이프라인과 똑같다.
from langchain import hub
from langchain_openai import ChatOpenAI
prompt = hub.pull("rlm/rag-prompt") # https://smith.langchain.com/hub 에서 찾을 수 있다.
llm = ChatOpenAI(model='gpt-4o')
rag_chain = prompt | llm # prompt 아웃풋 -> llm 인풋
출처
inflearn-langgraph-agent/2.2 간단한 Retrieval 에이전트 (feat. PDF 전처리 꿀팁).ipynb at main · jasonkang14/inflearn
인프런의 "LangGraph를 활용한 AI Agent 개발" 강의 소스코드입니다. Contribute to jasonkang14/inflearn-langgraph-agent development by creating an account on GitHub.
github.com
반응형
'AI > LangGraph' 카테고리의 다른 글
| SubGraph와 Router (0) | 2026.02.22 |
|---|---|
| Corrective RAG (0) | 2026.02.22 |
| Self RAG (0) | 2026.02.22 |
| Conditional Edge (0) | 2026.02.22 |
| 랭그래프 시작 (0) | 2026.02.21 |