LG U+ Why Not SW CAMP 7기 - 14주차 회고

God menu·2025년 8월 14일

<8/11 63일차>

RAG는 Retrieval-Augmented Generation, 즉 검색 증강 생성 방식이다. 강사님께서 챗봇을 예로 들어 설명해주셨다.

  • 일반적인 LLM 질의 방식

우리가 질문을 하면, 보통은 그대로 LLM(대형 언어 모델)에 질문을 전달하게 된다.
이 경우, LLM이 가지고 있는 학습 데이터 범위 내에서만 답변이 생성된다.

  • RAG 기반 질의 방식

질문을 하기 전에, 내가 보유한 데이터를 기반으로 검색을 수행한다.
벡터 데이터베이스(Vector DB) 에서 질문과 가장 유사한 데이터를 찾아낸다.
이 검색 결과와 원본 질문을 프롬프트에 함께 넣어 LLM에 전달한다.
LLM은 이 두 정보를 합산·분석해 더욱 정확한 답변을 생성하게 된다.

  • RAG의 장점
  • 보유한 데이터와 결합하여 최신·전문성 높은 답변 가능
  • 데이터 보안 강화 → 외부 LLM에 직접 데이터 노출 없이 활용 가능
  • 기업 환경에서 내부 전용 AI 챗봇 구현 시 자주 사용

데이터 시각화 & BI 도구
데이터를 수집·처리한 뒤에는 결과를 사람이 쉽게 이해할 수 있도록 시각화(Data Visualization) 가 필요하다. 이를 위해 BI(Business Intelligence) 도구를 활용하면 데이터 분석과 의사결정에 큰 도움을 받을 수 있다.

  • 대표적인 BI 도구 예시:
    Power BI
    Tableau
    Google Data Studio 등

수업 후반에는 강사님과 함께 웹 크롤링 실습을 진행하였고 크롤링 코드의 구조와 동작 원리를 이해하는 데 집중했지만, 코드가 개인적으로 복잡했어서 내일 오전에 한 번 더 복습할 계획이다.

오늘은 RAG의 개념과 동작 구조를 명확하게 이해할 수 있었던 의미 있는 시간이었다. 해커톤 기획서 작성할 때에도 LLM모델로 어떤 모델이 좋을까 고민하다가 당시 강사님께서 RAG에 대해 짧게 언급해주셔서 그때에는 RAG가 무엇인지 정확히 몰랐었는데 오늘 수업을 통해 확실히 개념을 알 수 있었다. 특히 데이터 보안 문제 때문에 기업들이 사내 전용 RAG 시스템을 구축한다는 사례가 현실적이고 흥미로웠다.


<8/12 64일차>

오늘은 AI허브 데이터 DB 적재, 그리고 DuckDB 활용에 대해 배웠다. 강사님께서 AI허브에서 제공하는 컴플라이언스 데이터를 준비해 주셨다. 이 데이터는 법적인 주제를 정리해 놓은 데이터로,
주로 LLM(대규모 언어모델) 학습에 활용된다. 데이터 용량이 매우 커서 압축 해제하는데 시간이 오래 걸렸다. 데이터베이스에 tb_cp라는새로운 테이블을 만들고, Python 코드로 데이터를 넣어보았다. 데이터 양이 너무 많아 전체 적재는 오래 걸려서 일부만 적재했다.

mariaDB에 가서 확인해보니 데이터가 잘 적재된 것을 볼 수 있다.

이후에는 DB 동기화 실습도 해보았다. tb_weather_tcn 테이블을 강사님 DB에서 읽어와,
내 DB의 tb_weather_tcn 테이블에 적재하는 실습이다. 기존 파이썬 코드에서 host를 강사님의 ip주소로 입력하고 가져오는 것이다. 마찬가지로 mariaDB에 가서 확인해보니 데이터가 잘 적재된 것을 볼 수 있다.

이후에도 여러 데이터들을 DB에 적재하는 것으로 수업이 진행되었다. 이번에는 소상공인시장진흥공단에서 제공하는 상권 정보 데이터를 적재해보았다.

수업 막바지에는 DuckDB에 대해 배웠다. Duckdb는 판다스의 데이터프레임하고 바로 연동되기 때문에 판다스에 있는 데이터를 그냥 뽑아다가 쿼리로 여러가지를 할 수 있다. 그리고 다시 데이터프레임으로 집어넣을 수도 있다. csv파일이 있는 경로를 제대로 지정해주고 판다스로 read_csv를 한 후 duckdb에 import하는 코드를 실행했더니 잘 출력되는 것을 볼 수 있다.


