반응형

분류 전체보기 82

Project: HowAbout - RAG

Project: HowAbout - Intro에서 언급된 데이팅 계획 생성에 있어 RAG 방식을 사용하기로 선정했다.  선정 이유는 Why: RAG를 사용 해야 할까?와 도채체 RAG는 뭘까?를 참고하면 된다.  기본적으로 생성 해야하는 로직은 아래와 같다.   사용자 혹은 클라이언트에서 오는 요청은 두 종류다.Dating Request: Dating에 대한 기본정보와 Theme이 들어있다. Dating 계획에 대한 추천 사항을 생성한다.Activity Request: Dating Request에 더해 Activity와 관련된 정보가 추가적으로 들어있다.Dating 계획에서의 특정 Activity에 대한 추천 사항을 생성한다.요청에 대한 Embedding을 진행한다.Embedding 모델의 경우 아래의 ..

AI/Projects 2024.08.16

Why: RAG를 사용 해야 할까?

도대체 RAG는 뭘까? 에서 설명 했듯이 RAG의 경우 일반적인 수준의 LLM을 서비스의 의도에 맞게 결과를 생성하게 만드는 생성방식이다. 그러면 이런 RAG를 사용하는 이유가 뭘까? RAG를 사용해야하는 이유는 아래와 같다.현실적인 문제시간: 프로젝트를 진행하는 목적은 다르겠지만 대부분의 프로젝트는 한정적인 시간을 가지고 있다. 반면에 기존의 LLM을 대체 할 수 있는 수준의 Model을 만드는데는 많은 시간이 든다. 규모: 지금 개인적인 현상황에 있어서 LLM을 만드는건 불가능하다. 기존의 성능을 내기 위한 데이터 확보 부터 구현과 테스트까지의 그 규모는 감당이 되지 않는다.신뢰성위의 문제들이 해결 된다해도 새로운 LLM을 처음부터 만드는 것은 신뢰성에 문제를 일으킨다. 현재 나온 LLM의 신뢰성이 ..

AI/Why? 2024.08.15

도대체 RAG는 뭘까?

Retrieval-Augmented Generation의 약자인 RAG는 모델이기보다는 하나의 생성형 AI를 구성하는 방식이라고 생각된다. 크게는 2개의 단계로 이루어져 있으며 해당 단계를 통해 사용자에게 개발자가 의도한대로 답변이 가도록 한다.물론 2개의 단계 안에서 작은 단위의 단계가 존재한다.  그래서 RAG의 흐름을 Retreival과 Generation 두 단계로 나누었을 때 아래와 같다. RetrievalEmbedding사용자가 입력한 Query를 Vector로 전환한다.SearchingVector로 전환된 내용을 바탕을 DB에서 Generation에 사용될 내용을 찾는다.GenerationQuery + Searched ResultsDB에서 반환된 내용을 Query와 함께 참고하여 생성을 한다..

Recursion - Basic, Permutation and Combinations

