✅ 일주일 동안 한 일과 느낀 점
11주차는 검색 기반 RAG(Retrieval-Augmented Generation)와 LangChain 심화 학습을 중심으로 진행됐다.
25일은 다양한 도메인(NLP 서비스형 실습)으로 시작해, 26일에는 LangChain 아키텍처와 성능 평가 지표를 다뤘고, 27일에는 Retrieval 기법을 심화 실습했다. 28일은 모든 과정을 묶어 RAG 파이프라인을 만들었고, 29일은 RAG 뉴스 프로젝트와 LangSmith를 통해 실제 서비스 품질 관리까지 확장했다.
이전까지는 모델을 “실험하는 단계”였다면, 이번 주는 서비스 아키텍처를 설계·구현·검증하는 단계에 가까웠다.
✅ 주요 학습 내용 및 기술 회고
📌 8월 25일 — NLP 서비스 기초 확장
- 뉴스 비서 (뉴스_비서.ipynb)
- RSS 피드를 수집하고, GPT를 활용해 기사를 요약하거나 Q&A 형태로 응답하도록 구현했다.
- Gradio UI로 기사 번호 기반 요약, 질문-답변 인터페이스를 제작.
- 단순 모델 출력이 아니라, 사용자가 기사 근거를 확인할 수 있는 Fact-grounded Response 구조를 학습했다.
- 가사 분석 (가사분석.ipynb)
- 노래 가사를 입력하면 GPT가 감정(사랑, 이별, 희망 등)을 추출하고 그 이유를 설명.
- 감정 키워드 + 근거 문장을 묶어서 보여주어 Explainable AI의 성격을 갖추도록 설계.
- 소나기 이어쓰기 (소나기_gpt.ipynb)
- 황순원 『소나기』 원문을 요약하고, 질의응답(QA)을 구현.
- GPT가 원작의 문체를 일정 부분 재현했지만, 긴 맥락 유지에는 어려움이 있었다.
- → 문학적 데이터에 RAG를 적용할 수 있는 가능성을 확인.
- 날씨 설명 (서울날씨_GPT.ipynb)
- 단순한 날씨 데이터를 GPT로 변환해 친근한 대화체 / 뉴스 보도체 / 감성 문구 등 다양한 톤으로 재작성.
- 데이터는 같아도 프롬프트 설계에 따라 응답 스타일이 달라진다는 점을 실습.
- Function Calling (함수.ipynb)
- GPT가 직접 get_current_weather() 함수를 호출해 날씨 데이터를 가져오도록 구현.
- 단순 대화형 모델을 넘어 외부 툴과 연결된 확장성을 경험.
→ 25일은 다양한 데이터(뉴스·가사·소설·날씨)에 GPT를 접목해 “서비스형 NLP”를 만드는 경험에 집중했다.
📌 8월 26일 — LangChain 심화 & 평가
- LangChain 기본 (langchain_basic.ipynb, langchain_1.ipynb)
- LLMChain과 SequentialChain으로 체인을 구성해, 예를 들어 텍스트 요약 → 감정 분석을 연속 수행.
- PromptTemplate을 활용해 프롬프트를 모듈화, 재사용성을 확보.
- 임베딩 & 청킹 (langchain_임베딩.ipynb, langchain_chunking.ipynb)
- RecursiveCharacterTextSplitter로 긴 문서를 분할하고, OpenAI Embeddings 및 HuggingFace Embeddings를 적용.
- Chroma 벡터스토어를 통해 검색형 QA를 구현.
- → 단순 LLM 호출이 아닌, 문서 기반 검색 + 응답 구조를 실습.
- LangChain 응용 (langchain_2.ipynb)
- 한국 음식/문화 데이터를 Document로 변환하고 VectorDB에 저장.
- RetrievalQA 체인으로 질문을 던져, 실제 문서 기반 응답을 확인.
- Gradio 번역기 (번역_gradio.ipynb)
- 한↔영 번역기를 구현, “일상체 ↔ IT 용어체” 같은 도메인 스타일 옵션을 제공.
- Streaming 응답을 Gradio와 연결해 UX 개선.
- 모델 평가 (평가_예제1.ipynb, 요약평가_예제4.ipynb, GPT평가_예제5.ipynb, Accuracy-BLEU-ROUGE.pdf)
- Accuracy, BLEU, ROUGE 같은 전통 지표와 BERTScore, GPT 평가를 비교.
- 동일한 요약 결과라도 지표마다 점수가 달라지는 특징을 확인.
- → *“성능 평가 = 단일 수치가 아니라 다각적 관점 필요”*라는 교훈.
→ 26일은 LangChain을 활용한 아키텍처 설계와 성능 평가 지표를 다루며, “만드는 것 + 검증하는 것”을 동시에 학습한 날.
📌 8월 27일 — Retrieval 심화
- BM25Retriever (형태소 분석 적용)
- Okt, Mecab 형태소 분석기를 적용해 한글 토큰화 후 BM25 검색.
- 단순 문자열 검색보다 훨씬 정밀한 결과를 얻을 수 있었다.
- EnsembleRetriever (BM25 + 임베딩)
- 키워드 기반 검색(BM25)과 의미 기반 검색(임베딩)을 가중치 조합.
- 두 방식을 결합해 “정확성 + 유연성”을 모두 잡는 전략을 학습.
- Reranker (Cross-Encoder, GPT-5 Reranker)
- 검색된 후보 문서를 Cross-Encoder로 재정렬.
- → 단순 Top-k 검색보다 훨씬 더 관련성 높은 답변을 뽑아낼 수 있음을 체감.
- Self Querying Retriever
- LLM이 질의에서 메타데이터 조건(예: “20페이지 이후의 이자 용어”)을 자동 추출.
- 단순 키워드 검색을 넘어, 조건 기반 고급 검색을 구현.
- MultiVectorRetriever & Parent Document Retriever
- 긴 문서를 Parent–Child 구조로 분할해 검색.
- 짧은 청크로 검색하되, 최종 답변은 긴 부모 문서를 반환.
- → 긴 문서 QA에서 맥락 손실 최소화.
- LongContextReorder
- 검색된 문서 순서를 재배치해, 모델이 긴 맥락 중간의 중요한 정보를 무시하지 않도록 최적화.
- Chat Memory (chatgpt_memory.ipynb)
- 대화 맥락을 저장·재사용하는 구조를 구현.
- 단순 Q&A가 아닌, “대화를 이어가는 챗봇”의 기초를 체험.
→ 27일은 Retrieval의 모든 핵심 기법을 체계적으로 실습하며, “검색 품질 향상”과 “대화 맥락 유지”를 동시에 경험했다.
📌 8월 28일 — RAG 파이프라인 통합
- 조건 기반 전체 흐름 실습
- 문서 로드: RSS에서 뉴스 데이터 수집.
- 분할: 형태소 단위로 문장을 청크 분리.
- 임베딩: 복수 모델 적용 (ko-sroberta, multilingual 등).
- 벡터DB화: Chroma, FAISS에 저장.
- Retrieval: 다중 검색 기법 (BM25, 벡터 검색, 앙상블).
- Reranker: Cross-Encoder로 최종 결과 정제.
- Prompt 설계 + GPT-4 응답.
- 결과: Gradio UI로 날짜별 검색, 키워드 검색, 요약, 질의응답 화면 제공.
→ 28일은 지금까지 배운 모든 기술을 하나로 묶어 “완전한 RAG 서비스”를 제작한 날.
📌 8월 29일 — 종합 프로젝트 & LangSmith
- RAG 뉴스 프로젝트 (RAG_뉴스프로젝트.ipynb)
- RSS 기반 뉴스 비서 AI 완성.
- Gradio UI에 검색(키워드·날짜), 요약, 질의응답 탭 제공.
- 다중 임베딩 모델 선택, CrossEncoder Reranker 적용, Hybrid/Fusion 검색 방식 지원.
- → 실습의 최종 결과물로서, 실제 서비스 프로토타입 수준의 프로젝트를 완성.
- LangSmith 실습
- ex1: ChatPrompt + LLM 체인 결과를 LangSmith에서 로깅.
- ex3: 입력이 calc:면 계산기, 아니면 챗봇 → RunnableBranch를 이용한 의도 분기.
- ex4: 입력 텍스트 길이에 따라 원샷 요약 ↔ MapReduce 요약 라우팅.
- RunnablePassthrough: 입력 question은 그대로 전달, context는 전처리 후 전달.
- → 단순 결과 확인을 넘어 체인 실행 과정 전체를 추적·분석하는 방법을 배움.
→ 29일은 11주차 전체의 종합: 완성된 RAG 서비스와 품질 관리 도구 LangSmith까지 경험한 날.
✅ 아쉬웠던 점 & 개선 포인트
- 다중 임베딩·Reranker 조합 실험은 했지만, 성능 비교 리포트까지 정리하진 못했다.
- Gradio UI는 풍부했지만, UX 최적화(속도, 에러 처리 등)에는 개선 여지가 남았다.
- LangSmith는 로그 기록까지만 다뤄 실제 디버깅 사례 적용은 부족했다.
✅ 마무리
11주차는 “검색 기반 RAG 서비스 완성 주차”였다.
25-27일에는 뉴스·가사·소설·날씨 같은 데이터로 개별 기능을 학습하고, BM25·임베딩·Reranker 등 Retrieval 기법을 심화했다.28-29일에는 그것들을 통합해 RSS 뉴스 비서 RAG 프로젝트를 완성하고, LangSmith로 운영·품질 관리까지 다뤘다.
앞으로는 이번 경험을 바탕으로, 단순히 모델을 적용하는 수준을 넘어서 정확도 높은 검색 + 사용자 친화적 UI + 서비스 모니터링 체계까지 갖춘 AI 서비스를 완성해보고 싶다.
'SK네트웍스 Family AI캠프 16기' 카테고리의 다른 글
| [플레이데이터 SK네트웍스 Family AI캠프 16기] 13주차 회고 (0) | 2025.09.15 |
|---|---|
| [플레이데이터 SK네트웍스 Family AI캠프 16기] 12주차 회고 (0) | 2025.09.08 |
| [플레이데이터 SK네트웍스 Family AI캠프 16기] 10주차 회고 (3) | 2025.08.26 |
| [플레이데이터 SK네트웍스 Family AI캠프 16기] 9주차 회고 (2) | 2025.08.18 |
| [플레이데이터 SK네트웍스 Family AI캠프 16기] 8주차 회고 (6) | 2025.08.12 |