BE개발자 주니어 적응기 137

LLM 기반 챗봇 기술 조사 및 구현 접근 방법

요약 대규모 언어 모델(LLM)을 활용한 챗봇은 높은 잠재력을 가지고 있지만, 정보 부족과 환각 문제로 인해 제한된 답변 능력을 보이는 문제점이 존재합니다. RAG 모델과 같은 텍스트 생 성 작업을 수행하는 모델은 주어진 소스 데이터로부터 정보를 검색하고 해당 정보를 활용하 여 원하는 텍스트를 생성하는 과정을 통해 이러한 문제를 해결할 수 있습니다. 기술적 접근 1. 검색 가능한 청크 생성: 소스 데이터를 작은 단위인 청크로 분할하여 정보 검색의 기본 단위로 활용합니다. 이는 문장 또는 문단과 같은 텍스트 조각을 의미합니다. 2. 임베딩: 텍스트를 벡터 형태로 변환하는 과정을 통해, 텍스트 데이터를 수치화된 벡터로 전환합니다. 3. 벡터 데이터베이스 구축: 벡터 공간에서 각 청크의 위치를 나타내며, 검색..

서버 재시작 없이 HTML 변경사항 실시간 반영하기: Spring Boot 개발자를 위한 가이드

많은 개발자들이 Spring을 사용하여 웹 개발을 진행하면서, HTML 파일을 수정할 때마다 서버를 재시작해야 하는 번거로움에 직면했을 것입니다. 특히, HTML 파일에 소소한 변경을 적용할 때마다 서버를 다시 올리는 과정은 상당히 시간이 소요되며, 이는 개발 효율성을 크게 저하시킵니다. 비록 Spring Boot의 등장으로 컴파일 시간이 단축되었다고는 하지만, VS Code와 같은 도구에서 제공하는 실시간 수정 및 미리보기 기능과 비교했을 때 여전히 개발 작업의 흐름을 방해하는 요소로 남아 있습니다. 이러한 문제를 해결하기 위해, 서버를 재시작하지 않고도 HTML 파일의 변경사항을 실시간으로 렌더링하여 반영하는 방법이 필요합니다. 이는 개발자가 더욱 신속하게 작업을 진행하고, 즉각적인 피드백을 받을 수..

개발자/Spring 2024.02.19

프롬프트 엔지니어링(5) - 좋은 프롬프트 만들기

1. 좋은 프롬프트 만들기 보통 프롬프트 엔지니어링을 할때 가장 어려워 하는 부분은 6번과 7번 부분이라고 한다. 즉, 6번과 7번 중 7번을 적용한 프롬프트를 제작한다면 위와 같은 형식이 된다. 개발자들은 굉장히 많이 봤을 법한 JSON 형식으로 프롬프트를 작성하는 것이 중요하다. 하지만, 가장 중요한것은 반복 반복이 가장 중요한데, 금요일 오프라인 수업에서 실제로 랭체인등을 사용해서 프롬프트를 작성해봤을때, 작성할때마다 다른 답안을 도출했다. 다른 답안을 제어하기 위해서 Temparature 등을 조절해보고, 문구를 바꿔보고 컨텍스트를 수정하는 작업을 지속적으로 거쳤다. 실제로, 유능한 프롬프트 엔지니어들이 짧은 구문을 작성하는데 몇시간씩 소요된다고 한다. 즉, 반복을 통해 할루시네이션을 제어하고 원..

프롬프트 엔지니어링(4) - 프롬프트 디자인(구성요소와 예시를 기준으로)

