본문으로 바로가기
*2월 한정! 홈페이지 신규 제작 20% 할인 + AI 챗봇 무료 제공지금 신청
ai-automation2026년 2월 23일·조회 48

챗봇 대화 기록을 통합 관리하는 3단계 컨텍스트 시스템 설계하기

여러 채널에 흩어진 AI 챗봇의 메모리를 하나로 연결하는 아키텍처 구현 사례

SP

SpacePlanning

SpacePlanning AI Team

## 왜 챗봇에게 '기억'이 필요할까? 여러분은 카카오톡으로 AI 챗봇과 대화하다가, 웹사이트에서 같은 챗봇을 만났을 때 처음부터 다시 설명해야 했던 경험이 있나요? 이것이 바로 전통적인 멀티채널 챗봇 시스템의 가장 큰 문제점입니다. ### 기존 시스템의 한계 대부분의 챗봇 시스템은 채널별로 대화 기록을 분리 저장합니다: - 텔레그램 봇의 대화 기록 - 웹 API를 통한 대화 기록 - 슬랙 봇의 대화 기록 이렇게 되면 사용자는 채널을 바꿀 때마다 같은 질문을 반복해야 하고, AI는 과거 대화 맥락을 잃어버립니다. ## 통합 대화 컨텍스트 시스템 설계 ### 핵심 아이디어: 단일 대화 저장소 모든 채널의 대화를 하나의 테이블에 저장하되, `channel_type`과 `user_id`로 구분합니다: ```sql CREATE TABLE unified_conversations ( id SERIAL PRIMARY KEY, user_id VARCHAR(255), channel_type VARCHAR(50), -- 'telegram', 'api', 'slack' 등 role VARCHAR(20), -- 'user' or 'assistant' content TEXT, created_at TIMESTAMP ); ``` 이렇게 하면 사용자가 어느 채널에서 접속하든 전체 대화 이력을 조회할 수 있습니다. ### 3단계 계층 컨텍스트 전략 하지만 수천 개의 대화를 매번 AI에게 전달할 수는 없습니다. 토큰 비용과 응답 속도 문제 때문입니다. 이를 해결하기 위한 3-Tier 전략: **Tier 1: 최근 대화 (Raw Context)** - 최근 10쌍(20개 메시지)은 원문 그대로 제공 - 즉각적인 대화 흐름 유지 **Tier 2: 중기 대화 요약 (Summary Context)** - 최근 100개 대화를 요약본으로 압축 - "사용자는 Python Flask 환경에서 인증 오류를 겪고 있음" 같은 핵심만 추출 **Tier 3: 장기 기억 검색 (RAG Context)** - 과거 모든 대화를 벡터 임베딩으로 저장 - 현재 질문과 유사한 과거 대화를 검색해서 제공 ### 구현 핵심 코드 ```python def get_conversation_context(user_id: str, current_query: str): # Tier 1: 최근 대화 recent = db.query( "SELECT role, content FROM unified_conversations " "WHERE user_id = %s ORDER BY created_at DESC LIMIT 20", [user_id] ) # Tier 2: 요약 조회 summary = db.query( "SELECT summary FROM conversation_summaries " "WHERE user_id = %s AND message_count <= 100", [user_id] ) # Tier 3: RAG 검색 query_embedding = embed_text(current_query) similar_convs = vector_search(query_embedding, top_k=5) return { "recent": recent, "summary": summary, "related": similar_convs } ``` ### 기존 데이터 마이그레이션 이미 운영 중인 시스템이라면 기존 대화 기록을 통합해야 합니다: ```python # 채널별 테이블에서 통합 테이블로 이전 for bot_name, old_table in legacy_tables.items(): conversations = db.query(f"SELECT * FROM {old_table}") for conv in conversations: db.insert( "unified_conversations", user_id=conv['user_id'], channel_type=infer_channel(bot_name), role=conv['role'], content=conv['message'] ) ``` ## 실제 효과와 이점 ### 1. 크로스 채널 연속 대화 사용자가 텔레그램에서 "Python 설치 방법 알려줘"라고 물었다면, 나중에 웹 채팅에서 "아까 말한 방법으로 했는데 오류나"라고 해도 AI가 맥락을 이해합니다. ### 2. 누적 학습 효과 같은 질문을 여러 사용자가 할 때, 과거 성공적인 답변을 RAG로 찾아 일관성 있는 응답을 제공합니다. ### 3. 비용 최적화 - Tier 1만 사용: ~500 토큰 - 전체 대화 전달: ~5,000 토큰 3단계 전략으로 90%의 컨텍스트 품질을 유지하면서 80%의 비용을 절감할 수 있습니다. ## 마치며 이 시스템은 PostgreSQL + Python 환경에서 구현했지만, MongoDB나 Redis를 활용해도 동일한 패턴을 적용할 수 있습니다. 핵심은 **채널 통합**, **계층적 메모리**, **벡터 검색**의 조합입니다. 다음 단계로는 사용자 세션 관리, 대화 주제 자동 분류, 장기 메모리 압축 알고리즘 최적화 등을 고려해볼 수 있습니다.
#챗봇#AI#대화시스템#RAG#컨텍스트관리#멀티채널
공유하기:

이 주제에 대해 더 알아보고 싶으신가요?

프로젝트 상담을 통해 맞춤형 솔루션을 제안받으세요.