내 컴퓨터에서는 한 번에 성공했지만 내 짝꿍도 그렇고 다른 많은 분들이 duckdb.connet에 계속 실패하는 에러가 나서 이를 해결해보다가 결국 수업시간이 다 되어서 급하게 마무리하게되었다.

오늘은 대용량 데이터 처리와 DB 적재 과정의 현실적인 어려움을 체감하였다. AI허브 데이터처럼 방대한 양의 데이터는 압축 해제부터 적재까지 시간이 많이 걸린다. 특히 DB로 넣는 과정에서 속도와 구조 설계가 중요하다는 것을 느꼈다. DuckDB를 처음 다뤄봤는데, 속도가 빠른 결과를 볼 수 있었고, 판다스와의 호환성 덕분에 최근 많이들 쓴다는 것을 알 수 있었다.


<8/13 65일차>

오늘은 데이터 시각화 도구, 모니터링 툴, 그리고 ElasticSearch 실습까지 다양한 주제를 다뤘다.

예전에는 Django나 Flask를 많이 사용했지만, 요즘은 FastAPI를 많이 쓴다. 나중에 프로젝트를 진행할 때 FastAPI를 사용할 것이라고 말씀하셔서 프로젝트 때에 더 자세하게 알고 다룰 예정이다.

Grafana를 설치해 시각화 실습을 진행하였다.

SELECT UNIX_TIMESTAMP(STR_TO_DATE(yyyymmddhhmi, '%Y%m%d%H%i')) AS time,
       CAST(ta AS DECIMAL(10,2)) AS ta_num
FROM cp_data.tb_weather_aws1
WHERE stn='410'
ORDER BY seq_no DESC
LIMIT 1000;

신대방 기온 데이터를 시계열 차트로 시각화하고, 최신 기온도 확인했다.

Prometheus와 windows_exporter를 설치하여 데이터를 수집하고 Grafana로 데이터를 뿌려주는 실습도 해보았다.
http://localhost:9182/metrics로 내 노트북의 상태를 볼 수 있고, prometheus.yml에 job 추가 후 Prometheus를 실행하면http://localhost:9090에서 확인 가능하다.


Grafana와 Prometheus를 연동하면 exporter가 여러 개여도 자동으로 관리 가능하고, 실무 DevOps 환경에서도 많이 사용되는 조합이라고 한다.

Metabase를 설치하여 데이터 시각화 실습도 하였다. 어제의 지하철 데이터로 호선별 최다 이용 현황을 막대 차트로, 상가 데이터를 지도 차트로 그렸다.

ElasticSearch, LogStash, Kibana를 버전 맞춰서 설치하고, ElasticSearch도 잠깐 해보았다.

오늘은 여러 툴을 다양하게 경험해본 날이었다. Grafana, Prometheus, Metabase, 그리고 ElasticSearch까지… 처음에는 이름조차 낯설었는데 하나씩 따라 하다 보니 이런 툴들이 실무에서 많이 쓰이며 내가 앞으로 많이 접해볼 것들이라는 것을 체감했다.


<8/14 66일차>

오늘은 로컬 환경에 LLM(Large Language Model)을 구축해서, 노트북이 챗GPT 서버처럼 동작하도록 하는 실습을 진행했다.

LM Studio를 설치한 후 Qwen 모델을 사용하였다. LLM을 로컬에서 구동하려면 메모리 사용량이 매우 크다. 특히 컨텍스트 길이가 길어질수록 메모리를 많이 소모한다.

이후에는 RAG방식으로 웹 챗봇을 열고, 임베딩할 파일을 지정했다.

! 느낌표를 앞에 붙이고 질문하면 RAG용 체인으로 작동하여 검색하여 답변한다. 근로복지공단 이사장이 누구냐고 물어보았는데 짝꿍도 그렇고 나와 답이 같게 나와서 로컬 환경에서 RAG가 안정적으로 작동함을 확인할 수 있었다.

기존에 ChatGPT를 써봤을 때는 서버에 대해 생각 안하고 그냥 질문만 했었는데, 직접 환경을 깔고 모델을 올려보니 LLM이 어떻게 구동하는지 배울 수 있어서 유익한 것 같다. 또한 RAG 체인을 적용하니 모델이 내 데이터까지 함께 참고해 답변하는 모습을 보고 정확한 데이터를 주는 것도 중요하다는 생각이 들었다. 메모리 사용량이 큰 점은 로컬 환경의 단점이지만, 회사 내부 데이터 보안 이슈를 해결할 수 있다는 장점도 느껴졌다.

0개의 댓글