분류 전체보기 121

[논문 Review] Development of an Automated ESG Document Review System using Ensemble-Based OCR and RAG Technologies

ESG 관련 내용은 제하고, 졸업 프로젝트에 필요한 RAG 기술 관련 내용을 중심으로 정리했다.Technology Overview (only about RAG)1. RAG 작동 과정Data Gathering(데이터 수집): 다양한 원천 데이터(PDF, TXT, CSV, 웹 URL 등)를 사용해 LLM에 최신 지식이나 심층 지식 전달Data Loading: 수집한 데이터를 시스템으로 불러오는 단계 (데이터 구조 파악, 불필요한 텍스트 제거 등)Data Splitting: 데이터를 Chunk 단위의 작은 조각으로 나누는 단계. LLM에 불필요한 정보가 제공되는 것을 최소화. (다만 청크 사이즈가 너무 작으면 핵심 정보 누락, 텍스트 맥락의 모호성 발생)Data Embedding: 청크 단위로 분할된 텍스트를..

[논문 Review] 복지 정책 정보 제공을 위한 RAG 기반 대화형 시스템 개발

연구 목적1. LLM의 한계사용자가 정확한 용어를 알고 있어야 함검색 결과 중 원하는 정보를 직접 찾아야 함2. RAG 도입의 기대효과정책 정보에 대한 접근성 향상자연어 기반 질의응답 시스템을 통해 정확하고 관련성 높은 정보 제공복잡한 정책 내용을 이해하기 쉬운 형태로 제공최신 정보를 실시간으로 반영할 수 있는 시스템 구축연구 내용1. 사용 기술(1) RAG(Retriever-Augmented Generation)대형 언어 모델의 생성 능력과 외부 지식베이스를 결합하는 기술사용자 쿼리와 관련된 문서나 정보를 외부 지식베이스에서 검색하는 Retriever, 검색된 정보와 쿼리를 바탕으로 응답을 생성하는 Generator로 나뉜다장점 : 외부 지식 베이스를 활용한다최신 정보를 반영할 때, 모델을 재학습할 필..

[운영체제 실습] Scheduling Practice

운영체제 project를 시작하기 전, 교안에 있는 실습 자료로 sceduling 내용에 관한 practice를 진행했다. practice 01 In xv6, yield is implemented but it is not the system call.First, implement yield system call so that user can call yield. (yield gives up its CPU)Make a user program in xv6 that created child process with fork(), and show that parent and child process print "Parent" and "Child" respectively in loop.  문제에서 언급된 대로, y..

[SpringBoot/Java] JavaMailSender로 인증 메일 전송하기

회원가입 및 로그인 기능을 구현하면서, 인증코드를 담은 메일을 보내는 기능을 구현해야 했다. JavaMailSender를 이용하면 어렵지 않게 구현할 수 있다. 크게 아래 두 가지 기능을 구현해 보았다.1. 사용자의 이메일로 6자리의 인증코드를 담은 메일 전송  - 인증 코드 생성  - 인증 코드 저장  - 메일 전송2. 사용자가 입력한 코드가 저장된 인증코드와 일치하는지 확인  구현은 아래와 같이 했다. 우선 build.gradle 파일에 JavaMailSener를 사용하기 위한 의존성을 추가해 준다. /** build.gradle */dependencies { // java mail sender 의존성 추가 implementation 'org.springframework.boot:sprin..

[SpringBoot/오류 해결] Maria DB에 table이 추가되지 않는 문제

Maria DB를 활용하여 User 관련 기능들을 개발하던 중, user table이 DB에 추가되지 않는 문제가 발생했다. 이상한 점은 refresh token table은 잘 추가가 되었는데, User table만 추가되지 않았다는 점이다. 아래 코드는 각각 refresh token과 user에 관한 코드이다. /** RefreshToken.java **/@NoArgsConstructor@Getter@Entitypublic class RefreshToken { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name="id", updatable=false) private Long id; @Column(name..

[SpringBoot/오류 해결] lombok 작동 관련 문제 해결

jwt 토큰 관련 설정을 위한 코드를 작성하던 중 아래와 같은 오류를 마주했다.Provider.java:71: error: cannot find symbol .setSigningKey(jwtProperties.getSecretKey()) ^ symbol: method getSecretKey() location: variable jwtProperties of type JwtProperties jwtProperties는 JwtProperties class의 object였는데, JwtProperties class는 아래와 같이 정의되어 있었다. 위 오류에서는 getSecretKey method에 관한..

[프로그래머스/Java] 퍼즐 조각 채우기(BFS/DFS) 풀이

프로그래머스 알고리즘 고득점 kit의 BFS/DFS 파트의 문제인 '퍼즐 조각 채우기'를 자바로 풀어보았다.https://school.programmers.co.kr/learn/courses/30/lessons/84021# 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr   접근 자체가 어렵다기보다는 그냥 조건이 아주 많고, 코드가 매우 복잡해서 하면서도 이게 맞나 하는 의구심이 계속 드는 문제이다. 사실 DFS로 접근해야 한다는 것만 알고 있으면 퍼즐을 어떻게 파악해야 할지는 어렵지 않은데, 이걸 어떻게 저장하고 비교하는지 방법을 정하는 게 어려웠다. 방법을 정해도 너무 복잡해서 뭔가 더 좋은 게 있을..

[SpringBoot/백엔드] application.yml 파일 내 민감한 정보 처리하기

application.yml 파일을 작성하다보면, password나 secret key 같이 함부로 공유되면 안되는 민감한 정보를 작성해야 할 때가 많다. 일반적으로 작성되는 application.yml 파일은 아래와 같다. spring: application: name: survey-server datasource: driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://127.0.0.1:3306/survey?serverTimezone=Asia/Seoul username: user password: user jpa: properties: hibernate: show_sql: true ..

[프로그래머스/Java] 여행경로(BFS/DFS) 풀이

프로그래머스 알고리즘 고득점 Kit 문제들 중 BFS, DFS 파트에 해당하는 '여행경로' 문제를 풀어보았다.https://school.programmers.co.kr/learn/courses/30/lessons/43164 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr   모든 티켓을 사용해야 하므로, 즉 모든 경로를 거쳐야 하므로, BFS가 아닌 DFS를 사용해야 한다는 것을 알 수 있다. 그리고 "ICN"으로부터 시작해야 하기 때문에, 재귀의 초기 조건을 "ICN"으로부터 출발하는 것으로 설정하고 출발지를 바꾸어가며 재귀를 한다. 재귀의 중단조건은 answer list의 크기인데, (tickets ..

[프로그래머스/Java] 아이템 줍기(BFS/DFS 문제) 풀이

프로그래머스 알고리즘 고득점 Kit의 BFS/DFS 파트 문제 중 하나인 '아이템 줍기'를 자바로 풀어보았다. https://school.programmers.co.kr/learn/courses/30/lessons/87694 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr   문제를 보면 '최단 거리'를 구해야 하므로, BFS를 사용해야겠다는 판단은 쉽게 할 수 있었다. 하지만 어려운 점은 그려진 직사각형들의 가장 바깥쪽으로만 이동해야 한다는 점이다. 그래서 내가 처음에 접근한 방법은 주어진 모든 직사각형의 면적들을 순회하며 각 직사각형의 테두리는 1, 안쪽은 2로 표기하는 방법이다. 하지만 이렇게 하면..

728x90