| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | |||
| 5 | 6 | 7 | 8 | 9 | 10 | 11 |
| 12 | 13 | 14 | 15 | 16 | 17 | 18 |
| 19 | 20 | 21 | 22 | 23 | 24 | 25 |
| 26 | 27 | 28 | 29 | 30 |
- java #문법
- sql #부트캠프 #내일배움캠프 #웹관리자 #도전 #학습
- html #css #부트스트랩 #웹사이트 #개발 #초보 #til #내일배움캠프 #스파르타코딩클럽
- java
- sql #내일배움캠프 #스파르타코딩클럽
- Today
- Total
목록전체 글 (37)
Hyeok의 웹 개발 블로그
1️⃣개요사용자의 자연어 요청을 단순 키워드가 아닌 의미 기반으로 분석하고, 이에 가장 적절한 강의를 추천하는 시스템이를 위해 OpenAi의 임베딩 모델을 사용해 강의 콘텐츠와 사용자 입력을 벡터로 변환하고, VecotorStore(PGVector)를 이용해 이 벡터 간의 유사도를 계산하여 가장 유사한 강의를 빠르게 찾는다.이 시스템은 정확한 추천뿐만 아니라, 사용자의 재질문이나 조건 변경에도 유연하게 대응할 수 있는 구조를 갖추고 있다.프로젝트 초기에는 벡터 저장 방식을 SimpleVectorStore를 사용했습니다. 하지만 프로젝트를 진행하며 PgVectorStore 로 변경하여 구현하였습니다.2️⃣기술 도입 배경🔹 임베딩의 필요성컴퓨터가 이해할 수 있도록 텍스트를 수치화강의 설명을 벡터로 변환해서..
✔️ 샷 기반 프롬프팅?- 'Shot' 은 프롬프터에 포함된 예시의 수를 나타낸다. - Zero-Shot Prompting : 예시가 제공되지 않으며, 모델은 사전 훈련된 지식에 전적으로 의존해야 한다.- One-Shot Prompting : 모델의 작업을 명확히 하기 위해 단일 예를 제공한다.- Few-Shot Prompting : 두 개 이상의 예가 포함되어 있어 모델이 패턴을 인식하고 더 정확한 응답을 제공할 수 있다.✔️ Zero-Shot Prompting- 제로샷 프롬프팅 은 가장 간단한 형태의 프롬프팅- 모델에 예시나 데모를 제공하지 않고 작업을 수행하라는 직접적인 지시를 내린다.- 즉, 모델은 사전 훈련된 지식에 전적으로 의존하여 작업 완료 방법을 파악해야한다. Prompt“문장의 감정을 분..
✅ 임베딩텍스트(문자)를 숫자 벡터로 변환하는 작업숫자로 변환된 벡터를 벡터 DB에 저장되어 나중에 유사한 질문 검색(RAG)등에 사용OpenAI의 대표 임베딩 모델 → text-embedding-ada-002✅ Spring OpenAI 임베딩Spring AI는 OpenAI의 텍스트 입베딩 모델 지원OpenAI의 텍스트 임베딩은 텍스트 문자열의 연관성을 측정임베딩은 부동 소수점 숫자로 구성된 벡터두 벡터 간의 거리로 연관성 측정 → 가까우면 연관성 높고, 멀면 연관성 낮다.✅ 필수 조건OpenAI 임베딩 모델에 엑세스 하려면 OpenAI로 API를 만들어야 한다.OpenAI API 키 페이지 에서 토큰 생성Spring AI 프로젝트는 openai.com 에서 얻은spring.ai.openai.api-ke..
✅ RAG (검색-증강 생성)RAG 란?RAG (Retrieval-Augmented Generation)는 대규모 언어 모델의 출력을 최적화하여 응답을 생성하기 전에 학습 데이터 소스 외부의 신뢰할 수 있는 지식 베이스를 참조하도록 하는 프로세스대규모 언어 모델 LLM 은 방대한 양의 데이터를 기반으로 학습되며 수십억 개의 매개 변수를 사용하여 질문에 대한 답변, 언어 번역, 문장 완성과 같은 작업에 대한 독창적인 결과를 생성RAG는 이미 강력한 LLM의 기능을 특정 도메인이나 조직의 내부 지식 기반으로 확장하므로, 모델을 다시 교육할 필요 XLLM 결과를 개선하여 다양한 상황에서 관련성, 정확성 및 유용성을 유지하기 위한 비용 효율적인 접근 방식RAG 가 중요한 이유?LMM → 챗봇 / 자연어 처리 (..
🔎 페이지네이션(Pagination)많은 데이터를 한 번에 다 보여주면 느려지니까, 적당히 나눠서 보여주는 방법 🔎 무한스크롤(Infinite Scroll)스크롤을 내릴 때마다 자동으로 데이터를 더 보여주는 방식 🔎 커서 기반 페이지네이션(Cursor Pagination)"어디까지 봤는지 표시"해서 그 다음 데이터를 보여주는 방식 🔎 오프셋 기반페이지 번호로 데이터를 나눠 보여줌 SELECT * FROM item ORDER BY created_at DESC LIMIT 10 OFFSET 100000000;이런 쿼리는 앞에 1억 개 데이터를 먼저 읽고 그 다음 10개를 준다.→ 점점 느려진다. 커서 기반"마지막으로 본 아이디(ID)"를 기억하고, 그 다음부터 보여준다.예:1페이지: id 1~1..
✅단위 테스트작은 코드 조각을 검증빠르게 수행격리된 방식으로 처리하는 자동화된 테스트👍좋은 테스트도메인 모델 및 알고리즘 ( Entity, Utill 클래스)- 노력 대비 단위 테스트의 가치가 매우 높다.- 해당 코드가 복잡하거나 중요한 로직을 수행해서 테스트의 회귀 방지 향상- 외부 의존성이 없어서 테스트 유지비를 낮추기 때문에 저렴👎 나쁜 테스트간단한 코드 (간단한 DTO, Utill) , @Getter, @Setter, @Builder 등등- 이러한 테스트는 가치가 없어서 할 필요 X컨트롤러 - 엔드투 엔트 테스트가 적합- 단위 테스트를 적용 X 더보기좋은 단위 테스트의 4가지 특성1. 회귀 방지 -> 기능 오류를 방지2. 리팩토링 내성 -> 리팩토링을 해도 테스트가 깨지지 않음3. 빠른 피드백..
✅단방향 연관관계단방향 연관관계는 아래와 같이 연관관계에 있는 두 객체 사이에 한 방향으로의 참조가 존재하는 상태- Team -> Member- Member -> TeamTeam 입장에서는 Member 와 1:N 연관관계를 가지지만, Member 입장에서는 Team 과 N:1 연관관계이고 어떤 방향이든 두 객체 사이의 한 방향의 참조만 존재한다면 모두 단방향 연관관계라 할 수 있다.✔ @OneToOne@OneToOne 연관관계는 두 테이블 / 객체가 1:1 연관관계일 때 사용- 1:1연관관계에 있는 객체간 참조 방향을 어떻게할지 잘 결정해야함.- 물리적으로 분리되어야하는 테이블인지 고민 (데이터의 생명주기 혹은 사용 패턴을 토대로 고민 가능)✔ @ManyToOne테이블상의 외래키 위치와 객체상의 참조 위..
✅영속성이란?영속성( 永(길게) 續(속하다) - Persistence)이란, 프로그램이 종료된 이후에도 데이터가 사라지지 않고 저장되는 성질을 말합니다.즉, 메모리(휘발성 공간)가 아닌 디스크(비휘발성 저장소)에 데이터를 영구히 보존하겠다라는 강력한 의지가 나타내기 위한 것입니다. ✅JPA에서 영속성이란?JPA는 객체(Entity)와 데이터베이스 테이블(Table)간의 중간자 역할을 하며, 자바 객체를 데이터베이스에 ‘영속’시키는 과정을 관리하기 위한 라이브러리에요.한명의 유치원 선생님이 여러 유치원생을 관리하려면 유치원이라는 환경이 필요하듯 여러 객체를 관리하기 위한 환경이 바로 영속성 컨텍스트(Persistence Context) 라는 메모리 영역을 필요해요.그래서 JPA에서의 영속성은 영속성 컨텍스..
📕 동시성 제어 - DBMS가 다수의 사용자 사이에서 동시에 작용하는 다중 트랜잭션의 상호 간섭 작용에서 DataBase를 보호하는 것을 의미. - 일반적으로 어플리케이션의 다수의 사용자의 요청을 처리 -> 이러한 요청에는 DB 접근을 필요로 하는 요청 포함 - 요청이 들어올 때, 트랜잭션 단위로 DB 접근하는데 접근을 동시적으로 허용하면, DB의 일관성과 무결성이 깨진다. 이를 방지하기 위해, 동시성제어(병행 제어) 로 DB를 보호. - 동시성 제어를 해야 하는 이유 - Race Condition - 두 개 이상의 스레드가 동시에 같은 데이터를 접근하여 값을 변경하고자 할 때, 데이터의 예상치 못한 변경이 발생 할 수 있다. ✅ 동시성 제어 ..
📅 테스트 코드의 중요성과 작성법 정리1️⃣ 테스트 코드는 무엇이고 왜 작성해야 할까?소프트웨어 테스트란 해당 소프트웨어가 기대한 대로 잘 동작하는지 확인하는 과정입니다. 개발자라면 누구나 테스트라는 과정을 경험했을 것입니다.테스트 코드를 작성하면:소프트웨어의 결함을 조기에 발견할 수 있습니다.완성도 높은 소프트웨어를 개발할 수 있습니다.반복적인 테스트를 자동화할 수 있어 시간을 절약할 수 있습니다.시간이 지날수록 소프트웨어의 안정성이 높아집니다.테스트 코드 작성의 이점테스트를 자주 실행할 수 있다.리팩터링 시 안정감을 준다.버그를 조기에 발견할 수 있다.테스트 코드의 FIRST 원칙원칙의미F (Fast)테스트는 빠르게 실행돼야 한다.I (Isolated)테스트는 독립적이어야 한다. 외부 시스템에 의..