📍 간단 후기
🏷️ 수업
이제까지 RAG로 문서를 다뤘다면, 이젠 본격적으로 RAG를 활용하는 시간을 가졌다. RAG에서 가장 중요한 개념인 VectorDB에 대한 종류 및 활용 방법을 배웠다. 이후 LCEL과 RAG 시스템 구축을 진행하며 RAG와 한층 더 친해지는 시간이 됐다. 또 Streamlit을 통한 화면 구현으로 챗봇 활용까지 해보는 시간을 가졌다. 마지막으로 Agent에 대한 개념과 Langgraph(찍먹)에 대한 개념도 학습했다.
🏷️ 코딩 테스트 스터디
저번주에 공부한 Deque 문제 복습용으로 한 문제 풀어보고, 완전탐색(Brute Force)에 대한 문제 풀이를 진행했다. 전반적으로 다음에 진행할 알고리즘인 DFS와 BFS를 써야 더 간단하게 풀리는 문제들이었다. 따라서 살짝이지만 예습한 느낌이 들었다. 완전탐색에 대한 문제는 itertools 라이브러리에 있는 순열이나 조합을 통해 해결했다. 구조를 명확히 이해하면서 푼 느낌이라 개념 정리에 도움이 됐다.
📍 좋았던 점
- Retriever

RAG는 VectorDB에서 저장한 문서에 따른 답변을 생성한다. 그러나 사용자가 저장한 문서에 들어있지 않은 정보를 물어본다면??
모른다 하지 않고 엉뚱한 답을 낼 것이다 -> Hallucination 발생!!
따라서 아무리 정밀하고 완벽하게 유사도 계산을 할지라도 정보가 없다면 컴퓨터는 반응할 수 없다. 이에 나온 개념이 Retriever이다.
Retriever를 통해 사용자의 질문에 가장 관련성 높은 정보를 찾을 수 있다. 따라서 검색 결과의 개수(단위 : 청크)를 조정하여 더 세밀하게 검색할 수 있도록 만든다. 또 ***search_kwargs 매개변수를 이용해 검색 문서 개수를 조절할 수 있다.
- LCEL

LangChain에서는 여러 모듈을 하나로 묶는 Chain이 핵심이다. LCEL은 이 묶는 과정을 간단하게 만들어주는 역할을 한다.
프롬프트 템플릿을 설정한다. -> LLM 모델을 호출해 변수에 저장한다. -> 출력 파서 모듈을 설정한다. -> Chain을 통해 연결한다.
기존 Chain에 비해 각 모듈의 변경 사항이 생길 때마다 바로바로 수정이 가능하므로 모듈 간의 의존성이 줄어든다.
📍 부족한 점
- Agent

만약 아이언맨을 봤다면, Agent == 자비스라고 생각하면 된다. 사람의 개입을 최소화할 수 있도록 복잡하고 세세한 과정을 모두 LLM에게 시키는 구조라고 보면 된다. 쉽게 말해서 LLM에게 뇌를 심어주는 것이다. 사람이 하나하나 동작을 다 알려줘서 시키는 것이 아닌,
"선풍기 켜주세요." 하면 알아서 켜주는 과정인 것이다. 따라서 큰 특징은 다음과 같다.
- 자율성(스스로 결정)
- 목표 지향성
- 도구 활용(API, 함수 등)
여기서 나온 개념이 ReAct이다. ReAct란, Agent가 문제를 해결할 때 추론과 행동을 결합하는 방식이다. 스스로 추론해서 행동하는 개념인 것이다.
LLM은 사용자의 요청에 맞춰서 Tool을 고른다. 이것을 "Tool Calling"이라고 한다.

만약 사용자가 덧셈을 하고 싶은데, plus라는 함수를 부르지 않고 바로 plus라는 함수 툴을 선택하고 덧셈을 진행하는 형태가 이에 해당한다. 또한 질의가 많아 각 질의에 대해 여러 번 호출해야 하는 경우에는 batch라는 모듈을 사용한다.

batch의 활용 예시는 위 이미지와 같다.
- Langgraph


Langgraph는 기존 Langchain의 LCEL이 선형적인 체인구조로 정해진 순서에 따라서만 작업을 진행했다면, 이제는 비선형적이고 동적인 프로세스를 구성할 수 있도록 설정한 개념이다. Langchain의 기능을 확장해 만들어진 프레임워크라고 보면 된다.
기본 구조는 아래 이미지에 나와있듯이, 노드와 엣지로 구성된다.
- 노드 : 실제 작업을 수행하는 Python 함수
- 엣지 : 노드들 간의 연결을 정의
Langgraph는 상태 구조를 정의하기 위해 State클래스를 정의한다. State(TypedDict)를 통해 TypedDict를 상속받아 정의한다. 한마디로 상태의 속성을 정의하기 위해 함수를 정의하는 것이다. 노드와 엣지의 구성은 위 이미지를 통해 알 수 있듯이, Stategraph를 생성하고
.add_node와. add_edge를 통해 정의할 수 있다.
📍 성찰 및 마무리
코딩테스트 스터디는 아마 3주 뒤에나 진행할 것이다. 왜냐하면 다음주 부터는...3차 프로젝트 시작이다...!
3차 프로젝트는 RAG를 활용한 Chatbot 시스템을 개발하는 것이다. AI 과정에서 가장 최신 기술 동향을 이용하는 프로젝트가 될 것 같아서 기대된다.
코딩 테스트 스터디는 스택 구조와 DFS/BFS 문제를 풀어보며 개념 정리를 더 확실히 해볼 수 있는 시간이 주어진 것 같기도 하다. 그래도 3주 뒤에 진행될 코딩 테스트에 아깝지 않은 프로젝트 결과물이 나왔으면 좋겠다는 생각을 하며 마무리한다.
'[SKN FAMILY AI CAMP] > 주간' 카테고리의 다른 글
| 🐉 SKN FAMILY AI CAMP 13기 16주차 후기 (2025.07.07 ~2025.07.11) (5) | 2025.07.11 |
|---|---|
| 🐉 SKN FAMILY AI CAMP 13기 14주차 후기 (2025.06.23 ~2025.06.27) (1) | 2025.06.28 |
| 🐉 SKN FAMILY AI CAMP 13기 12주차 후기 (2025.06.09 ~ 2025.06.13) (2) | 2025.06.13 |
| 🐉 SKN FAMILY AI CAMP 13기 11주차 후기 (2025.06.02 ~ 2025.06.05) (2) | 2025.06.05 |
| 🐉 SKN FAMILY AI CAMP 13기 9주차 후기 (2025.05.19 ~ 2025.05.23) (2) | 2025.05.23 |