통합 검색 에이전트 개발: LangGraph와 MCP를 활용한 의도 분류 및 프로덕션 배포
카테고리
프로그래밍/소프트웨어 개발
서브카테고리
인공지능
대상자
- AI/검색 엔진 개발자, 데이터 과학자, DevOps 엔지니어
- 난이도: 중급~고급 (LLM 기반 의도 분류, LangGraph 흐름 설계, MCP 연동 경험 필요)
핵심 요약
- 다모달 검색 시스템 구축: Gemini 2.0 Flash로 의도 분류 후 Google 검색, 웹 스크래핑, 병렬 처리 등 최적 전략 자동 선택 (
general_search
,product_search
,web_scraping
,comparison
분류) - LangGraph 기반 흐름 제어:
IntentClassifier
→[Google Search | Web Scraping | Both]
→Final Processing
구조로 확장성과 유연성 확보 - MCP 연동으로 빠른 통합:
FastMCP
를 통해 Claude Desktop, 다른 MCP 지원 앱, 커스텀 워크플로우에 즉시 적용 가능
섹션별 세부 요약
1. 문제 정의 및 기존 솔루션의 한계
- 전통적 검색 시스템은 사전 선택 (웹 검색 vs. 웹 스크래핑) 필요
- 사용자 의도에 따라 자동 라우팅 (의도 분류 → 최적 전략 선택) 요구
- 예:
$200 미만의 노이즈 제거 이어폰
→ Google 검색 + 웹 스크래핑 병렬 처리
2. 시스템 구성 요소 및 흐름
- 의도 분류:
Gemini 2.0 Flash
사용,IntentClassification
Pydantic 모델로 신뢰도 점수 제공 - 검색 전략 선택:
- general_search
→ Google 검색
- product_search
→ Google + 웹 스크래핑
- comparison
→ 병렬 처리
- 결과 평가:
- Relevance Score (0-1): 질문에 대한 적합성
- Quality Score (0-1): 출처 신뢰도 및 콘텐츠 품질
- Final Score = (relevance 0.7) + (quality 0.3)
3. 기술 구현 및 에러 처리
- LangGraph 흐름:
create_unified_search_graph()
로 정의,FastMCP
로 MCP 서버 래퍼 제공 - 에러 핸들링:
```python
def intent_classifier_node(state: Dict[str, Any]) -> Dict[str, Any]:
try:
result = structured_llm.invoke(full_prompt)
except Exception as e:
state["intent"] = "general_search"
state["intent_confidence"] = 0.5
state["error"] = f"Classification error: {str(e)}"
return state
```
- MCP 연동 예시:
```python
@mcp.tool()
async def search(search_term: str) -> str:
result = await graph.ainvoke({"query": search_term})
return result.get("final_results", "No results found.")
```
4. 배포 및 확장성
- LangGraph Cloud 배포:
.env
설정 후langgraph dev
실행 - 확장성:
- 벡터 DB 연동 (의미 기반 검색)
- 실시간 데이터 스트림 (LinkedIn, Twitter 등 플랫폼 전용 추출기)
- 다국어 지원 (자동 번역)
- 모듈화된 아키텍처:
```python
workflow.add_node("scholarly_search", scholarly_search_node)
workflow.add_conditional_edges("intent_classifier", route_with_scholarly)
```
결론
- 핵심 팁:
- LangGraph Studio를 통해 흐름 시각화 및 실시간 디버깅
- MCP 연동으로 Claude Desktop, 커스텀 워크플로우에 즉시 통합
- 의도 분류 정확도를 높이기 위해 Pydantic
모델로 신뢰도 점수 강화
- 실무 적용 예시:
- 연구 보조 도구 (학술 데이터베이스 + 웹 검색 자동 선택)
- 시장 조사 (경쟁사 정보 다중 출처 수집)
- 콘텐츠 큐레이션 (플랫폼별 최적 정보 소스 자동 선택)