전체 글 49

MCP(Model Context Protocol) 정리

요즘 AI 도구를 보면 "MCP 지원"이라는 말이 부쩍 자주 보인다. AI 에이전트가 뜨면서 같이 표준으로 자리 잡은 개념인데, 알고 보면 구조가 단순하다. 오늘은 MCP가 무엇이고 왜 빠르게 표준이 됐는지 정리한다. 1. MCP란 무엇인가 MCP(Model Context Protocol)는 2024년 11월 Anthropic이 공개한 오픈 표준임. 한 줄로 요약하면 이렇다.: AI 모델이 외부 도구, 데이터에 연결되는 방식을 하나로 통일한 규격임: 흔히 "AI를 위한 usb-c"에 비유함 - 어떤 기기든 하나의 규격으로 꽂듯이, 어떤 도구든 같은 방식으로 연결: 모델과 도구 사이에 표준 인터페이스를 두어, 서로를 몰라도 정해진 규칙으로 대화하게 함 2. 왜 필요했나 MCP 이전에는 모델마다, 도구마..

AI/Basic 15:18:17

데이터 분석 (5) A/B 테스트와 가설검정 기초 - p-value, 유의수준

"버튼 색을 바꿨더니 클릭이 늘었다"는 말을 데이터로 증명하려면, 그 차이가 진짜인지 우연인지를 가려야 한다. 이때 쓰는 게 A/B 테스트와 가설검정이다. 이번 글은 p-value와 유의수준이 정확히 무슨 뜻인지 정리한다. 1. A/B 테스트란 : 사용자를 무작위로 두 집단으로 나눔 - A안(기존)과 B안(변경): 두 집단에 각각 다른 안을 보여주고, 목표 지표(클릭률, 전환율 등)를 비교함: 무작위로 나눴기 때문에, 지표 차이를 "안의 차이" 때문으로 볼 수 있음 (교란변수가 양쪽에 섞임): 즉 A/B 테스트는 인과를 확인하는 무작위 대조 실험의 한 형태임 2. 가설검정의 구조 측정된 차이가 우연인지 판단하려고, 통계에서는 두 개의 가설을 세움.: 귀무가설(H0) - "두 안 사이에 차이가 없다" (..

Attention Is All You Need (트랜스포머의 시작)

Vaswani et al., "Attention Is All You Need" (2017), NeurIPS링크: https://arxiv.org/abs/1706.03762LLM 기초 시리즈를 마무리했으니, 이제 그 기초가 처음 등장한 원 논문으로 돌아가 본다. 오늘은 트랜스포머(transformer)를 세상에 내놓은 "Attention Is All You Need"를 읽어 보았다. 지금 나오는 거의 모든 언어 모델의 뿌리가 되는 글이다. 1. Abstract 한 줄 요약 : 당시 번역 모델의 주류는 rnn이나 cnn에 attention을 얹은 구조였음: 이 논문은 rnn, cnn을 아예 걷어내고 "attention만으로" 만든 새 구조 transformer를 제안함: 결과적으로 번역 성능은 최고 수준으..

Paper/LLM 2026.09.20

데이터 분석 (4) 상관관계는 인과관계가 아니다 - 교란변수와 심슨의 역설

데이터를 보다 보면 "A가 오르면 B도 오른다"는 그림이 자주 나온다. 그런데 여기서 "그러니까 A가 B의 원인"이라고 넘어가면 종종 크게 틀린다. 이번 글은 상관과 인과가 왜 다른지, 그리고 데이터를 뒤집어 버리는 심슨의 역설을 정리한다. 1. 상관관계와 인과관계는 다른 말임 : 상관관계 - 두 값이 같이 움직이는 정도임 (한쪽이 크면 다른 쪽도 크거나 작은 경향): 인과관계 - 한쪽이 실제로 다른 쪽을 "일으키는" 관계임: 상관은 숫자로 바로 재지지만(예: 상관계수), 인과는 그 숫자만으로는 증명되지 않음: 즉 "같이 움직인다"와 "원인이다"는 별개의 주장임 2. 상관은 있는데 인과가 아닌 경우 같이 움직이는 두 값이 있어도, 원인, 결과 관계가 아닐 수 있음. 크게 세 갈래로 나뉨.1) 우연 -..

데이터 분석 (3) SQL 윈도우 함수 정리 - RANK, LAG/LEAD, 누적합

집계를 하다 보면 "그룹별 합계는 구했는데, 원래 행은 그대로 두고 싶다"는 상황이 자주 생긴다. GROUP BY로는 잘 안 되는 이 일을 깔끔하게 해 주는 게 윈도우 함수다. 이번 글은 윈도우 함수의 구조와 자주 쓰는 세 갈래를 정리한다. 1. GROUP BY와 무엇이 다른가 : GROUP BY는 여러 행을 하나로 뭉쳐서, 그룹마다 한 줄만 남김 : 윈도우 함수는 행을 그대로 두면서, 각 행 옆에 집계값을 새 컬럼으로 붙임 : 그래서 "전체 평균 대비 이 행의 값"처럼, 개별 행과 집계를 함께 보고 싶을 때 씀 2. 기본 구조: OVER : 윈도우 함수는 집계 함수 뒤에 OVER 절을 붙이는 형태임 - 예: AVG(price) OVER (...) 1) PARTITION BY - 어떤 기준으로 ..

LLM 기초 (8) 프롬프트 엔지니어링 vs 컨텍스트 엔지니어링 - 에이전트 입문