재귀 함수라고도 하는 Recursion은 함수에서 같은 함수를 다시 호출한다.  대표적인 예시는 아래의 링크에 들어가보면 알 수 있다.아래의 링크 이렇듯 아래의 링크를 무한정 누르게 되면 같은 함수가 수없이 반복이 되기 때문에 재귀 함수의 기본은 base case를 작성하여 더이상의 재귀가 발생하지 않도록 하는 점에 있다. 그래서 기본적인 Recursion의 구조는 아래와 같다. public static void perm(int depth) { if (M == depth) { for (int num : output) sb.append(num).append(" "); sb.append("\n"); return; } ..

알고리즘/이론 2024.08.14

Project: HowAbout - Intro

2023년 10~11월 2개월 동안 데이팅 웹서비스를 기획해서 만들었다. 디자이너 1명 프론트 2명 백엔드 4명으로 단순히 프로필 기반 매칭이 아닌 자신이 하고 싶은 데이팅을 작성하여 데이팅 또한 하나의 매칭 포인트로 사용될 수 있도록 만들었다. 하지만 여기서 문제가있었다. 당시 디자이너를 제외한 전원이 남자였고 6명 중 5명이 싱글이었는데 그래서인지 데이팅 계획 작성을 위한 테스트기간에 사용할 데이팅 예시를 작성하는데 있어 예상 보다 너무 많은 시간이 걸렸고 작성된 예시 데이팅 계획들도 심각한 수준이었다. 당시 그러한 모습들을 보며 생각했다. '데이팅 서비스를 이용하는 사람들은 대부분 싱글일 텐데 이 사람들에게 데이팅 계획을 작성하라는 것은 생각보다 무리한 요구겠구나' 그래서 당시 이런 문제를 어떻게 ..

AI/Projects 2024.08.13

Two Pointers: 백준 배열 합치기-11728

문제 유형: Two Pointer배열합치기정렬되어있는 두 배열 A와 B가 주어진다. 두 배열을 합친 다음 정렬해서 출력하는 프로그램을 작성하시오.작성 코드import java.util.Arrays;import java.util.Scanner;public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); StringBuilder stringBuilder = new StringBuilder(); int N = sc.nextInt(); int M = sc.nextInt(); int[] sorted = new int[N + M]; ..

알고리즘/JAVA 2024.08.09

Two Pointers: 백준 회문-17609

문제 유형: Two Pointers회문회문(回文) 또는 팰린드롬(palindrome)은 앞 뒤 방향으로 볼 때 같은 순서의 문자로 구성된 문자열을 말한다. 예를 들어 ‘abba’ ‘kayak’, ‘reviver’, ‘madam’은 모두 회문이다. 만일 그 자체는 회문이 아니지만 한 문자를 삭제하여 회문으로 만들 수 있는 문자열이라면 우리는 이런 문자열을 “유사회문”(pseudo palindrome)이라고 부른다. 예를 들어 ‘summuus’는 5번째나 혹은 6번째 문자 ‘u’를 제거하여 ‘summus’인 회문이 되므로 유사회문이다.여러분은 제시된 문자열을 분석하여 그것이 그 자체로 회문인지, 또는 한 문자를 삭제하면 회문이 되는 “유사회문”인지, 아니면 회문이나 유사회문도 아닌 일반 문자열인지를 판단해야..

알고리즘/JAVA 2024.08.09

Two Pointers: 백준 수 고르기-2230

문제 유형: Two Pointers수 고르기N개의 정수로 이루어진 수열 A[1], A[2], …, A[N]이 있다. 이 수열에서 두 수를 골랐을 때(같은 수일 수도 있다), 그 차이가 M 이상이면서 제일 작은 경우를 구하는 프로그램을 작성하시오.예를 들어 수열이 {1, 2, 3, 4, 5}라고 하자. 만약 M = 3일 경우, 1 4, 1 5, 2 5를 골랐을 때 그 차이가 M 이상이 된다. 이 중에서 차이가 가장 작은 경우는 1 4나 2 5를 골랐을 때의 3이 된다. 작성 코드import java.util.Arrays;import java.util.Scanner;public class Main { public static int N, M; public static int[] givenNums;..

알고리즘/JAVA 2024.08.09

Two Pointers: 백준 부분합-1806

문제 유형: Two Pointers + Sliding Windows부분합10,000 이하의 자연수로 이루어진 길이 N짜리 수열이 주어진다. 이 수열에서 연속된 수들의 부분합 중에 그 합이 S 이상이 되는 것 중, 가장 짧은 것의 길이를 구하는 프로그램을 작성하시오.작성 코드import javax.sound.midi.Sequence;import java.util.Scanner;public class Main { static Scanner sc = new Scanner(System.in); static int N, S; static int[] sequence; static void input() { N = sc.nextInt(); S = sc.nextInt();..

알고리즘/JAVA 2024.08.09
반응형