ReadRiddle 개발기 - 4

Cookie Baking·2025년 1월 13일

AI 부트 캠프 TIL

목록 보기
39/42

중간발표 준비기

Software Architecture Design

본 프로젝트에서는 웹 개발/AI 학습을 원하는 사용자가 챗봇 / 시험지 형식을 통해
원하는 지식을 학습하거나 학습한 지식의 깊이를 확인해 볼 수 있는 서비스를 제공하고자 합니다.

데이터 셋
범위 : AI 부분 스파르타 노션 교재, 교재 기반 실제 코드 개발 학습시에 도움이 될 Django, React, DRF 공식 문서

Splits
공식 문서 -> 기술 질문 챗봇에 적합한 Retriever 선택
스파르타 노션 교재, 오픈 소스 -> 직접 프롬프트에 불러오기

채팅 세션
DB를 관리하기 편한 형태의 구조로 설계 후 저장방식 설정 (채팅 여러개를 각각을 한 엔티티에 저장이 아닌 한 세션을 한 엔티티에 저장)


AI 부분 정리 사항

데이터 셋 설정 : 
AI 부분 스파르타 노션 교재 
-> 토글로 잠겨져 있는 데이터 존재 (크롤링 시에 직접 풀 수 있는 코드 추가)
교재 기반 실제 코드 개발 학습시에 도움이 될 오픈소스 
-> 코드 부분을 감지 못하는 이슈 존재 (pre tag 감지를 이용한 크롤링 코드 추가)
Django, DRF,  React 공식 문서 
-> 크롤링 시에 일부 코드 누락 문제 존재, 코드마다 각각 데이터가 존재하는 이슈 존재 ( <code_snipet> 태그로 코드 추출)


AI 모델이 가져오는 문맥의 범위 지정:
청크 사이즈 : 2000
청크 오버랩 : 200
이유 : 
	길이가 긴 공식문서의 텍스트를 분할된 청크로 저장하는 과정에서 기존의 청크 사이즈인 200, 오버랩 20을 지정한다면 그 크기가 
커지는 문제가 발생
이는 불필요하게 부여한 청크 사이즈와 오버랩 때문이라 판단
때문에 청크 사이즈와 오버랩을 늘려 DB에 저장되는 공식 문서 내용은 유지되며 중복성은 줄여 불필요하게 큰 청크들의 갯수를 줄여 해결


시험지 형태의 학습과 챗봇 형식의 학습 방법 구분
이전에는 서비스 측에서 관련된 질문을 생성하는 방식을 채팅 학습에서 사용했었는데 변경한 사항으로는 서비스 측에서 생성하는 질문은 시험지 형식으로 학습할 수 있는 섹션으로 이동합니다. 채팅 학습에서는 폼 형식의 퀴즈를 생성하는 방식에 접근하기 전 간단한 궁금증을 해소하거나 정확한 정보를 얻기를 원하는 사용자들에게 유도하는 섹션으로 이용하고자 합니다.

공식문서 크롤링 데이터에 중복된 데이터 및 코드 누락 문제
중복 url 제거, <code_snipet> 태그로 코드 추출

DBeaver 에서 docker-compose로 실행한 PostgresSQL DB 연결 시 EOFException 오류 발생
yml 파일에 설정된 포트번호에서 컨테이너 내부 포트를 PostgresSQL의 포트 5432번으로 설정하지 않아 발생하였고, 외부에서 접근하는 호스트의 포트번호는 그대로 유지한 상태에서 컨테이너 내부 포트번호만 변경해서 수정 5480:5480 --> 5480:5432

AI

BE

FE


Trouble Shooting 1

문제 : 개별 피드백 화면 연결 못함 문제

원인 : 로직의 복잡성 때문에 프론트에서의 처리에 불편함을 겪었음
과거 개별 피드백 요청 시에 피드백만 나오는 구조였으며 애초에 질문을 생성할 때 모든 선지와 정답을 갖고 있어야 했음

해결 플로우 :

  • 개별 피드백 요청 시에만 response에서 정답을 가져옴
  • 가시적으로 정답 여부를 표현하기 위해 배경 색으로 정답 구분

Trouble Shooting 2

문제 : 채팅형 퀴즈에서 옵션값 변경 오류 해결 (동기성 문제)

원인 : 컴포넌트 끼리의 연결에서 바뀐 값을 동기화가 안됨, const 로는 보장되지 않는 동기성 문제가 있음

해결 플로우 :

  • 컴포넌트끼리의 연결은 useEffect로 동기화 적용해줌
  • const의 동기성 문제는 버튼을 통해 동기화 적용해줌

0개의 댓글