가. 프롬프트 구성 요소 Role - 답변자로써 페르소나를 설정(ex - 당신은 친절한 역사선생님입니다.) Audience - 답변의 대상이 되는 특정 인구, 그룹, 또는 개인의 페르소나(ex - 초등학생을 위한 역사 설명을 해주세요) knowledge(Information) - 답변에 참고할 정보 / 사용자의 질문에 해당하는 정보를 DB나 검색엔진 등에서 가져와서 삽입 Task - 수행해야 하는 특정 작업이나 목표 Policy(Rule) - 응답을 만들 때 따라야 하는 특정 정책이나 규칙 Policy(Rule) - Style - 응답에 사용해야 할 특정 톤, 유머, 감정 등의 스타일 Policy(Rule) - Constraint - 응답이 따라야 하는 특정 제한 사항이나 조건(3분안에 읽을 수 있게 해..

프롬프트 엔지니어링(3) - 검색엔진의 진화 Vector Search

가. Vector Search란? AI 및 머신 러닝 분야에서 중요한 개념으로, 특히 검색 엔진 및 추천 시스템에서 매우 중요한 역할을 합니다. Vector Search의 기본 개념 : Vector Search는 데이터를 수치적 벡터로 표현하고, 이러한 벡터들 사이의 유사성을 계산하여 관련된 정보를 검색하는 기술입니다. 이는 텍스트, 이미지, 오디오 등 다양한 형태의 데이터에 적용될 수 있습니다. 벡터 공간 모델(Vector Space Model) : 이 모델은 데이터를 고차원 벡터 공간에 매핑하여, 쿼리와 문서(또는 다른 데이터 형식)간의 유사성을 계산합니다. 각 차원은 특정 특징을 나타냅니다. 유사성 측정 방법: 벡터 간 유사성은 주로 코사인 유사도(Cosine Similarity)같은 방법으로 측정..

프롬프트 엔지니어링(2) - 개요

본 블로그 포스트는 The RED : 프롬프트 엔지니어링, LLM(ChatGPT) 기반의 AI 서비스 개발의 강의의 내용을 복습하는 목적으로 만들어졌습니다. 1.프롬프트 엔지니어링이란? 2. 프롬프트 엔지니어링의 중점 보통 프롬프트 엔지니어링이라 하면 생성에 초점을 맞추게 됩니다. 하지만, 가장 중요한 부분은 어떤 정보를 이용하고 어떻게 조합할지 이것이 프롬프트 엔지니어링의 핵심입니다. 최종적으로 프롬프트 엔지니어링으로 이루고자 하는 목표는 바로 초개인화된 프로그램을 만드는 것입니다. 즉, 프롬프트를 가지고 바로 답변을 하는 것이 아닌 사용자가 원하는 내용을 정확히 찾아와서 사용자가 요청한 내용을 합쳐서 사용자가 원하는 정확한 정보를 제공하는 이것이 프롬프트 엔지니어링의 가장 중요한 부분입니다. 3. 생..

파이썬&&파이참 다운로드

파이썬 다운로드 1. phyton.org 접속 후 메뉴바의 다운로드 클 2. 파이썬 다운로드 클릭 3. 꼭 add pyton.exe to PATH 클릭하고 설치하기 나. 파이참 설치 1. https://www.jetbrains.com/pycharm/download/other.html접속하여 다운로드 2. 체크박스 3개 클릭하기 다. git bash에서 확인하기 1. pip 엔터 후 아래 관련 메뉴얼 나오는지 확인하기 2. pip install ipython => ipython 설치하기 3. ipython

카테고리 없음 2024.01.31

프롬프트 엔지니어링의 기초 (1) Rule-Base AI , Machine Learning

Rule-Based AI 란? 규칙 기반 시스템은 자신의 할 일만 하도록 프로그래밍 된 시스템 Machine Learning 라벨링 안된 데이터 등으로 업무를 해석하고 분류하고 수행하는 프로그래밍 위 말로 바로 이해하기 어려우니 아래 그림과 같이 설명하겠다. 예를 들어, 위 사진과 같이 인간이 오렌지의 특징을 기술하면 AI가 오렌지라고 인식하는 Rule-base AI와 오렌지 사진을 보고 오렌지라 말해주면 그 특징을 기술하는 것이 Machine Learning 이다. 위와 같이 다른 형태의 오렌지를 인식하고 싶을경우 Rule-base에서는 직접 찾아서 입력해야하는 반면 Machine Learning에서는 이것도 오렌지야라고 학습시킬 시 AI가 사진에서 오렌지의 특징을 학습하는 것이다. 그렇다면 Unsup..

[김영한강의] 자바 복습 3. 전/후위 증감 연산자

1. 전/후위 증감 연산자 public static void main(String[] args) { // 전위 증감 연산자 사용 예 int a = 1; int b = 0; b = ++a; // a의 값을 먼저 증가시키고, 그 결과를 b에 대입 System.out.println(" a = " + a + ", b= " + b); // 후위 증감 연산자 예 a = 1; b = 0; b = a++; // a의 현재 값을 b에 먼저 대입하고, 그 후 a 값을 증가시킴 System.out.println(" a = " + a + ", b= " + b); } 대입할때 전위증감연산자는 a의 값을 증가시키고 b에 대입한다. 후위증감연산자는 a의 값을 먼저 대입하고 a를 증가시킨다. 매우 자주 사용하는 증감연산자였지만, 대..

[김영한강의] 자바복습 2. 연산자 우선순위

1. 괄호 () 2. 단항 연산자 (예: ++ , -- , ! , ~ , new , (type) ) 3. 산술 연산자 ( * , / , % 우선, 그 다음에 + , - ) 4. Shift 연산자 ( > , >>> ) 5. 비교 연산자 ( = , instanceof ) 6. 등식 연산자 ( == , != ) 7. 비트 연산자 ( & , ^ , | ) 8. 논리 연산자 ( && , || ) 9. 삼항 연산자 ( ? : ) 10. 대입 연산자 ( = , += , -= , *= , /= , %= 등등 연산자 우선순위는 상식선에서 생각하고, 애매하면 괄호를 사용하자 누구나 코드를 보고 쉽고 명확하게 이해할 수 있어야 한다. 개발자들이 연산자 우선순위를 외우고 개발하는 것이 아니다! 복잡하면 명확하게 ..