DOCS/plans/250831_rb8001_postgresql_context_integration.md
happybell80 b9a90ca48f docs: rb8001 PostgreSQL 통합 계획 - 확인된 정보로 완전 업데이트
- 테이블 컬럼명 정정: message, response, timestamp
- DB 파일 경로: /home/happybell80/ivada_project/rb8001/app/state/database.py
- LLM: Gemini 2.5 Flash Lite 확인
- 핵심 문제: gemini_handler.py가 context 딕셔너리 무시
2025-08-31 15:04:31 +09:00

2.0 KiB

rb8001 PostgreSQL 대화 기록 LLM 컨텍스트 통합 계획

작성일: 2025-08-31
작성자: 51123 서버 관리자
상태: 🟡 계획 수립
목표: ChromaDB 벡터 검색과 PostgreSQL 최근 대화를 모두 LLM 프롬프트에 포함


1. 현재 문제

  • 현상: rb8001이 ChromaDB 벡터 검색만 참조하여 엉뚱한 답변
  • 원인: PostgreSQL conversation_logs의 최근 대화 미참조
  • 영향: 직전 대화 컨텍스트 손실, 일관성 없는 응답

2. 기술 분석

현재 구조 (확인 완료)

  • router.py 라인 115-119: context에 user_id, channel, robeing_id만 포함
  • _save_conversation(): PostgreSQL, ChromaDB 둘 다 저장 (구현됨)
  • PostgreSQL 조회 함수: 없음 (ConversationLog 모델만 정의)

수정 필요 부분

  • 파일: /home/heejae/rb8001/app/router/router.py
  • 함수: route_message() 내 LLM 컨텍스트 구성 부분

3. 구현 계획

3.1 PostgreSQL 조회 함수 추가 (신규 구현)

  • 파일: /home/happybell80/ivada_project/rb8001/app/state/database.py
  • 함수명: get_recent_conversations(user_id, limit=10)
  • 쿼리: SELECT message, response, timestamp FROM conversation_logs WHERE user_id = %s ORDER BY timestamp DESC

3.2 중요: gemini_handler.py 수정 필요

  • 문제: router.py에서 전달한 context 딕셔너리는 무시됨 (gemini_handler.py:87)
  • 해결: gemini_handler.py에서 context['recent_conversations'] 사용하도록 수정
  • 프롬프트: {system}{memory}{recent_chats}\n\n사용자: {message}

4. 주의사항

  • UUID 처리: Frontend(UUID) vs Slack(변환 필요) 구분
  • 성능: PostgreSQL 조회 추가로 인한 지연 고려
  • 순서: 최근 대화를 먼저, 벡터 검색을 보조로

5. 추가 이슈

  • ChromaDB telemetry 오류 발생 중 → ANONYMIZED_TELEMETRY=false 설정 필요
  • user_id UUID 타입 처리 필요 (Frontend=UUID, Slack=변환)
  • LLM: Gemini 2.5 Flash Lite (DEFAULT_LLM_MODEL=gemini-2.5-flash-lite)