"한빛미디어 서평단 <나는리뷰어다> 활동을 위해서 책을 협찬 받아 작성된 서평입니다."
소개
오늘 리뷰할 책은 『러닝 랭체인: 랭체인과 랭그래프로 구현하는 RAG, 에이전트, 인지 아키텍처』입니다.
이 책은 랭체인의 초기 개발 컨트리뷰터인 Mayo Oshin과 창업 소프트웨어 엔지니어 Nuno Campos가 함께 집필했습니다. 2025년 2월에 출간되었으며, 한국어 초판은 5월에 발행되었습니다. 2025년 6월 기준으로도 매우 최신 정보를 담고 있습니다.
이 책은 LangChain을 활용한 AI 및 LLM 기반 애플리케이션을 개발하려는 소프트웨어 엔지니어, 또는 LangChain과 서비스 개발에 관심 있는 분들에게 추천할 만합니다.
특징
Python과 JavaScript 예제를 모두 제공합니다. Python에서는 Pydantic을, JavaScript에서는 zod 라이브러리를 통해 데이터 스키마 검증을 합니다. 파이썬은 데코레이터를 사용할 수 있다는 점 등 언어별로 차이가 있습니다. 두 언어의 예제를 모두 제공하기 때문에, 독자가 익숙한 언어를 참고해 학습할 수 있습니다.
예전에는 JavaScript 쪽의 문서화나 라이브러리 업데이트가 느린이유로 무조건 Python을 사용했었는데, 이제는 그런 문제가 없는걸로 알고 있습니다. 개인적으로 JavaScript에 더 익숙하지만 LangChain사용 시 Python을 더 선호합니다.
책의 구성
CHAPTER 00 랭체인을 위한 기초 AI 지식 CHAPTER 01 랭체인의 기본 LLM 사용법 CHAPTER 02 RAG 1단계: 데이터 인덱싱 CHAPTER 03 RAG 2단계: 데이터 기반 대화 CHAPTER 04 랭그래프를 활용한 메모리 기능 CHAPTER 05 랭그래프로 구현하는 인지 아키텍처 CHAPTER 06 에이전트 아키텍처 I CHAPTER 07 에이전트 아키텍처 II CHAPTER 08 LLM의 성능을 높이는 패턴 CHAPTER 09 AI 애플리케이션 배포 CHAPTER 10 테스트: 평가, 모니터링, 개선 CHAPTER 11 LLM 애플리케이션 개발
리뷰
전체 장을 다 아우르기는 내용이 길어져서 제가 흥미롭게 보았던 부분에 대해서 정리합니다.
2장 부터 본격적으로 RAG에 대해 다룹니다. 2024년 1월에 RAG 관련 아티클을 작성할때 LangChain을 사용했었는데, 지금 훨씬 많은 기능이 내장되어 있는걸 알 수 있었습니다.
기본적인 글자 수 기준의 청크 분할 외에도, RecursiveCharacterTextSplitter 클래스를 사용해 특정 프로그래밍 언어별로 청크를 나누는 기능도 지원합니다. 마크다운뿐만 아니라 파이썬 같은 언어의 텍스트 청크 분할도 가능합니다.
벡터 저장소 예제로는 PostgreSQL의 PGVector를 사용하는 방법이 소개되어 있습니다. 예전에는 벡터스토어로 Pinecone, Chroma, Faiss를 주로 썼었는데, 이제는 선택지가 훨씬 다양해졌습니다.
RAPTOR, ColBERT 전략 등 기존에 어렴풋이 알고 있던 개념들도 이 책을 통해 더 깊이 이해할 수 있었습니다.
2장 끝부분에는 실제 서비스에서 활용할 수 있는 'RAG 시스템의 정확도를 극대화하는 효과적인 방안'도 설명합니다.
3장에서는 magic prompt, rephrase 등 다양한 이름으로 불리는 쿼리 변환 기법을 다룹니다. 유저 입력을 목적에 맞게 리라이팅하는 Rewrite-Retrieve-Read(RRR), 초기 쿼리를 여러 개 생성해 다양한 결과를 조합하는 다중 쿼리 검색, 랭킹을 활용하는 Reciprocal-rank-fusion(RRF), 가상 문서 임베딩 등에 대해 설명합니다.
4장은 LangGraph입니다. LangGraph는 체인 구조만을 사용하는 LangChain의 한계를 보완해, 그래프 구조로 작업을 처리할 수 있게 도와주는 프레임워크입니다. 주로 복잡한 에이전트 간 협업, 다단계 추론, 동적 의사결정 트리 등 복잡한 워크플로우를 구현할 때 유용합니다.
AI 서비스 개발에는 항상 자율성과 신뢰성 사이에서 고민이 따릅니다. 이 책에서는 그 고민을 적절히 해결할 수 있는 트레이드오프 극복 방법을 소개합니다.
구조화된 출력, 중간 출력, 사용자 개입 패턴, 멀티태스킹 등 다양한 전략도 함께 다룹니다.
9장에서는 AI 애플리케이션 배포를 다룹니다. 특히 Supabase를 활용한 예제가 인상적입니다. Supabase는 작년 4월에 G/A(General Availability)로 전환된 이후, YC 등 스타트업 커뮤니티에서도 사용을 적극 권장할 정도로 주목받고 있습니다.
10장에서는 LLM 테스트, 평가, 모니터링, 개선에 대해 다룹니다. 이 부분이야말로 가장 중요한 챕터가 아닐까 싶습니다. 보통은 개발까지만 하고 이 부분을 간과하기 쉬운데, AI 서비스의 경우 지속적으로 모델이나 프롬프트를 개선해야 하므로, 관련 시스템을 미리 구축해두면 정말 많은 시간을 절약할 수 있습니다.
부록에서는 MCP에 대해 설명합니다. 랭체인과 MCP의 결합에 대한 내용이 특히 흥미로웠습니다.
마치며
여담이지만, 2년 전 랭체인이 한창 주목받던 시기에 사용하다가, ChatGPT Assistants나 Vectorstore 같은 도구가 등장하면서 곧 대체될 거라 생각했었습니다. 하지만 오히려 랭체인과 관련 생태계가 더욱 견고해졌습니다.
이 책은 LangChain, LangGraph의 사용법뿐만 아니라, AI 서비스 개발 시 알아두면 좋은 전략들을 잘 정리해 엔지니어들에게 장기적으로 많은 도움이 될 것 같습니다.