MADKE: 지식 강화 다중 에이전트 토론
Multi-Agent Debate에 공유 지식 풀을 도입하여 토론 품질을 높이는 확장 기법
Multi-Agent Debate with Knowledge Enhancement
개념
MADKE는 Multi-Agent Debate의 발전 버전이다. 공유 지식 풀을 도입하여 토론 품질을 향상시킵니다.
기존 Multi-Agent Debate의 문제
- 각 에이전트의 배경 지식이 다름
- 같은 정보에 대해 다르게 해석
- 특정 분야 지식 부족 시 토론 품질 저하
문제 예시
Agent A: "한국의 GDP는 약 1.6조 달러이다."
Agent B: "아니요, 1.8조 달러이다."
Agent C: "제가 알기로는 1.7조 달러이다."
각자 다른 시점과 출처의 데이터로 불필요한 논쟁이 발생한다.
해결책: 공유 지식 풀
공유 지식 풀(논문, 팩트, 전문 지식)을 중심으로 모든 에이전트가 연결된다. 각 에이전트는 다음과 같이 동작한다:
- 지식 풀에서 관련 정보 검색 — 토론에 필요한 데이터를 가져온다.
- 그 정보를 바탕으로 토론 — 동일한 정보 기반 위에서 논의한다.
- 새로운 정보는 풀에 추가 — 토론 중 발견한 내용을 공유한다.
프로세스
- 질문 수신 — 사용자로부터 질문을 받다.
- 관련 지식 검색 — 각 에이전트가 지식 풀에서 정보를 획득한다.
- 지식 기반 토론 — 동일한 정보를 바탕으로 토론을 진행한다.
- 새로운 발견 저장 — 토론 중 발견한 새 정보를 풀에 추가한다.
- 최종 답 도출 — 토론 결과를 종합하여 답변을 생성한다.
기존 Debate vs MADKE
| 기존 Debate | MADKE | |
|---|---|---|
| 배경 지식 | 각자 다름 | 동일한 지식 기반 |
| 정보 일관성 | 불일치 가능 | 일관된 정보 |
| 지식 한계 | 학습 데이터 범위 | 외부 지식 접근 |
| 토론 품질 | 변동적 | 안정적 |
MADKE 토론 예시
질문: "2024년 한국 경제 성장률 전망은?"
지식 풀 검색: IMF 보고서 2.3% 전망, 한국은행 전망 2.1%, OECD 전망 2.2%
Agent A (지식 기반 응답): "IMF 보고서에 따르면 2.3%로 전망되지만, 한국은행은 더 보수적인 2.1%를 제시했다."
Agent B (보완): "OECD 전망 2.2%도 고려하면, 대체로 2.1-2.3% 범위로 수렴한다. 주요 기관 간 큰 차이가 없다."
최종 답변: "주요 기관들의 전망을 종합하면 2024년 한국 경제 성장률은 약 2.1-2.3%로 예상된다. (출처: IMF, 한국은행, OECD)"
지식 풀 구성
| 유형 | 예시 |
|---|---|
| 팩트 데이터 | 통계, 수치, 날짜 |
| 전문 지식 | 논문, 보고서 |
| 도메인 지식 | 의학, 법률, 기술 |
| 최신 정보 | 뉴스, 업데이트 |
지식 풀 업데이트
토론 중 새로운 정보가 발견되면 풀에 추가:
토론 중 — Agent A: "최근 연구에 따르면 X라는 새로운 발견이..."
검증 — Agent B: "출처를 확인해보니 신뢰할 수 있는 논문이다."
지식 풀 업데이트 — 새로운 팩트 추가: "X 현상 발견 (출처: Nature 2024)"
구현 구조
class MADKE:
def __init__(self, agents, knowledge_pool):
self.agents = agents
self.knowledge_pool = knowledge_pool
def debate(self, question, max_rounds=3):
# 1. 관련 지식 검색
relevant_knowledge = self.knowledge_pool.search(question)
# 2. 지식 기반 초기 응답
responses = {}
for agent in self.agents:
responses[agent.id] = agent.generate(
question=question,
context=relevant_knowledge
)
# 3. 토론 라운드
for round in range(max_rounds):
for agent in self.agents:
# 추가 지식 검색 가능
additional_knowledge = self.knowledge_pool.search(
agent.get_query()
)
responses[agent.id] = agent.respond(
question=question,
knowledge=relevant_knowledge + additional_knowledge,
others=responses
)
# 새로운 정보 발견 시 풀에 추가
if agent.has_new_finding():
self.knowledge_pool.add(agent.new_finding)
# 4. 최종 답변
return self.synthesize(responses)장점
- 일관성: 모든 에이전트가 같은 정보 기반
- 정확성: 외부 지식으로 할루시네이션 감소
- 투명성: 출처 명시 가능
- 확장성: 지식 풀 확장으로 역량 증가
한계
- 지식 풀 품질: 잘못된 정보가 있으면 전체에 영향
- 검색 정확도: 관련 지식을 찾지 못할 수 있음
- 업데이트 비용: 지식 풀 유지 관리 필요
관련 개념
- Multi-Agent Debate: 기본 토론 구조
- RAG: 지식 검색 기술
- LLM Agent Survey: 협력 구조