TL;DR
작성자는 인도 재무·법률용 대형 PDF를 무료 티어 인프라에서 처리하기 위해 10노드 LangGraph StateGraph와 분리형 FastMCP 도구 서버를 결합한 에이전틱 RAG를 구축했고, Jina v3의 MRL로 벡터 저장을 75% 절감해 31,000개 이상의 청크를 Pinecone 무료 티어에 인덱싱했다고 보고했다. 핵심 설계는 parent-child 재귀 검색으로 검색 정밀도는 child에서 확보하고 LLM에는 parent 문맥을 주입해 다중 홉 질의와 인용 정확도를 개선한 점이며 Cohere rerank로 후보를 20→10으로 좁혀 노이즈를 제거했다. 또한 3-레벨 LLM 폴백과 pybreaker 기반 서킷브레이커로 API 실패 전파를 차단했고 FastMCP는 도구 확장·HITL 이메일 승인·GenUI 연동 같은 운영 요구를 해결해 제로코스트 운영을 가능하게 했다는 점이 핵심이다.
주요 논점
MRL 적용으로 무료 벡터 저장 한도를 우회해 대규모 인덱싱을 실현한 점은 비용 제약 환경에서 실무적 가치를 보였고, 저장 차원 축소와 의미 보존을 트레이드오프로 관리한 설계가 합리적이라는 의견이 다수였다.
상위-하위(parent-child) 재귀 검색은 법률 문서의 교차참조·조항 맥락을 복원하는 데 직접적인 효과가 있어 다중 홉 질의 정확도를 개선하는 실무적 방법으로 수긍받았다.
Pinecone 무료 티어를 선택한 것은 초기 프로토타입에서는 유효했지만 장기 운영과 스토리지 제어 측면에서는 Qdrant 같은 자가호스팅 대체가 더 나을 수 있다는 판단이 섞여 있었다.
실용적 조언
- 밀집된 법률·재무 PDF를 처리할 때는 단일 크기 청킹 대신 부모(parent)와 자식(child) 레벨을 동시에 유지하면 검색의 정밀도와 생성의 맥락 보존을 동시에 확보할 수 있다. 구현은 child에서 후보 매칭을 수행한 뒤 parent_id로 중복을 제거하고 해당 parent 텍스트를 LLM 입력에 병합하는 방식으로 진행한다. 이 패턴은 문서 내 교차참조가 많은 경우 인용 정확도를 크게 개선한다.
- 무료 인프라 제약이 심한 환경에서는 Jina v3의 MRL처럼 임베딩 차원 일부에 핵심 의미를 몰아넣는 기법을 검토하면 저장량과 쿼리 비용을 절감할 수 있다. 다만 어떤 차원까지 잘라도 의미 보존이 유지되는지는 사전 실험으로 검증해야 하며, MRL 적용 후에도 Cohere 같은 reranker를 거쳐 후보를 좁히는 이중 검증을 권한다. 실제 사례에서는 1024→256차원 축소와 20→10 후보 재정렬 조합으로 실 운영이 가능해졌다.
- 도구가 늘어날 때는 도구 실행을 에이전트 그래프에서 분리해 별도 MCP 서버로 호스트하면 확장성과 보안 통제가 쉬워진다. FastMCP 같은 구성은 도구를 런타임에 노출하고 UI 기반의 HITL 승인(예: 이메일 전송)을 통합하는 데 유리하며, 새로운 도구 추가 시 그래프 코드를 변경하지 않아도 된다. 운영상에는 도구 호출의 스트리밍 응답과 상태 보고를 구현하면 사용자 체감 지연을 줄일 수 있다.
섹션별 상세
이미지 분석

