Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

version 2.7.0 #193

Merged
merged 2 commits into from
Jul 23, 2024
Merged

version 2.7.0 #193

merged 2 commits into from
Jul 23, 2024

Conversation

zbqmgldjfh
Copy link
Member

TODO : new feature!

공지 기반의 신규 RAG 시스템 구축 완료

* setting: Spring AI 1.0.0-M1 의존성 설정 완료

* test: Spring AI 질문 인수테스트 작성

* feat(Member): Member Entity question_count 필드 추가

* feat(ErrorCode): AI관련 error code 추가

* feat(RAGConfiguration): SimpleVectorDB 구현

* feat: RAG API 구현

* feat(RAGQueryAiModelAdapter): Flux를 사용한 응답 stream 구현

* test(AiAcceptanceTest): AI에게 질문하는 인수테스트 작성

* feat(InMemoryQueryAiModelAdapter): 테스트 용도의 InMemory AI model 응답 Fake 구현

* feat(AiAcceptanceTest): 가능한 요청 횟수를 넘긴 경우 TOO_MANY_REQUESTS를 반환받는다

* fix(RAGQueryApiV2): 질문 API의 produces를 text/event-stream 으로 변경

* fix(InMemoryQueryAiModelAdapter): InMemory model의 응답 수정

* feat(AiAcceptanceTest): 질문 한도수 초과시 예외가 발행하는 인수테스트 작성

* feat(RAGEventAdapter): RAG 시스템의 이벤트 포트 별도로 분리

기존에는 service 내부에서 그냥 Event 를 raise 하였는데, 이 방식 보다는 포트에 전달하고 Adapter 에서 raise 하도록 변경

* feat: dev profile ai 설정 추가

* feat(InMemoryQueryAiModelAdapter): 기본 응답 부분을 단건 문자로 분리

* feat(RAGQueryApiV2): API를 POST에서 GET으로 변경

* chore: 테스트 코드에 필요없는 예외 제거

* test(UserRepositoryTest): 사용자 질문 토큰감소 리포지토리 테스트 추가

* feat(User): Deprecated 된 Where 에너테이션을 SQLRestriction 으로 변경

* refactor(NoticeQueryRepositoryImpl): 중복 문자열 상수로 추출
* setting: Chroma Vector DB 의존성 설정

* feat: 환경설정 파일 수정

* feat(QueryVectorStoreAdapter): QueryVectorStoreAdapter를 ChromaVectorStore를 사용하여 구현

* feat(Notice): Notice 테이블에 embedded boolean 필드 추가

해당 공지가 임베딩 되었는지 확인하는 컬럼을 추가한다

* feat(NoticeTextParserTemplate): 공지의 본문, 제목, 아이디를 파싱하는 ParserTemplate 구현

* test: ChromaDB test container 설정

* feat(NoticeApiClient): 단일 페이지를 scrap하는 requestSinglePageWithUrl 구현

* fix(NoticeJdbcRepository): 공지에 추가된 embedded 필드를 위해 bulk insert method 일부 수정

* feat(NoticeRepository): updateNoticeEmbeddingStatus, findNotYetEmbeddingNotice 메서드 구현

* fix(KuisHomepageNoticeTextParser): 본문을 포함하는 추가 테그를 파싱하는 로직 추가

* feat(KuisHomepageNoticeInfo): textParser 의존성 추가

* feat(ChromaVectorStoreAdapter): ChromaVector 구현

* test(KuisHomepageNoticeScraperTemplateTest): 임베딩 테스트 scrapForEmbedding 작성

* feat(RAGConfiguration): RAG 환경설정 구현

* feat(NoticeEmbeddingUpdater): 공지 embedding을 위한 Updater 구현

* feat: 공지 updater 작업 수행 시간 변경

* chore: 설정파일에 collection-name 추가

* fix(ChromaVectorStoreAdapter): embedding 메서드 수정과 테스트 추가

* feat(ChromaVectorStoreAdapter): 유사도 임계치 제거

유사도가 낮아도 답변을 꼭 생성하는쪽으로 구현

* feat: 사용하지 않는 RestTemplateConfig 제거

* chore: Public 접근 제어자 제거

* feat(ChromaVectorStoreAdapter): Top-K 를 2로 변경

* feat(User): 한달 질문 가능 횟수를 3번으로 변경

* feat(UserUpdater#questionCountReset): 매달 마지막날 사용자 질문 카운트 초기화 작업 구현

* feat(UserRegisterNonChainingFilter): 사용자 중복 등록 예외 로그를 남기도록 처리

* feat(UserUpdater): 사용자 제거작업 중지

* setting: ai max token 1000으로 변경

* feat(RAGQueryApiV2): RAGQueryApi 문서화

* refactor: SecurityRequirement에서 상수를 사용하도록 변경

* feat(User): 사용자 질문 횟수 2로 제한

* feat(RAGConfiguration): 테스트용 ChromaVectorStore를 prod 환경에서도 bean으로 등록하도록 변경
@zbqmgldjfh zbqmgldjfh added the 🚀 Deploy Production deploy production server label Jul 23, 2024
@zbqmgldjfh zbqmgldjfh self-assigned this Jul 23, 2024
Copy link

Copy link

Unit Test Results

  45 files  +  4    45 suites  +4   40s ⏱️ -1s
232 tests +15  222 ✔️ +15  10 💤 ±0  0 ±0 
235 runs  +15  225 ✔️ +15  10 💤 ±0  0 ±0 

Results for commit 1c8c99c. ± Comparison against base commit 22fca60.

This pull request removes 1 and adds 16 tests. Note that renamed tests count towards both.
com.kustacks.kuring.worker.scrap.KuisHomepageNoticeScraperTemplateTest ‑ Kuis 공지의 최신 페이지를 스크래핑한다.
com.kustacks.kuring.acceptance.AiAcceptanceTest ‑ [v2] 가능한 질문 횟수를 모두 사용한 경우 AI에게 질문을 할 수 없다
com.kustacks.kuring.acceptance.AiAcceptanceTest ‑ [v2] 사용자가 궁금한 학교 정보를 물어볼 수 있다
com.kustacks.kuring.ai.adapter.out.persistence.ChromaVectorStoreAdapterTest ‑ embedding이 성공하는지 확인
com.kustacks.kuring.notice.adapter.out.persistence.NoticeRepositoryTest ‑ Embedding 된 공지의 상태를 변경할 수 있다
com.kustacks.kuring.notice.adapter.out.persistence.NoticeRepositoryTest ‑ Embedding 된 공지의 상태를 성공적으로 영속화 한다
com.kustacks.kuring.notice.adapter.out.persistence.NoticeRepositoryTest ‑ jdbc를 사용한 bulk insert 테스트
com.kustacks.kuring.notice.adapter.out.persistence.NoticeRepositoryTest ‑ 지정된 기간 동안 Embedding 되지 않은 공지를 찾아올 수 있다
com.kustacks.kuring.notice.domain.NoticeTest ‑ 공지 임베딩 여부 확인 테스트
com.kustacks.kuring.user.adapter.out.persistence.UserRepositoryTest ‑ 질문 카운트 감소가 성공적으로 영속화 되고, 0이 되면 IllegalStateException을 발생시킨다
com.kustacks.kuring.user.domain.UserTest ‑ 질문 카운트가 0보다 큰 경우에만 질문이 가능하다
…

@zbqmgldjfh zbqmgldjfh merged commit 88b3f36 into main Jul 23, 2024
5 checks passed
@zbqmgldjfh zbqmgldjfh deleted the develop branch July 24, 2024 02:38
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
🚀 Deploy Production deploy production server
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant