30쪽
긴 문서를 작은 조각(청크)으로 나눈다.
비개발자를 위한 바이브코딩 기초
AI에게 앱을 만들어 달라고 말하기 전에 화면, 서버, AI, DB가 어떻게 이어지는지 알아야 한다. 토큰부터 RAG까지 핵심 개념 7개를 직접 눌러보며 익힌다.
같은 색은 항상 같은 역할을 뜻한다.
손님이 보는 매장이다. 버튼과 결과만 보이고, 실제 요리는 뒤에서 벌어진다. 이 사이트의 지금 이 화면도 Frontend다.
외울 필요 없다. “이 부품은 무슨 역할인가” 한 줄씩만 잡고 출발한다.
AI는 글을 조각 단위로 읽고 쓴다. 조각 수만큼 돈이 든다.
2 LLM 다음 말을 잇는 엔진지금까지의 글을 보고 다음 조각을 고른다. 그게 전부다.
3 Embedding 문장을 지도 위 위치로의미가 비슷한 문장은 지도에서 가까운 곳에 찍힌다.
4 RAG 자료를 찾아 책상에 올리기AI를 다시 가르치는 게 아니라, 참고자료를 펼쳐주는 방식이다.
5 API 다른 서비스의 주문 창구정해진 양식으로 부탁하면, 정해진 양식으로 결과가 온다.
5 MCP AI 도구용 공용 플러그파일, 캘린더, DB 같은 도구를 표준 규격으로 AI에 꽂는다.
6 DB 규칙 있는 장부데이터를 장부 여러 권으로 나눠 오래, 정확하게 남긴다.
끝나면 이렇게 말할 수 있다 — “토큰은 글의 레고 조각이자 요금 단위다.”
짧은 요청은 커피 한 잔의 10만분의 1 수준이다.
토큰 경계는 모델마다 조금씩 다르다. 여기서는 감을 잡기 위한 대략적인 조각이다.
“유료 AI를 호출할 때마다 모델명, 입력/출력 토큰, 예상 비용을 DB에 기록하는 코드도 같이 만들어줘.”
회의록 전체를 매번 AI에게 통째로 붙이면 어떤 일이 생길까?
끝나면 이렇게 말할 수 있다 — “LLM은 생각하는 사람이 아니라, 다음 토큰을 계속 고르는 엔진이다.”
사장님 보고 한 줄 요약: 신제품 출시일은
버튼을 누르면 확률이 가장 높은 조각이 문장 뒤에 붙는다.
컨텍스트 창 = AI의 책상이다. 책상에 올라온 종이만 읽을 수 있고, 책상 크기(토큰 한도)는 정해져 있다. 버튼을 순서대로 눌러 책상이 채워지는 과정을 보자.
한국어로 쉽게 설명해. 전문 용어에는 비유를 붙여.
RAG가 뭔지 초보자에게 설명해줘.
문서 조각, 검색 결과, 회의록처럼 밖에서 찾아온 자료.
RAG는 필요한 자료를 찾아 책상 위에 올려주는 방식입니다.
그럼 임베딩은 RAG에서 어떤 역할이야?
책상이 차면 오래된 종이를 치우거나 요약해야 한다. 이게 “컨텍스트 관리”다.
“대화가 길어지면 오래된 내용은 요약해서 컨텍스트를 관리해줘. 중요한 결정사항은 따로 저장해줘.”
LLM이 어제 회의 내용을 “기억해서” 답할 수 있을까?
끝나면 이렇게 말할 수 있다 — “검색은 키워드 맞추기가 아니라, 지도에서 가까운 점 찾기다.”
그래프를 좌우로 움직여 세 축과 문장을 확인하세요.
“검색 기능은 키워드 검색 말고 임베딩 기반 의미 검색으로 만들어줘. 비슷한 뜻이면 단어가 달라도 찾게.”
“멍멍이 최고”라고 검색하면 이 지도에서 어떤 문장이 먼저 나올까?
끝나면 이렇게 말할 수 있다 — “RAG는 AI를 다시 가르치는 게 아니라, 참고자료를 펼쳐주는 방식이다.”
긴 문서를 작은 조각(청크)으로 나눈다.
조각마다 임베딩 좌표를 붙여 DB에 저장한다.
질문과 의미가 가까운 조각만 골라낸다.
찾은 조각을 컨텍스트에 넣어 근거 있는 답을 만든다.
같은 문서라도 “어떻게 자르냐”가 RAG 품질을 좌우한다. 두 방식을 비교해 보자.
# 회의록 업로드 기능
## 1. 오디오 업로드
사용자는 회의 녹음 파일을 업로드한다.
앱은 파일 형식과 용량을 먼저 확인한다.
업로드가 끝나면 서버는 처리 대기열에 작업을 넣는다.
## 2. STT 변환
서버는 STT API로 음성을 텍스트로 바꾼다.
긴 회의는 10분 단위로 나눠 변환한다.
변환 결과에는 발화 시간과 화자 후보를 함께 저장한다.
## 3. 저장, 검색, 비용 기록
긴 회의록은 주제별 챕터로 나누어 저장한다.
각 챕터는 임베딩되어 검색용 DB에 들어간다.
모든 STT와 LLM 호출은 사용량 로그에 기록한다.
청킹 = 긴 문서를 AI가 다루기 좋은 조각으로 자르는 일.
사용자는 회의 녹음 파일을 업로드한다. 앱은 파일 형식과 용량을 먼저 확인한다. 업로드가 끝나면 서버는 처리 대기열에 작업을 넣는다.
업로드가 끝나면 서버는 처리 대기열에 작업을 넣는다. 서버는 STT API로 음성을 텍스트로 바꾼다. 긴 회의는 10분 단위로 나눠 변환한다.
긴 회의는 10분 단위로 나눠 변환한다. 변환 결과에는 발화 시간과 화자 후보를 함께 저장한다. 긴 회의록은 주제별 챕터로 나누어 저장한다.
“사내 문서 질문 기능은 RAG로 만들어줘. 문서를 제목 단위로 자르고, 질문과 가까운 조각 3개만 컨텍스트에 넣어줘.”
RAG를 도입하면 AI 모델 자체가 우리 회사 문서를 학습하게 될까?
끝나면 이렇게 말할 수 있다 — “API는 서비스별 주문 창구, MCP는 AI 도구용 공용 플러그다.”
AI에게 파일함, 캘린더, DB를 쓰게 하려면 원래는 도구마다 연결 코드를 따로 만들어야 했다. MCP는 그 연결을 하나의 표준 규격으로 통일한 약속이다. 도구를 눌러 AI에 꽂아보자.
“캘린더 연동은 직접 구현하지 말고 공식 API를 써줘. 실패했을 때의 에러 처리와 로그도 같이 만들어줘.”
내 앱에 “음성을 글자로 바꾸는 기능”을 넣고 싶다. 가장 현실적인 방법은?
끝나면 이렇게 말할 수 있다 — “같은 정보가 여러 줄에 반복되면, 장부를 나눌 때가 된 것이다.”
| 사번 | 이름 | 이메일 | 법인 | 부서 | 직책 | 매니저 | FTE 1월 | FTE 2월 |
|---|---|---|---|---|---|---|---|---|
| 26001429 | 김민수 | [email protected] | KR01 | HR | HR Manager | 이서연 | 1.0 | 0.8 |
| 26001429 | 김민수 | [email protected] | KR01 | People | People Lead | 이서연 | 1.0 | 0.8 |
| 26001802 | 박지훈 | [email protected] | KR01 | Operations | Ops Specialist | 김민수 | 1.0 | 1.0 |
문제 김민수가 두 줄에 반복되고, 월이 바뀔 때마다 칸이 옆으로 늘어난다. 수정할 곳이 많아져 실수가 생기기 쉽다.
버튼을 누르면 엑셀 한 장이 사람 장부 자리 장부 근무기록 장부 세 권으로 나뉜다.
사람 자체의 신원 카드. 부서를 옮겨도 안 바뀌는 값만 둔다.
| person_id | employee_id | name | work_email | legal_entity |
|---|---|---|---|---|
| P001 | 26001429 | 김민수 | [email protected] | KR01 |
| P002 | 26001802 | 박지훈 | [email protected] | KR01 |
조직 안의 의자. 사람이 나가도 의자는 남는다.
| position_code | org_code | title | function | manager_position |
|---|---|---|---|---|
| KR01_HR_L4_001 | KR01_HR_1000 | HR Manager | HR | KR01_HR_L5_001 |
| KR01_OPS_L2_014 | KR01_OPS_1200 | Ops Specialist | Operations | KR01_HR_L4_001 |
누가 어느 의자에 언제 얼마나 앉았는지 적는 연결 장부.
| person_id | position_code | period | actual_fte | source |
|---|---|---|---|---|
| P001 | KR01_HR_L4_001 | 2026-01 | 1.0 | LOCAL_HR |
| P001 | KR01_HR_L4_001 | 2026-02 | 0.8 | LOCAL_HR |
| P002 | KR01_OPS_L2_014 | 2026-02 | 1.0 | GLOBAL_HR |
유료 AI를 쓰는 앱이라면 장부가 하나 더 필요하다. 호출할 때마다 “무슨 모델을, 어떤 기능에서, 얼마나 썼는지”를 남기는 사용량 로그다. 이 장부가 없으면 어느 기능에서 돈이 새는지 아무도 모른다.
“엑셀처럼 한 장에 다 넣지 말고, 사람·자리·기록처럼 역할별 장부로 나눠서 DB를 설계해줘.”
3월이 되면 이 데이터는 어떻게 기록될까?
전부 비개발자가 바이브코딩으로 만든 실제 프로젝트다. 파이프라인의 색을 읽어보자.
매일 쏟아지는 뉴스를 모아 비슷한 기사끼리 묶고, AI가 검수한 뉴스레터로 만들어 보낸다.
대화로 방향을 잡으면, 역할이 나뉜 AI 작업자들이 보고서를 만들어 DOCX 파일로 찍어낸다.
엑셀식 인사 데이터를 방·의자·사람 장부로 나누고, AI는 초안만 만들고 사람이 승인한다.
노트와 회의 녹음을 모아 두면, 질문할 때 AI가 관련 조각을 찾아 읽고 근거 있게 답한다.
오늘 배운 개념은 결국 “AI에게 어떻게 시키느냐”로 완성된다. 필요할 때 복사해서 쓰자.
“유료 AI를 호출하는 모든 코드에는 모델명, 토큰 수, 예상 비용을 DB에 기록하는 로직을 같이 넣어줘.”
“문서 검색 기능은 RAG로 만들어줘. 문서를 조각내고 임베딩해서, 질문과 가까운 조각만 컨텍스트에 넣어줘.”
“DB는 엑셀처럼 한 장에 다 넣지 말고 역할별 장부로 나눠 설계해줘. 각 장부의 역할을 한 줄씩 설명해줘.”
“AI가 DB 원본을 직접 고치지 않게 해줘. 초안을 만들면 사람이 승인한 뒤에만 반영되게 하고, 감사 로그를 남겨줘.”
“외부 기능은 공식 API로 연결해줘. 실패했을 때의 에러 처리, 재시도, 로그까지 같이 만들어줘.”
“지금 만든 구조를 비개발자에게 설명하듯 그림과 비유로 설명해줘. 내가 이해 못 하면 다시 쉽게.”
오늘의 한 문장
“AI 앱을 만든다는 건, AI의 책상에 무엇을 올릴지 정하고 장부를 남기는 일이다.”