이미지는 10노드 LangGraph StateGraph, FastMCP 서버, 벡터 검색 엔진, 3-티어 LLM 폴백 체인, 지속성·관찰성 스택을 한눈에 보여주는 구조도이며 각 노드의 역할과 데이터 흐름이 색상으로 구분되어 있다. 중앙 좌측에는 분기 노드들(분류기·리트리버·생성기·홀루시네이션 가드)이, 우측에는 벡터 검색(Jina v3 MRL, Pinecone)과 외부 도구 모음이 위치해 있어 도구 분리와 재순환(fallback) 흐름을 시각적으로 확인할 수 있다. 하단에는 인덱스·청크·토큰 비용·월간 비용 등 핵심 메트릭이 요약되어 있어 글 본문에 적힌 수치와 다이어그램을 상호 검증하기에 적절하다.
전체 아키텍처 다이어그램
용어 해설
- 모델 컨텍스트 프로토콜(Model Context Protocol (MCP))
- — MCP는 에이전트와 외부 도구를 표준화된 인터페이스로 분리하는 프로토콜로, 도구 탐색과 호출을 런타임에 동적으로 처리하도록 설계됐다. 이 글에서는 FastMCP 서버를 통해 도구를 LangGraph 그래프와 독립적으로 호스트하고, stdio 기반의 transport로 연결하여 그래프 변경 없이 도구를 추가하거나 관리한 구현적 이점을 설명한다.
- 매트료시카 표현 학습(Matryoshka Representation Learning (MRL))
- — MRL은 임베딩의 초반 차원에 핵심 의미를 밀집시키고 이후 차원을 점진적으로 확장하는 기법으로, 쿼리 시 상위 N차원만 사용해도 의미를 보존하도록 훈련된 표현을 생성한다. 포스트에서는 Jina v3의 MRL을 이용해 1024차원을 256차원으로 잘라 Pinecone 저장량을 75% 절감한 사례가 기술되어 있다.
- 상위-하위 재귀 검색(Parent-Child Recursive Retrieval)
- — 상위-하위 검색은 길고 밀집된 문서를 큰 맥락(parent)과 작은 검색 단위(child)로 이중으로 쪼갠 뒤, 검색 결과에서 child 매칭을 parent_id 기준으로 중복 제거하고 해당 parent 텍스트를 LLM에 주입하는 방식이다. 이 접근은 단일 크기 청킹이 잃는 문맥을 보완해 다중 홉 질의와 인용 정확도를 높였다는 근거가 제시된다.
- Cohere 재정렬 v3(Cohere Rerank v3)
- — Cohere의 Rerank 모델은 초기 벡터 DB 유사도 산출로 뽑힌 후보(예: 상위 20개)를 의미 기반으로 재정렬해 최종 골든 청크(예: 상위 10개)를 선정하는 역할을 한다. 문서에서는 Pinecone의 cosine 점수만으로는 법률 텍스트에서 키워드 오탐이 많아 재정렬을 통해 관련성을 개선했다고 기술되어 있다.
- Langfuse
- — Langfuse는 LLM 추론의 트레이스, 토큰 비용, 지연 시간을 수집하는 관찰성 도구로, 에이전트의 각 노드와 LLM 호출별 비용·지연을 기록해 병목과 비용 집약 포인트를 파악하는 데 사용됐다. 글에서는 Langfuse를 통해 Generation 단계와 도구 호출의 토큰 비용을 추적했다고 기술한다.
언급된 도구
StateGraph 기반 에이전트 플로우와 조건부 라우팅을 구성하는 프레임워크
MRL 기반 임베딩 생성으로 저장량 절감 및 의미 보존을 목표로 사용된 임베딩 엔진
벡터 검색과 인덱싱을 제공하는 서버리스 벡터 DB로 무료 티어를 활용해 운영
초기 유사도 후보를 의미 기반으로 재정렬해 최종 골든 청크를 선정하는 재정렬 엔진
자주 묻는 질의를 캐시해 Pinecone·LLM 호출을 줄이는 캐시 레이어
문서 품질에 따라 티어를 달리해 PDF 파싱 품질과 비용을 관리하는 파싱 도구
MCP를 구현해 도구 실행을 에이전트와 분리하고 런타임 도구 디스커버리와 HITL 승인을 제공
추론 트레이스와 토큰 비용·지연 추적을 위한 관찰성 도구
언급된 리소스
AI 요약 · 북마크 · 개인 피드 설정 — 무료
출처 · 인용 안내
인용 시 "요약 출처: AI Trends (aitrends.kr)"를 표기하고, 사실 확인은 원문 보기 기준으로 진행해 주세요. 자세한 기준은 운영 정책을 참고해 주세요.