최신 글
📁 AI 시스템 설계
RAG 시스템은 단순한 LLM 호출이 아니라, 여러 단계로 이루어져있다.사용자 질문관련 문서 검색문서를 프롬프트에 넣기LLM 답변 생성출처와 함께 반환그래서 RAG 답변이 틀렸을 때 원인도 여러 가지다.검색이 잘못됐을 수 있다.검색은 맞았는데 LLM이 문서를 잘못 읽었을 수 있다.답은 맞았는데 출처가 틀렸을 수 있다.문서 자체가 오래됐을 수 있다.RAG 평가는 이 원인을 분리해서 보는 작업이다.예시로 보기질문이 들어왔다고 하자.질문:해외배송 상품을 환불하면 위약금은 얼마인가요?정답을 만들려면 두 개의 근거가 필요하다.근거 A: 해외배송 상품의 환불 정책근거 B: 환불 정책이 참조하는 위약금 산정 조항RAG 시스템은 이 두 근거를 찾아서 LLM에게 줘야 한다.정상적인 흐름은질문 → 검색 단계에서 A와 B를..
📁 AI 시스템 설계
RAG나 임베딩 검색을 만들면 결국 이런 작업을 해야 한다.질문을 벡터로 바꾼다.문서 조각들도 벡터로 저장해둔다.질문 벡터와 가장 가까운 문서 벡터를 찾는다.예를 들어 사용자가 이렇게 묻는다고 하자: "택배가 아직 안 왔을 때 보상 받을 수 있나요?"이 질문은 문서의 정확한 문장과 단어가 다를 수 있는데,문서에는 "배송 지연으로 인한 보상 기준은 다음과 같다." 라고 쓰여있을 수 있다.즉, 키워드는 완전히 같지 않고, 그러나 의미는 가깝다.임베딩 검색은 이런 의미 유사성을 이용하는데, 문제는 문서가 많아졌을 때다.문서 조각 1,000개 → 하나씩 비교 가능문서 조각 100만 개 → 하나씩 비교하면 느림문서 조각 1억 개 → 단순 비교는 거의 불가능그래서 필요한 것이 Vector DB와 ANN 검색이다.V..
📁 ML(Machine Learning)
지도학습에서는 입력 `x`와 정답 `y`가 함께 있다.모델은 `x`를 보고 `y`를 맞히도록 학습한다. CS 문의 분류 문제를 생각해보자.입력 `x`: 문의 문장, 고객 등급, 주문 상태, 배송 상태, 결제 금액정답 `y`: 배송 문의 / 환불 문의 / 교환 문의 / 상품 문의 / 기타 문의이번에는 딥러닝 이전부터 널리 쓰인 머신러닝 모델을 알아본다.먼저 볼 기준기준질문문제 유형회귀인가, 분류인가?데이터 형태숫자형인가, 범주형인가, 텍스트인가?비선형성단순 직선 관계인가, 복잡한 조건 관계인가?해석 가능성왜 그런 예측을 했는지 설명해야 하는가?전처리 필요스케일링, 인코딩, 결측치 처리에 민감한가?데이터 크기샘플 수와 특징(feature) 수가 어느 정도인가?운영 조건빠른 예측, 작은 모델, 설명 가능성이 ..
📁 ML(Machine Learning)
머신러닝 모델을 만들면 보통 이런 기대를 한다.학습 데이터에서 잘 맞으면새 데이터에서도 잘 맞겠지.하지만 실제로는 그렇지 않을 수 있다.모델이 학습 데이터에서는 거의 완벽한데, 처음 보는 데이터에서는 성능이 떨어지는 경우가 많다.이 현상을 과적합(overfitting)이라고 한다.과적합과적합은 모델이 데이터의 일반적인 패턴이 아니라 학습 데이터에만 있는 우연한 흔들림과 노이즈까지 외워버리는 상태다.예를 들어 학생이 시험공부를 한다고 하자.좋은 공부:문제의 원리를 이해한다.새 문제가 나와도 풀 수 있다.나쁜 공부:기출문제 답만 외운다.기출과 똑같은 문제는 맞힌다.조금만 바뀌면 틀린다.과적합된 모델은 두 번째 학생과 비슷하다.학습 데이터라는 기출문제는 잘 맞히지만, 실제 운영에서 들어오는 새 데이터에는 약하..
인기 글
📂 Node.js
Node.js 삭제하기 제어판 > 프로그램 > 프로그램 제거 (또는 Win+R > appwiz.cpl) 설치된 Node.js 버전을 찾아 선택하고 제거 NVM 삭제하기 파일 탐색기에서 C:\Users\\AppData\Roaming\nvm 폴더를 찾아 삭제 Win+R > cmd > control sysdm.cpl,,3 입력 > 환경변수 > NVM_HOME 및 NVM_SYMLINK 변수를 삭제 관련 폴더 삭제하기 C:\Program Files\nodejs 폴더 삭제 C:\Users\\AppData\Roaming\npm 폴더 삭제 Win+R > regedit > HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Run 경로에서 nvm 관련 항목을 찾아 삭제
📂 Tools
General - 일반적인 단축키 Window Mac 설명 Alt + #[0-9] ⌘0...⌘9 각 단축키에 해당하는 도구창 열기 Ctrl + S ⌘S 모두 저장 Ctrl + Alt + Y ⌘⌥Y IntelliJ가 파일 시스템에서 최신 변경 사항을 처리하도록 강제 일반적으로 변경 내용은 자동으로 처리되므로 작업은 아무 작업도 수행하지 않음 Ctrl + Shift + F12 ⌘⇧F12 편집기(Editor) 영역을 최대로 크기로 토글 Alt + Shift + I ⌥⇧I 현재 프로필 기준으로 현재 파일 검사 Ctrl + ` ⌃` 인텔리제이 테마 변경 Ctrl + Alt + S ⌘ , 설정창(Settings) 열기 Ctrl + Alt + Shift + S ⌘ ; 프로젝트 구조창(프로젝트 구조 확인 및 변경) 열..
📂 Python
1. 웹스크래핑(Web Scraping)이란? 우리는 웹 페이지에서 많은 정보를 얻는다. 이 정보들을 추출, 정리할 필요성을 느낄 때가 있는데, 이를 스크래핑이라고 한다. 즉, 웹 페이지의 정보를 가져오고(크롤링;Crawling), 데이터들을 추출(스크래핑;Scraping)해 DB에 저장하고 사용하는 것을 이야기한다. 2. Python으로 웹 크롤링하기 2-1. 준비하기 기본적으로 웹 크롤링은 HTML로 작성된 문서를 긁어서 가져오는 일이기 때문에, 파이썬에서 그 정보를 가져오도록 요청해야 한다. 따라서 Requests 라이브러리로 요청하고, BeautifulSoup 라이브러리로 필요한 정보만 추출할 것이다. requests 라이브러리 설치 나는 venv 가상환경을 사용하기 때문에 간단하게 VSCode ..
📂 네트워크
이전 글에서 스위치의 기능은 3가지가 있다고 했다.기본 동작 : MAC 주소를 인식하고 패킷을 전달VLAN 기능 : 한 대의 장비에서 논리적으로 네트워크를 분리스패닝 트리 프로토콜(STP) : 네트워크의 루프를 방지이번엔 이 중 VLAN에 대해 알아보자!VLAN(Virtual Local Area Network)이란?물리적 배치와 상관없이 LAN을 논리적으로 분할, 구성하는 기술 👉🏻 VLAN을 나누면 하나의 장비를 서로 다른 네트워크를 갖도록 논리적으로 분할한 것이 된다.👉🏻 그냥 한마디로 물리적 스위치 하나를 그룹으로 나눠 여러 논리적 스위치를 만들어버리는 것각 부서별로 네트워크를 분할하거나, 다수의 단말을 네트워크에 연결하는 등 분리가 필요할 때 사용또는 과도한 브로드캐스트로 인한 단말들의 성..
📂 AI 시스템 설계
RAG의 한계에서 출발RAG는 질문과 벡터가 "직접 비슷한" 문서만 찾는다. 그런데 실제 질문은 종종 여러 단계를 거쳐야 답이 나오는 경우가 있다.e.g) "해외배송 상품을 환불하면 위약금은 얼마인가?먼저 "해외배송 상품의 환불 정책이 무엇인지"를 찾고그다음 "그 환불 정책이 참조하는 위약금 산정 조항"을 찾아야 한다이 두 조각이 임베딩 공간에서 서로 가깝지 않을 수 있다. "위약금 산정 조항"이라는 텍스트는 "해외배송 환불 정책"이라는 텍스트와 단어도 다르고 문맥도 다를 수 있다. 벡터 검색만으로는 이런 "간접적으로 연결된" 정보를 놓치기 쉽다.GraphRAG는 문서 조각들 사이의 명시적인 관계(어떤 조항이 어떤 조항을 참조하는지, 어떤 정책이 어떤 정책을 인용하는지)를 그래프로 미리 저장해두고, 검색..
📂 Spring
JPA(Java Persistent API)JPA(Java Persistence API) : ORM 기술의 표준 인터페이스ORM은 객체와 관계형 데이터베이스를 매핑해 주는 기술이며, JPA는 이를 표준화한 것이다.그러니까, 자바 애플리케이션에서 관계형 데이터베이스를 사용할 때 이를 객체와 매핑해 주며 사용하기 위한 인터페이스라는 것이다.따라서 사용하기 위해서는 구현체가 필요하고,  JPA를 구현한 대표적인 프레임워크로는 Hibernate, EclipseLink, DataNucleus 등이 있으며, 이 중 Hibernate가 가장 널리 사용된다. [OOP] ORM(Object-Relational Mapping)ORM이란?ORM(Object-Relational Mapping)은 객체 지향 프로그래밍 언어(O..
ChaeYami
채야미의 코드레시피🍳