요즘 LLM 기반 서비스는 누구나 한 번쯤 만들어보는 시대가 되었다. API를 연결하고, 벡터 저장소를 붙이고, 프레임워크를 활용하면 생각보다 빠르게 그럴듯한 질의응답 시스템을 완성할 수 있다. 데모를 만드는 일 자체는 더 이상 어렵지 않다. 문제는 그다음이다. 그 구조가 왜 그렇게 동작하는지, 어디까지가 모델의 역할이고 어디서부터가 시스템 설계의 책임인지, 그리고 어느 지점에서 한계가 발생하는지를 충분히 이해하지 못한 채 기능만 덧붙이다 보면 시스템은 금세 복잡해지고 수정과 확장이 어려워진다. 이 책은 바로 그 지점에서 다시 기초를 짚는다. 단순히 구현 방법을 나열하는 것이 아니라, LLM 기반 시스템을 어떤관점으로 설계해야 하는지를 처음부터 끝까지 하나의 흐름으로 정리해 주며, 왜 이런 구조가 필요한지를 자연스럽게 납득시키는 데 힘이 있다. 이 책의 가장 큰 강점은, 초보자들이 흔히 빠지는 오해를 설명의 흐름 속에서 자연스럽게 풀어낸다는 점이다. RAG를 처음 접하는 사람들 중에는 검색 기능만 추가하면 모델의 신뢰도 문제가 자동으로 해결된다고 생각하는 경우가 적지 않다. 그러나 책은 그런 기대를 전제하지 않는다. 검색 결과를 어떻게 다루어야 하는지, 왜 메타데이터를 함께 저장해야 하는지, 그리고 무엇보다 왜 출처를 명확히 드러내는 구조가 필수적인지 설계 관점에서 차근히 짚는다. 단순한 권고에 머무르지 않고, 환각 가능성을 전제로 시스템을 어떻게 책임 있게 구성할 것인가라는 질문으로 이어진다. Source attribution을 제대로 구현하지 않으면 RAG 역시 또 다른 블랙박스가 될 수 있다는 점이 설득력 있게 드러난다.
에이전트 설계를 다루는 부분도 같은 맥락에서 인상적이다. 사람들이 자주 혼동하는 워크플로와 에이전트를 구분하고, 의사결정을 담당하는 상위 노드와 실제 작업을 수행하는 노드를 나누어 설명한다. 슈퍼바이저와 개별 에이전트가 어떤 역할을 맡고 어떻게 연결되는지 코드 흐름을 통해 보여주기 때문에, 멀티스텝 구조가 단순 구현이 아니라 설계 문제라는 사실이 분명해진다. 여러 단계를 거치는 시스템을 안정적으로 묶기 위해 어떤 사고가 필요한지 차근차근 안내한다.
또 하나 인상적이었던 점은 평가를 독립적인 영역으로 다룬다는 점이다. 토큰 사용량과 지연 시간, 응답 품질을 구분해 관리하는 방법과 골든 데이터셋을 활용한 체계적 검증 전략은 LLM 시스템을 실험이 아닌 서비스로 바라보게 만든다. 결과를 생성하는 단계에서 멈추지 않고, 그 결과를 어떻게 점검하고 개선할 것인지까지 설계의 일부로 포함한다는 태도가 분명하다. 다만 아쉬운 부분도 있다. 실습 코드에서 사용하는 라이브러리 버전이 다소 혼재되어 보이는 지점이 있었다. 랭체인과 랭그래프는 업데이트 주기가 빠르고 변화도 잦은 편이라, 버전에 따라 코드 동작이 달라질 수 있다. 주요 라이브러리의 권장 버전을 명확히 안내해주었다면 처음 배우는 독자가 시행착오를 줄이는 데 도움이 되었을 것이다. 전반적으로 이 책은 화려한 기법을 나열하기보다 기본 구조를 납득시키는 데 집중한다. 초보자들이 왜 이런 설계가 필요한지 자연스럽게 받아들이며 따라갈 수 있도록 구성되어 있다. RAG와 에이전트를 처음 접하는 독자라면 단순 사용법을 넘어 구조적 이해를 쌓는 데 좋은 출발점이 될 것이다. LLM을 기능이 아니라 시스템으로 이해하고 싶다면 충분히 의미 있는 선택이다.
|