분류 전체보기

✅ 좋아요 로직/** * 좋아요 추가 */@Transactionalpublic void addLikeToAnswer(LikeServiceRequest request) { createLike(request); // Like 객체 생성 및 저장 Answer answer = answerRepository.findById(request.targetId()) .orElseThrow(() -> AnswerNotFoundException.EXCEPTION); answer.addLikeCount();// Answer의 likeCount 1증가 // 수정 반영 answerRepository.edit(answer);}먼저 Like 객체를 만들어 Like 테이블에 저장하고 관련..
✅ 기존 방식의 문제점while (!categories.isEmpty()) { // 1. AI가 질문 생성 Map createdQuestions = questionAIService.createQuestions(categories); for (String categoryName : createdQuestions.keySet()) { String question = createdQuestions.get(categoryName); // 2. 질문 중복 검증 if (!questionAIService.isSimilarTextExist(question)) { questionAIService.saveQuestion(categoryName, question); ..
✅ 질문 생성 시나리오1️⃣ 질문 생성 23시 30분에 질문 생성 스케줄링이 시작.(하루에 카테고리 별로 1개씩 총 6개 질문 생성)AI에게 질문 생성을 요청하고 받아온 질문의 중복을 검증.질문 생성은 GPT 4o mini 모델에 의해 이루어짐.검증 과정은 text-embedding-3-large 임베딩 모델과 Redis Vector Database를 통해 이루어짐.통과한 질문들은 데이터베이스에 저장한다. Redis Vector Database엔 질문의 벡터 값, MySQL에는 질문을 저장MySQL의 question 테이블에는 question_status라는 컬럼이 존재하는데 이는 세 가지의 Enum값을 가짐CREATED: 질문이 막 생성된 상태ACTIVATED: 질문이 활성화된 상태INACTIVATED..
✅ 개요이전 포스트에서는 생성된 질문의 중복여부를 검증하기 위한 텍스트 임베딩 모델을 조사하고 결정하였다.그런데 여기서 고려해야할 한가지 문제가 있다.질문들은 매일 6개씩 새로 생겨 누적된다. 질문의 중복을 검증하려면 이전의 생성된 모든 질문들을 텍스트 임베딩 모델을 돌려야하는데 서비스가 유지될 수록 그 비용이 배로 늘어갈 것이다. 따라서 생성된 질문들의 벡터값을 별도로 저장할 수 있는 곳이 필요하다.   1. RDBMS? -> ❌현재 프로젝트에서는 RDBMS로 MySQL을 사용하고 있다. 따라서 질문들의 벡터값을 MySQL에 저장한다면 데이터 일관성과 접근성을 높인다는 장점이 있다.하지만 텍스트 임베딩을 통해 만들어진 벡터는 상당한 고차원 데이터이다. 이번 프로젝트에서 사용하는 OpenAI의 text-..
jaehee1113
'분류 전체보기' 카테고리의 글 목록 (5 Page)