Rag 3

[탄소중립 아카데미 6기] API 최적화하기

배경EcoCache 프로젝트에 /chat API를 붙이면서 탄소 배출량 모니터링 기능도 함께 통합했다. 매 요청마다 현재 탄소 집약도(Carbon Intensity, CI)를 가져와서 응답에 포함시키는 구조였는데, 어느 순간부터 API 응답이 굉장히 느려지기 시작했다.처음엔 LLM 응답 생성이 느린 건가 싶었다. 근데 실제로 timings 필드를 찍어보니 이상한 곳에서 5초가 넘게 잡히고 있었다.병목 1: Carbon API 호출첫 번째 문제는 _get_current_ci() 함수였다. 매 /chat 요청마다 Electricity Maps 외부 API를 직접 호출하고 있었다. 네트워크 레이턴시가 합쳐지면서 운이 나쁘면 몇 초씩 걸렸다.구조를 바꿨다. carbon/collector.py가 15분마다 CI ..

탄소중립 2026.06.08

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

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

탄소중립 2026.04.27

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

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

탄소중립 2026.04.06