- LangChain 비슷한 “에이전트/워크플로우 프레임워크”
- 회사용 RAG 검색봇을 멀티에이전트 구조로 설계하는 추천 방법
1. LangChain과 유사한 에이전트 / 오케스트레이션 프레임워크들
1-1. LlamaIndex
- 포지션: RAG + 에이전트 + 툴 사용에 강함
- 특징
- 문서 인덱싱/쿼리/RAG에 특화 (LangChain보다 RAG 쪽이 더 구조화된 느낌)
AgentRunner,ReActAgent,FunctionCallingAgent등을 이용해서 에이전트 구성- 멀티에이전트도 가능 (router, sub-agent, tool agent 등)
- 장점
- 회사용 문서 검색/RAG 구현이 목적이면, LlamaIndex + LangChain 조합도 많이 씀
- Prompt/Graph/Query 구조가 비교적 명확함
1-2. Semantic Kernel (Microsoft)
- 포지션: .NET, C#, Python 중심의 에이전트/플러그인 프레임워크
- 특징
- “스킬(plugins)” 개념으로 함수/툴을 관리
- Planner 개념으로 작업 계획 세우고, 여러 기능을 조합
- Azure OpenAI / OpenAI / 기타 LLM 연동에 최적화
- 장점
- MS 스택(.NET, Azure) 쓰는 회사라면 엔터프라이즈 통합이 편함
- 강한 형식(Type-safe) 환경을 선호하면 꽤 괜찮음
1-3. Autogen (Microsoft)
- 포지션: 멀티에이전트 협업 시스템에 거의 특화된 프레임워크
- 특징
- 여러 에이전트를 정의하고, 서로 메시지 주고받게 하는 구조
- 예: “UserProxyAgent, AssistantAgent, CodeExecutorAgent”들이 협업
- RAG, 코드 실행, 툴 사용, 리뷰 에이전트 등 구성하기 좋음
- 장점
- “멀티에이전트” 관점에서는 오히려 LangChain보다 컨셉이 직관적
- 회사 내에서 “검색 담당”, “요약 담당”, “검수 담당” 같은 에이전트를 나눠 구현하기 좋음
1-4. CrewAI, AutoGen-like 프로젝트들
- CrewAI (Python)
- 여러 에이전트를 “팀(Crew)”으로 묶어서 협업시키는 프레임워크
- 역할 배분/작업 분해 중심
- 기타
- Haystack (deepset) – 원래는 검색/RAG 프레임워크, 요즘은 에이전트 기능도 강화 중
- IBM Granite Agents, OpenAI Assistant API 기반 자체 프레임워크 등
1-5. 상용/플랫폼 쪽
- OpenAI Assistants API / Anthropic Workflows (출시 영역에 따라 상이)
- 서버리스하게 “에이전트 + 툴 + 파일 + RAG”를 플랫폼 수준에서 제공
- 코드 구현량 줄이고 싶은 경우 유리
- LangGraph (LangChain 팀에서)
- 에이전트/툴 호출을 “상태 머신 / 그래프”처럼 정의해서 복잡한 플로우 설계에 좋음
2. 회사용 RAG 검색봇을 “멀티에이전트”로 구현하는 관점
2-1. 멀티에이전트로 나눌 수 있는 전형적인 역할들
회사에서 자주 쓰는 패턴은 아래처럼 “역할 기반”으로 나누는 겁니다.
Router / Intent Agent (라우터 에이전트)
- 사용자 질문이:
- 단순 지식 검색인지
- 사내 정책/HR 관련인지
- 코드/기술 문서 관련인지
- FAQ 수준인지
- 를 구분해서, 어느 RAG 파이프라인 또는 도메인 에이전트에 보낼지 결정
- 사용자 질문이:
Retriever Agent (검색 담당)
- 벡터 검색 + 키워드 검색 + 필터링(부서, 시점, 문서 타입) 조합
- 여러 인덱스에서 검색 후, 스코어 통합/재랭킹
- 예: HR 문서 인덱스, 기술 위키 인덱스, 제품 매뉴얼 인덱스 등 각각 쿼리
Summarizer / Answer Composer Agent (응답 작성 담당)
- 검색된 문서를 바탕으로:
- 답변 생성
- 출처 링크, 문서명, 버전 정보 명시
- “사실에 없는 내용은 추측하지 않는다” 같은 정책 프롬프트를 강하게 적용
- 검색된 문서를 바탕으로:
Policy / Guardrail Agent (검수/필터 담당)
- 보안/개인정보/규정 위반 여부 체크
- 외부로 나가면 안 되는 키워드/패턴(예: 고객 개인정보, 내부 코드) 필터링
- 민감 내용은 마스킹하거나 “담당자에게 문의하라”로 응답
Tool / Action Agent (실행 담당 – 선택)
- 단순 검색이 아니라:
- 티켓 생성(Jira, ServiceNow)
- 권한 요청 워크플로우 시작
- 사내 시스템에서 정보 조회(예: 재직증명서 발급 여부)
- 까지 하고 싶다면, 별도 툴 에이전트를 두고 RAG 결과를 기반으로 액션 수행
- 단순 검색이 아니라:
멀티에이전트의 핵심은 “역할/책임을 명확히 나누고, 메시지 전달 구조를 설계”하는 것입니다.
3. 멀티에이전트 RAG 검색봇 설계 패턴
패턴 A: LangChain / LangGraph 기반 상태 머신 + RAG
추천 상황: 이미 Python + LangChain을 쓰고 있거나, 복잡한 흐름(재시도, 에러 처리)을 명시적으로 설계하고 싶을 때
구조 예시:
- User → Router Agent
- 질문 → 라우터 (LLM 기반 분기 + 규칙 기반 분기)
- 라우터 결과에 따라:
- HR 에이전트, Tech 에이전트, FAQ 에이전트 등으로 전달
- 각 도메인 에이전트 내부:
- Retriever → Answer Agent 플로우
- 마지막에 Policy Agent를 거쳐 최종 응답 반환
구현 스택:
- LangChain (chains, tools, agents)
- LangGraph (state.machine/graph로 에이전트 간 연결 설계)
- 백엔드: FastAPI / Django 등으로 API 래핑
장점:
- 파이프라인이 시각적으로/논리적으로 명확
- 복잡해질수록 그래프형 설계가 유리
패턴 B: Autogen / CrewAI로 “에이전트 간 대화” 모델링
추천 상황:
- “에이전트들끼리 협의/토론” 구조를 실험해 보고 싶거나,
- 작업을 “대화형 협업”으로 자연스럽게 표현하고 싶을 때
예시 플로우:
- UserProxyAgent가 사용자 질문을 받음
- RouterAgent가 어느 에이전트가 적합한지 제안
- RetrieverAgent가 RAG 수행
- AnswerAgent가 초고 작성
- PolicyAgent가 검토 후 수정 제안
- AnswerAgent가 수정/최종 확정
장점:
- 에이전트 추가/역할 변경이 상대적으로 쉽고 유연
- PoC/실험용으로 빠르게 구조 바꿔보기 좋음
주의:
- 너무 많은 에이전트/턴을 쓰면 **비용과 지연(latency)**가 커질 수 있음 → 역할 최소화 필요
패턴 C: LlamaIndex 중심의 “Graph RAG + 멀티에이전트”
추천 상황:
- 문서 구조가 복잡하고, 섹션/트리/노드 기반의 RAG가 필요할 때
- 인덱스/쿼리 엔진 구성에 신경을 많이 쓰고 싶을 때
구조 예시:
- LlamaIndex로:
- 문서별/도메인별 인덱스 생성
- QueryEngine들 구성 (예: HRQueryEngine, CodeQueryEngine)
- 상단에 RouterAgent를 두어 QueryEngine을 선택
- Answer Agent + Policy Agent는 LangChain/Autogen 등과 조합도 가능
4. 회사용으로 쓸 때 특히 중요한 포인트
보안/프라이버시
- 로그에 민감 정보가 남지 않도록
- 벡터 스토어를 온프레미스 또는 VPC 내에 두는지 여부
- 클라우드 LLM 사용 시, 데이터가 학습에 쓰이지 않도록 설정
출처 제공 & 최신성
- “이 답변은 아래 문서(버전, 날짜)를 기반으로 함”을 항상 명시
- 문서가 변경되면 인덱스 재빌드/증분 업데이트 파이프라인 필요
권한/ACL
- 사용자의 부서/권한에 따라 검색 가능한 문서를 제한
- “RAG + RBAC” 구조:
- 검색 단계에서 ACL 필터
- 또는 응답 단계에서 민감 문서를 제외
관측/모니터링
- 어떤 질문이 많이 들어오는지
- 자주 실패/헛소리하는 패턴은 없는지
- 에이전트별 Token 사용량, Latency 모니터링
점진적 도입
- v1: 단일 에이전트 RAG (검색+요약)
- v2: Router + 도메인별 RAG
- v3: Policy/Guardrail, Tool Agent 추가
- 이런 식으로 단계적으로 멀티에이전트화하는 것이 현실적
5. 선택 가이드 (무엇으로 시작할까?)
- Python 중심, 이미 LangChain을 알고 있다:
- → LangChain + LangGraph로 시작 + 필요하면 LlamaIndex 일부 도입
- MS/Azure 스택, .NET도 많이 쓰는 회사다:
- → Semantic Kernel + Azure OpenAI + 필요 시 Autogen 추가
- 멀티에이전트 실험/PoC를 빠르게 해보고 싶다:
- → Autogen 또는 CrewAI로 프로토타입
- “복잡한 문서 RAG에 최적화 + 에이전트는 단순”:
- → LlamaIndex 중심 설계 + 간단한 Router/Policy는 LangChain 또는 자체 코드
댓글
댓글 쓰기