지난 글에서 RAG로 검색한 문서를 모델에게 참고 자료로 건네는 방식을 정리했다. 그렇게 무언가를 프롬프트에 담아 넣기 시작하면 자연스럽게 질문이 하나 생긴다. 무엇을, 얼마나, 어떤 순서로 넣을 것인가. 이번엔 프롬프트 엔지니어링과 컨텍스트 엔지니어링을 정리한다. 1. 프롬프트 엔지니어링이란 : 모델에게 주는 지시문(프롬프트)을 다듬어 원하는 답을 끌어내는 방법임 : 역할을 정해 주거나("너는 요약 전문가야"), 예시를 몇 개 보여 주거나(few-shot), 단계를 밟아 생각하게 시키는(chain of thought) 식으로 표현을 바꿈 : 모델 자체는 그대로 두고, 입력 문장을 바꿔 결과를 개선하는 접근임 2. 컨텍스트 엔지니어링이란 : 프롬프트 한 줄을 넘어서, 모델이 한 번에 보는 입력..

AI/Basic 2026.09.19

데이터 분석 (2) 결측치와 이상치, 어떻게 다룰 것인가

지난 글에서 EDA 체크리스트를 정리하며 결측치, 이상치를 "확인해야 할 것"으로만 짚고 넘어갔다. 이번엔 확인한 다음, 실제로 어떻게 다루는지를 정리한다. 1. 왜 그냥 지우면 안 되나 : 결측이나 이상치가 있는 행을 습관적으로 지우면, 데이터가 줄어드는 것보다 더 큰 문제가 생길 수 있음 : 결측이 특정 그룹에 몰려 있었다면, 그 행들을 지우는 순간 그 그룹 자체가 통째로 빠짐 : 지우기 전에 "왜 비었는지, 왜 튀었는지"부터 보는 게 먼저임 2. 결측치: 원인부터 본다 : 완전 무작위 결측 - 특정 이유 없이 여기저기 흩어져 빠진 경우 : 패턴 있는 결측 - 특정 기간, 특정 그룹, 특정 응답(예: 고소득자가 소득 항목을 비워둠)에 몰린 경우 : 패턴 있는 결측을 무작위처럼 다루면, 그 ..

LLM 기초 (7) RAG 기초 - 검색을 붙여 환각 줄이기

지난 글에서 코사인 유사도로 벡터 사이의 가까움을 재는 법을 정리했다. 이번엔 그 유사도 검색을 실제로 어디에 쓰는지, RAG(retrieval augmented generation)를 정리한다. 1. RAG가 왜 필요한가 : 모델은 학습 시점까지의 지식만 담고 있어서, 그 이후에 나온 정보나 사내 문서처럼 애초에 학습하지 않은 내용은 알 수 없음 : 모르는 내용을 그럴듯하게 지어내는 경우가 있음 - 환각(hallucination) : RAG는 답변을 만들기 전에 관련 문서를 먼저 검색해 모델에게 참고 자료로 건네주는 방식으로 이 문제를 줄임 2. 전체 흐름: 인덱싱과 질의 : 인덱싱 - 문서를 미리 조각내고 임베딩으로 바꿔 벡터DB에 저장해 두는 준비 단계 : 질의 - 사용자 질문이 들어오면..

AI/Basic 2026.09.18

데이터 분석 (1) 탐색적 데이터분석(EDA) 체크리스트

새 데이터를 받으면 바로 분석이나 모델링으로 들어가고 싶어지지만, 그 전에 데이터가 어떻게 생겼는지부터 봐야 한다. 이번 글은 그 확인 과정, EDA(exploratory data analysis)를 체크리스트로 정리한다. 1. EDA가 왜 필요한가 : 데이터를 안 보고 분석, 모델링부터 시작하면 이상치, 결측치, 잘못된 자료형을 나중에야 발견함 : 늦게 발견할수록 되돌리는 비용이 커짐(전처리 다시, 모델 재학습 등) : EDA는 본격적으로 분석하기 전에 데이터가 믿을 수 있는 상태인지 확인하는 단계임 2. 구조부터 본다 : 행, 열 개수와 각 컬럼의 자료형(수치형, 범주형, 날짜) : 컬럼명과 실제 값이 의미상 맞는지 (예: "나이" 컬럼에 음수나 200 같은 값) : 요약 통계로 넘어가기 전에..

LLM 기초 (6) 임베딩과 벡터 유사도(cosine) 심화

지난 글은 모델이 지식을 익히는 세 가지 방식이었다. 이번엔 한발 물러나서, 텍스트가 벡터가 되는 과정과 그 벡터들 사이의 "가까움"을 재는 방법을 정리한다. 1. 임베딩이 뭔가 : 텍스트(토큰, 문장, 문서)를 실수 값 여러 개로 이루어진 벡터로 바꾸는 것 : 글자 그대로는 계산할 수 없어서, 모델이 다룰 수 있는 숫자 배열로 옮기는 과정 : 차원 수는 보통 768, 1536처럼 수백~수천 (차원 하나하나에 뜻을 딱 붙일 순 없지만, 전체 배열이 의미를 담고 있음) 2. 비슷한 뜻은 가까운 자리에 놓인다 : 임베딩 공간에서 뜻이 비슷한 단어나 문장은 서로 가까운 위치에 모임 : "강아지"와 "고양이"는 "자동차"보다 서로 더 가까움 : 이 배치는 사람이 정한 게 아니라, 비슷한 문맥에 등장한 단어끼..

AI/Basic 2026.09.17