Skip to content

feat(ai): Ask Chat 히스토리 저장/조회 및 RAG 기반 추가#196

Merged
1Seob merged 10 commits into
developfrom
feat/ask-chat-rag
Jul 13, 2026
Merged

feat(ai): Ask Chat 히스토리 저장/조회 및 RAG 기반 추가#196
1Seob merged 10 commits into
developfrom
feat/ask-chat-rag

Conversation

@1Seob

@1Seob 1Seob commented Jul 13, 2026

Copy link
Copy Markdown
Collaborator

📝 요약(Summary)

  • 물어보기 기능을 위한 채팅 세션/메시지 저장 기반을 추가했습니다.
  • 히스토리 목록/상세 조회 API를 추가했습니다.
  • Ask Chat 답변을 RAG 문서로 저장하고 pgvector embedding 검색에 활용할 수 있는 기반을 추가했습니다.

주요 변경사항

  • ask_chat_sessions, ask_chat_messages 테이블 및 JPA 엔티티 추가
  • Ask Chat 히스토리 조회 API 추가
    • GET /ask-chat/histories
    • GET /ask-chat/histories/{sessionId}
  • ask_chat_rag_documents 테이블 추가
    • pgvector extension 활성화
    • VECTOR(1536) embedding 컬럼
    • HNSW cosine index
    • source/version unique constraint
  • RAG 문서 저장소 및 vector 검색 repository 추가
  • Spring AI OpenAI embedding 설정 및 embedding client 추가
  • 완료된 assistant 메시지를 RAG 문서로 색인하는 indexing service 추가
  • 히스토리 조회, embedding client, RAG indexing service 단위 테스트 추가

검증

  • git diff --check
  • ./gradlew.bat --no-daemon compileJava
  • ./gradlew.bat --no-daemon test --tests "com.devkor.ifive.nadab.domain.askchat.application.AskChatHistoryQueryServiceTest"
  • ./gradlew.bat --no-daemon test --tests "com.devkor.ifive.nadab.domain.askchat.infra.AskChatEmbeddingClientTest"
  • ./gradlew.bat --no-daemon test --tests "com.devkor.ifive.nadab.domain.askchat.application.AskChatRagIndexingServiceTest"

참고 / 리스크

  • 실제 채팅 전송/답변 생성 API와 RAG retrieval 연결은 후속 PR 범위입니다.
  • DB migration에서 pgvector extension을 사용하므로 배포 DB에 extension 생성 권한/지원 여부 확인이 필요합니다.

🔗 Related Issue

  • Closes:

💬 공유사항

✅ PR Checklist

PR이 다음 요구 사항을 충족하는지 확인하세요.

  • PR 제목을 커밋 메시지 컨벤션에 맞게 작성했습니다.

1Seob added 10 commits July 13, 2026 17:22
Ask Chat 세션과 메시지 저장을 위한 Flyway migration 및 JPA 엔티티 추가, 대화 상태와 메시지 역할/상태 enum 정의, LLM provider/model
및 토큰 사용량 기록 필드 추가
AskChatSessionRepository와 AskChatMessageRepository를 추가해 세션 소유권 확인, 활성 세션 조회, 히스토리 목록 조회, 세션별 메시지 조회,
완료된 assistant 메시지 수 집계 지원
AskChatHistoryController와 AskChatHistoryQueryService를 추가해 히스토리 목록 및 상세 조회를 지원하고, 세션 소유권 검증과
ASK_CHAT_SESSION_NOT_FOUND 오류 응답 처리 추가
AskChatHistoryQueryServiceTest를 추가해 히스토리 목록 pagination, 첫 사용자 메시지 제목 매핑, 상세 메시지 시간순 조회, 세션 소유권 실패,
잘못된 page/size 요청 검증
ask_chat_rag_documents 테이블과 pgvector 기반 embedding 컬럼 및 HNSW 인덱스를 추가하고, RAG 문서
source/metadata/embedding 상태 관리를 위한 엔티티와 enum 추가
AskChatRagDocumentRepository와 AskChatRagVectorRepository를 추가해 RAG 문서 중복 조회, embedding 상태 갱신, 사용자 및
관심사 기준 pgvector 유사도 검색 지원
Ask Chat RAG용 embedding 설정과 Spring AI OpenAiEmbeddingModel 호출 래퍼를 추가해 embedding model/version 관리와
pgvector 저장용 벡터 변환 지원
완료된 assistant 메시지를 RAG 문서로 저장하고 embedding 생성 후 pgvector 컬럼을 갱신하는 indexing 흐름 추가
AskChatRagIndexingService의 정상 색인, 비대상 메시지 스킵, 중복 version 스킵, embedding 실패 마킹, 메시지 미존재 예외 검증
Ask Chat RAG migration의 vector extension 사용으로 CI 테스트 Flyway migration이 실패하던 문제를 해결하기 위해
Testcontainers PostgreSQL 이미지를 pgvector/pgvector:pg16으로 변경
@coldsunn

Copy link
Copy Markdown
Collaborator

고생하셨어요!

@1Seob 1Seob merged commit e9de8a3 into develop Jul 13, 2026
1 check passed
@1Seob 1Seob deleted the feat/ask-chat-rag branch July 13, 2026 10:34
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants