전체 글 18

[탄소중립 아카데미 6기] 벡터 임베딩과 벡터 검색

지난 이야기저번 시간에는 RAG 시스템을 위한 문서를 모으기 위해 학교 사이트를 크롤링하는 람다 함수를 구현하고 배포하였다.약 2주가 지난 지금 크롤러는 제 역할을 다하고 있다.한 시간에 한번씩 잘 실행되고 있고, 디스코드 웹훅에도 등록해놓아서 새로운 공지사항이 크롤링되면 디스코드 서버에도 띄워줄 수 있다.2주동안 새로 올라온 공지사항은 2개가 있고, 모두 잘 크롤링되어서 저장된 상태이다.그렇다면 이제 할 것은 벡터 임베딩이다. 저번에 RAG에 대해 쓴 글에도 있지만, LLM은 문서를 그대로 받아들일 수 없고, 텍스트를 벡터로 임베딩하여 semantic search를 할 수 있도록 해야 한다.벡터 임베딩의 과정무작정 구현하기 전에 임베딩 작전을 세워야 한다. 임베딩을 하기 전에 고려해야 할 요소는 다음과..

탄소중립 2026.04.27

[탄소중립 아카데미 6기] 자동 크롤러 구현하기

회고저번 회의에서 우리가 구축할 RAG 시스템의 컨셉을 정했다. 기본적으로 RAG에 적용할 문서를 정해야 했기에 빠르게 주제를 정해야하였고, 대학교 프로젝트인만큼 대학생들을 대상으로 방향성을 잡았다.우리 팀의 팀원들이 전부 SW중심대학에 소속되어 있으므로, 아무래도 교내외 활동을 찾을 때 SW중심사업단 페이지를 자주 접근한다. 거기에 우리 학교 페이지에는 AI 챗봇이 없다. 따라서 프로젝트 대상으로 적절하다고 생각하였고, 이번 과제로 공지사항 페이지와 홍보게시판에 있는 게시글들을 크롤링하여 데이터를 수집하였다. 크롤러 만들기웹 크롤러는 목적에 따라 다른 기능을 수행하지만, 우리가 만드는 게시판 크롤러는 비교적 구현하기 간단하다. 게시판 크롤러는 크게 다음과 같은 역할을 수행해야 한다.일정 시간마다 게시판..

탄소중립 2026.04.13

[탄소중립 아카데미 6기] RAG란 무엇인가?

RAG란 무엇인가?RAG는 Retrieval Augmented Generation의 약자이다. 기본적인 개념은 LLM 모델에서 답변을 생성하기 위해 외부 자료와 문서를 참고하는 것이다. 현실에서의 이야기로 말하자면 클로즈드 북 시험과 오픈 북 시험의 차이라고 할 수 있겠다.LLM 모델은 학습이 완료된 상태에서 더 이상 발전하지 않는다. 추가적으로 학습을 진행하지 않는다면 마지막 학습한 상태로 유지되고, 당연히 변화하는 현실 세계에서 큰 문제가 된다. 데이터가 쌓이고 기술이 바뀌는 만큼 LLM 모델도 적응을 해야 항상 정확한 답변을 신속하게 내놓을 수 있을 것이다. 그러나 매번 LLM 모델을 새롭게 학습시켜서 사용할 수도 없는 노릇이다. 비용적으로 효율적이지 않고 시간도 오래 걸리기 때문이다.이에 대한 해..

탄소중립 2026.04.06

[탄소중립 아키데미 6기] 1주차 - OT

이번 학기에도 어림없이 찾아온 탄소중립 아카데미 6기에 지원했다.저번 학기에는 일반 주제에서 참가하였으니 이번에는 좀 더 본격적으로 참여하기 위해서용기있게 산업체 주제에 지원했다. 내가 가장 관심 갔던 주제는 롯데 이노베이트에서 진행하는 'AI 중복 호출 제거로 비용 및 탄소를 줄이는 조식 지식 공유 시스템 개발' 주제였다. 아무래도 내가 백엔드 및 인프라 분야에 대해 공부하고 있기도 하고 취업 진로도 그 쪽 방향으로 잡았으니 당연히 관심이 갈 수 밖에 없었다. 벡터 임베딩과 캐싱으로 효율적인 시스템을 구축하는 과제는 실제로 수많은 기업들과 서비스들이 요구하는 분야이기도 하고, 내 개인적인 개발 지식과 CS 지식을 한단계 더 올려줄 수 있는 재미있는 주제이다. 3월 23일 월요일에 첫 멘토링을 진행하였다..

