1.8 KiB
1.8 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 조회 함수 추가 (신규 구현)
- 파일:
rb8001/app/state/database.py - 함수명:
get_recent_conversations(user_id, limit=10) - 쿼리:
SELECT user_message, assistant_response FROM conversation_logs
3.2 route_message 수정 (라인 115-119)
- 기존:
context = {"user_id", "channel", "robeing_id"} - 추가:
"recent_conversations": await db.get_recent_conversations(user_id) - LLM handler: Dict[str, Any] 타입 받음 (라인 270-276)
4. 주의사항
- UUID 처리: Frontend(UUID) vs Slack(변환 필요) 구분
- 성능: PostgreSQL 조회 추가로 인한 지연 고려
- 순서: 최근 대화를 먼저, 벡터 검색을 보조로
5. 추가 이슈
- ChromaDB telemetry 오류 발생 중 →
ANONYMIZED_TELEMETRY=false설정 필요 - user_id UUID 타입 처리 필요 (Frontend=UUID, Slack=변환)
- 현재 LLM은 "internal" 사용 (외부 서비스 아님)