탄소중립 2026.03.27

[홈서버 구축기] 포트포워딩, SSH 연결

우분투 서버 네트워크 설정우선 포트포워딩 작업을 하기 전에 우분투 서버 컴퓨터에 네트워크 설정을 해주어야 한다.이제 막 PC에 설치된 우분투 서버는 랜선을 꼽는다고 바로 자동으로 인터넷과 연결되지 않는다.먼저 ip addr 명령어로 현재 사용되고 있는 랜카드 정보를 확인해보자.가장 먼저 있는 것은 루프백 주소이다. 그냥 로컬호스트 주소이므로 잘 있는것만 확인해보자.다음에 있는 enp2s0이 현재 리눅스 시스템에서 사용하는 이더넷 인터페이스이다.출력된 내용은 다음과 같다. - 인터페이스가 브로드캐스트, 멀티캐스트에 사용될 수 있고, UP 상태이면 하드웨어가 정상적으로 실행 중이라는 의미inet - 연결된 이더넷의 ipv4 주소inet6 - 연결된 이더넷의 ipv6 주소랜선이 정상적으로 연결되어 있다면 in..

백엔드/홈서버 2026.01.26

[홈서버 구축기] 미니PC 구매, 우분투 설치

백엔드 개발 공부를 시작하고 나서부터 1년.동아리에서 2번의 협업 프로젝트를 겪으면서 느끼게 된 점이라면클라우드 서버 대여 서비스가 너무 비싸다는 것이었다. 지금까지 주로 AWS를 통해 EC2 인스턴스로 서버를 띄우고 VPC를 통해 접속하는 방식으로 서버를 운용해왔다.물론 아마존 프리티어가 있는 계정이라면 t2.micro로 최대한 서버비를 아낄 수 있겠지만탄력적 IP와 RDS로 발생하는 비용은 무시할 수 없었다. 이는 AWS를 제외한 다른 클라우드 플랫폼에서도 마찬가지였다. 사실 비용 뿐만이 아니라 서버 스펙에도 불만이 좀 많았다.저번 프로젝트에서는 비용을 아끼기 위해 서버를 t2.micro로 돌렸는데npm 패키지 설치하는데 서버가 터졌다. 그렇다고 서버 스펙을 올리자니 비용이 부과되고... 그래서 그..

백엔드/홈서버 2025.09.17

[UMC] SQL Query

1. SQL - 두 개의 정렬 기준과 페이지네이션을 구현하는 쿼리이번 주 첫번째 미션은 저번주에 설계한 DB에서 다음과 같은 기능을 구현하는 것이다.진행 중, 진행 완료한 미션 모아서 보는 쿼리에서 정렬 기준을 1순위를 포인트, 2순위는 최신순으로 하여 Cursor 기반 페이지네이션을 구현하라. 일단 저번주에 설계한 DB를 살펴보자.진행 중, 진행 완료를 표현하기 위해 필요한 정보를 테이블 단위로 정리해보자. 1. Mission 테이블미션의 내용미션의 status(완료, 미완료 상태 구별)미션의 포인트 내역2. Shop 테이블상점의 이름3. User 테이블유저의 ID(검색 기준)이렇게 총 2개의 테이블에서 정보를 얻어와야 한다. 바로 SQL로 구현해보자. SELECT m.content, m.p..

UMC 2025.03.30

[UMC] DB 정규화와 이중요청 해결

DB 정규화MySQL과 같은 관계형 데이터베이스는 레코드들이 모여 있는 테이블과 테이블들 간의 연관관계로 이루어져 있다.그런만큼 프로젝트 규모가 커지고 DB 구조가 복잡해질수록 테이블 구조가 잘 연결되어 있어야 데이터를 잘 정리할 수 있고 DB의 성능 또한 저하되지 않는다. 정규화는 테이블 간에 중복된 데이터를 허용하지 않는 것을 목표로 두고 진행하며 데이터의 무결성 유지와 DB의 저장 용량을 확보할 수 있다. 정규화는 총 3단계로 이루어지며 지금부터는 이번 주에 진행했던 DB 설계 미션과 함께 살펴보겠다.  제 1정규화제 1정규화는 테이블의 컬럼이 원자값을 갖도록 테이블을 분해하는 것이다. 즉 하나의 레코드에 하나의 컬럼에 대해 하나의 값만 가질 수 있도록 테이블을 분해해야 한다. 이번 주차 미션에서 ..

UMC 2025.03.23