참고 자료
실습 데이터 파일
실습에 쓰는 파일은 교안과 함께 받은 data 폴더에 있습니다. 모두 연습용으로 만든 가상 데이터이고, 실제 회사나 고객의 데이터가 아닙니다. 택배사 이름(한결택배, 빠른별택배, 새벽길택배)도 지어낸 것입니다. 장이 추가되면 이 목록도 함께 늘어납니다. 실제 공개 자료를 구하는 곳은 장마다 프로젝트의 "실제 데이터로 해 보려면"에 적었습니다.
파일 목록
| 파일 | 내용 | 크기 | 쓰는 곳 |
|---|---|---|---|
delivery.csv | 온라인 쇼핑몰의 3~4월 배송 주문과 지연 여부. 빈칸, 입력 실수, 중복 행이 일부러 들어 있다 | 1215행 10열 | 1장 실습 1, 실습 2, 13장 실습 1, 3 |
out_delivery_clean.csv | 1장 실습 2가 정리해 저장한 배송 주문 | 1194행 10열 | 1장 실습 3부터 실습 6 |
reviews.csv | 쇼핑몰 상품 리뷰와 긍정·부정 표시. 표시가 뒤바뀐 리뷰가 조금 섞여 있다 | 800행 4열 | 1장 프로젝트 1 |
daily_orders.csv | 가상 쇼핑몰의 2024~2025년 하루 주문량과 그날의 조건 | 731행 8열 | 2장 실습 3부터 실습 6 |
cs_dialogs.txt | 가상 쇼핑몰의 고객센터 대화 1,500개(문장 틀로 지어낸 글) | 80,312자 | 3장 실습 1, 3, 4 |
shop_faq.csv | 가상 쇼핑몰의 자주 묻는 질문과 답(정책은 지어냈다) | 12행 3열 | 3장 프로젝트 1 |
out_minigpt.pt | 3장 실습 4가 학습해 저장한 미니 GPT 의 가중치 | 약 0.5MB | 3장 실습 4 |
shop_corpus.txt | 가상 쇼핑몰의 공지, 상품 설명, 이용 안내, 후기, 상담을 섞은 글 2,500줄 | 약 13만 자 | 4장 실습 3~5 |
sft_shop.jsonl | 가상 쇼핑몰의 질문 96개와 상담 말투의 답. 의도 12가지마다 질문 8개(둘은 시험용) | 96줄 | 4장 실습 6 |
bakery_corpus.txt | 가상의 동네 빵집의 안내문, 메뉴 소개, 공지, 후기 2,000줄 | 약 10만 자 | 4장 프로젝트 1 |
bakery_qa.jsonl | 가상의 동네 빵집의 질문 80개와 답. 의도 10가지마다 질문 8개(둘은 시험용) | 80줄 | 4장 프로젝트 1 |
out_tok/, out_pretrained/, out_sft_shop/ | 4장 실습 3, 5, 6 이 저장한 토크나이저와 모델 | 폴더 | 4장 실습 4~6 |
out_bakery_tok/, out_bakery_pre/ | 4장 프로젝트가 저장한 토크나이저와 모델 | 폴더 | 4장 프로젝트 1 |
dpo_shop.jsonl | 쇼핑몰 질문 72개마다 고른 답(친절하고 정확한 답)과 반대 답(회피, 무뚝뚝, 두루뭉술) | 72줄 | 5장 실습 5, 6 |
out_lora_shop/, out_dpo_shop/ | 5장 실습 3, 6 이 저장한 LoRA 어댑터 | 폴더(각 수 MB) | 5장 실습 4 |
shop_policy.txt | 가상 쇼핑몰의 이용 안내. 조항 25개가 빈 줄로 나뉘어 있다(정책은 지어냈다) | 1,885자 | 6장 실습 2~6, 18장 프로젝트 2 |
shop_policy_qa.jsonl | 이용 안내에 대한 질문 30개(문서에 있는 24개, 없는 6개)와 정답 열쇠, 근거 조항 | 30줄 | 6장 실습 1, 3~6 |
apt_rules.txt | 가상의 "가람숲 아파트" 관리규약. 장 8개, 조항 27개(실제 단지·법령과 관계없다) | 2,367자 | 6장 프로젝트 1, 8장 프로젝트 1 |
apt_rules_qa.jsonl | 관리규약에 대한 질문 25개(규약에 있는 20개, 없는 5개)와 정답 열쇠, 근거 조항 제목 | 25줄 | 6장 프로젝트 1 |
it_helpdesk.md | 가상 회사 "솔내기술"의 IT 지원 안내. ## 제목 아래 글이 이어지는 주제 30개(지어낸 내용) | 2,878자 | 7장 실습 2~6 |
it_helpdesk_qa.jsonl | IT 지원 안내에 대한 질문 36개와 근거 글, 유형(뜻 28개, 낱말 8개) | 36줄 | 7장 실습 4~6 |
company_rules.txt | 가상 회사 "솔내기술"의 사내 규정집. 장 7개, 조항 30개(지어낸 규정) | 2,177자 | 7장 프로젝트 1, 9장 실습 3~5, 10장 실습 5, 16장 실습 1~6, 프로젝트 1, 18장 프로젝트 1 |
company_rules_qa.jsonl | 사내 규정집에 대한 질문 25개(있는 20개, 없는 5개)와 정답 열쇠, 근거 조항 제목 | 25줄 | 7장 프로젝트 1, 16장 실습 2~4, 6, 프로젝트 1 |
out_helpdesk.faiss, out_chroma/ | 7장 실습 3이 저장한 FAISS 인덱스와 Chroma 컬렉션 | 파일 46KB, 폴더 | 7장 실습 3 |
apt_notices.txt | 가람숲 아파트의 공지 8건. 한 줄에 [날짜] 제목: 내용. 재활용 요일, 10월 관리비 납부일처럼 규약을 바꾸는 공지가 들어 있다 | 697자 | 8장 프로젝트 1 |
apt_chat_tests.jsonl | 대화 시험 12개. 사용자의 말 목록, 마지막 질문의 정답 열쇠, 근거(공지/규약) | 12줄 | 8장 프로젝트 1 |
washer_manual.md | 가상의 드럼세탁기 "포근 WD-210" 설명서. 절 16개, 표 2개(세탁 코스, 오류 코드) | 2,071자 | 8장 프로젝트 2 |
washer_qa.jsonl | 설명서에 대한 질문 25개(있는 22개, 없는 3개)와 정답 열쇠, 근거 절 제목 | 25줄 | 8장 프로젝트 2 |
civil_faq.csv | 가상의 "가온구청" 민원 FAQ. 번호, 부서, 질문, 답변(제도와 금액은 지어냈다) | 40행 4열 | 8장 프로젝트 3 |
civil_queries.csv | 주민이 할 법한 말과 정답 FAQ 번호(0 은 FAQ 에 없는 말) | 32행 2열 | 8장 프로젝트 3 |
rooms.csv | 가상 회사 "솔내기술"의 회의실 6개. 방, 층, 정원, 장비 | 6행 4열 | 9장 프로젝트 1 |
room_bookings.csv | 회의실의 기존 예약 10건(2026년 10월 28일~30일). 날짜, 방, 시작, 끝, 제목 | 10행 5열 | 9장 프로젝트 1 |
agent_tasks.jsonl | 예약 에이전트에게 줄 요청 10개와 기대("예약"/"예약 안 함"), 채점 조건 | 10줄 | 9장 프로젝트 1 |
out_agent_log.jsonl | 9장 실습 6이 걸음마다 남긴 도구 호출 기록 | 몇 줄 | 9장 실습 6 |
stock.csv | 가상 회사 "솔내기술"의 사무용품 재고. 코드, 품목, 분류, 창고(본사 창고, 물류 센터), 수량, 최소수량, 단가 | 20행 7열 | 10장 실습 1~3, 프로젝트 1 |
inquiries.csv | 가상 쇼핑몰의 고객 문의와 분류(배송, 교환반품, 결제, 회원, 기타). 앞 20개는 예시용, 뒤 20개는 시험용 | 40행 2열 | 10장 실습 4, 6, 17장 프로젝트 2, 3(40개 모두 시험용), 19장 실습 4~6(40개 모두 시험용) |
inventory_tasks.jsonl | 재고 도우미에게 줄 요청 8개, 정답 열쇠, 기대하는 출고 예약 | 8줄 | 10장 프로젝트 1 |
out_stock_server.py, out_inventory_server.py | 10장 실습 1과 프로젝트가 쓴 MCP 서버 파일 | 파이썬 파일 | 10장 실습 1~3, 프로젝트 1 |
intranet/ | 가상의 제조 회사 "누리솔정밀"의 사내 문서 13개(아래 표)와 _문서목록.csv. 정제 연습을 위해 흠을 일부러 넣었다 | 파일 14개 | 11장 실습 2, 3, 프로젝트 1 |
intranet_update/ | 바뀐 문서 둘(개정한 경비 정산 기준, 새 통근버스 공지)과 _변경목록.csv | 파일 3개 | 11장 프로젝트 1 |
intranet_qa.jsonl | 사내 문서 질문 16개. 질문, 열쇠(답에 있어야 할 말), 출처 제목, 등급(그 답을 볼 수 있는 최소 등급) | 16줄 | 11장 실습 6 |
intranet_update_qa.jsonl | 문서를 갱신한 뒤에 물을 질문 4개. 열쇠는 갱신 뒤의 정답 | 4줄 | 11장 프로젝트 1 |
out_offline.py | 11장 실습 1이 만든, 바깥 연결을 막는 모듈 | 파이썬 파일 | 11장 실습 1, 4, 6, 프로젝트 1 |
out_carry_list.csv | 11장 실습 1이 만든 들고 갈 모델 목록(이 PC 의 캐시에 든 모델과 크기) | csv | 11장 실습 1 |
out_docs_raw.jsonl, out_docs_clean.jsonl, out_chunks.jsonl | 11장 실습 2, 3이 모은 문서, 정제한 문서, 라벨 붙은 조각 | jsonl | 11장 실습 3, 4 |
out_intranet.faiss, out_chroma11/, out_qdrant11/ | 11장 실습 4가 저장한 세 벡터DB | 파일과 폴더 | 11장 실습 4, 6 |
out_rag_log.jsonl | 11장 실습 6의 질문, 사용자, 답, 찾은 문서 기록 | jsonl | 11장 실습 6 |
out_live/, out_chroma_live/, out_index_state.json | 11장 프로젝트의 운영 폴더, 색인, 문서별 해시 기록 | 폴더와 json | 11장 프로젝트 1 |
products/P01.png ~ P24.png | 가상 쇼핑몰 "솔빛생활"의 상품 그림 24장(8종류 × 3색). 사진이 아니라 코드로 그린 단순한 그림 | 256×256 PNG | 12장 실습 1~4 |
product_labels.csv | 상품 그림의 채점용 정답 표. 코드, 파일, 이름, 종류, 영어, 색 | 24행 6열 | 12장 실습 1~4 |
product_guide.md | 그림과 표가 섞인 상품 안내서. 그림 대체 글에는 상품 이름만 있고 색은 그림에만 있다 | 2,601자 | 12장 실습 4 |
product_guide_qa.jsonl | 색과 종류로 묻는 질문 12개. 질문, 열쇠(가격이나 치수), 코드(정답 상품) | 12줄 | 12장 실습 4 |
care_guide.md | 솔빛생활 고객 안내서(배송, 교환, 관리법 등 절 12개). 데이터셋 자동 생성의 재료 | 940자 | 12장 실습 5, 6, 프로젝트 1 |
care_test.jsonl | 사람이 쓴 시험 질문 12개와 열쇠. 생성 데이터와 따로 둔다 | 12줄 | 12장 실습 6, 프로젝트 1 |
out_captions.csv | 12장 실습 3이 비전 모델로 만든 그림 설명 | 24행 | 12장 실습 3, 4 |
out_generated_raw.jsonl, out_sft_train.jsonl, out_dataset_card.json | 12장 실습 5, 6이 만든 생성 데이터, 거른 학습 데이터(채팅 꼴), 데이터셋 카드 | jsonl, json | 12장 실습 5, 6, 프로젝트 1 |
out_lora_care/ | 12장 프로젝트가 저장한 LoRA 어댑터 | 폴더 | 12장 프로젝트 1 |
out_delay_model.joblib | 13장 실습 1이 저장한 배송 지연 예측 파이프라인(전처리 + 로지스틱 회귀)과 판, 기준값, 성능 | 4.4KB | 13장 실습 1~6, 14장 실습 1~6 |
out_delay_api.py | 13장 실습 2가 만든 FastAPI 예측 API 파일 | 파이썬 파일 | 13장 실습 2~4, 14장 실습 3~5 |
out_rules_api_log.jsonl | 13장 프로젝트의 요청 기록(사용자, 주소, 상태, 걸린 시간. 키는 남기지 않는다) | jsonl | 13장 프로젝트 1 |
out_app_predict.py, out_app_chat.py, out_app_api.py | 14장 실습 1~3이 만든 Streamlit 화면 파일(예측, 채팅, API 연결) | 파이썬 파일 | 14장 실습 1~4 |
out_deploy/ | 14장 실습 5, 6이 만든 배포 폴더. api, ui 마다 코드, requirements.txt, Dockerfile, .dockerignore 와 compose.yaml | 폴더 | 14장 실습 5, 6 |
out_service/ | 14장 프로젝트의 서비스 폴더. 규정 질의 API, 채팅 화면, compose.yaml, .env.example | 폴더 | 14장 프로젝트 1 |
rag_query_log.csv | 사내 규정 도우미에 들어온 질문 기록. 순번, 직원(E001 꼴의 지어낸 번호), 질문. 자주 묻는 질문이 몰리고, 같은 질문이 띄어쓰기와 물음표만 다르게 되풀이된다 | 80행 3열 | 16장 실습 5, 프로젝트 1 |
summary_docs.jsonl | 가상 쇼핑몰 솔빛생활의 사내 문서 12건(회의록 4, 공지 3, 리뷰 묶음 3, 장애 보고 2). 번호, 종류, 제목, 본문, 핵심(요약에 들어가야 할 사실 셋). 부서, 날짜, 숫자는 지어낸 것 | jsonl 12줄 | 17장 프로젝트 1, 3 |
inquiry_train.csv | 문의 분류기 학습용 문의. 틀에 상품 이름을 넣어 만들었다. 문의, 분류(분류마다 40개) | 200행 2열 | 17장 프로젝트 2, 19장 실습 4~6 |
out_summary_api.py | 17장 프로젝트 1의 문서 요약 API(FastAPI, Ollama) | 파이썬 파일 | 17장 프로젝트 1, 3 |
out_inquiry_clf.joblib, out_inquiry_api.py | 17장 프로젝트 2의 빠른 분류기(로지스틱 회귀, 임베딩 이름, 판)와 문의 분류 API | 파일 | 17장 프로젝트 2, 3 |
out_llm_serving/ | 17장 프로젝트 3의 배포 폴더. summary, inquiry 마다 app.py, requirements.txt, Dockerfile 과 Ollama 를 담은 compose.yaml | 폴더 | 17장 프로젝트 3 |
hr_employees.csv | 가상 회사 솔내기술의 직원. 사번, 이름(지어낸 이름), 팀, 남은연차, 팀장 | 7행 5열 | 18장 프로젝트 1 |
office_tasks.jsonl | 사내 업무 도우미에게 들어오는 요청 12개. 사번, 요청, 기대(답, 신청, 신청 안 함), 정답열쇠, 금지어, 기대하는 신청 | jsonl 12줄 | 18장 프로젝트 1 |
shop_orders.csv | 가상 쇼핑몰 솔빛생활의 주문. 주문번호, 고객, 주문일, 받은날, 상태, 상품, 분류, 금액 | 8행 8열 | 18장 프로젝트 2 |
cs_tasks.jsonl | 고객 상담 에이전트에게 들어오는 요청 12개. 고객, 요청, 기대(답, 반품, 반품 안 함, 넘김), 정답열쇠, 금지어, 기대하는 반품. 프롬프트 인젝션 요청이 하나 들어 있다 | jsonl 12줄 | 18장 프로젝트 2 |
out_cs_agent.py, out_cs_agent_api.py | 18장 프로젝트 2의 상담 에이전트 핵심(도구, 루프, 실행 기록)과 그 API | 파이썬 파일 | 18장 프로젝트 2 |
inquiry_oct.csv | 10월에 상담원이 손으로 분류했다고 지어낸 문의. 문의, 분류(분류마다 8개) | 40행 2열 | 19장 실습 5, 6 |
inquiry_nov.csv | 11월 묶음으로 지어낸 문의. 라벨 도구 오류를 흉내 내 분류를 일부러 한 칸씩 밀어 두었다(배송→교환반품, 교환반품→결제, 결제→회원, 회원→기타, 기타→배송) | 40행 2열 | 19장 실습 6 |
library/day0/ ~ library/day4/ | 가상의 하늘숲 도서관 이용 안내 문서를 밤마다 통째로 내보낸 폴더. 문서마다 첫 문단이 제목. day1 정상 변경(문서 둘 추가, 둘 수정), day2 수정한 둘이 옛 판으로 덮임, day3 빈 파일 하나와 글자가 깨진 문서 넷, day4 정상 변경(열람실 시간, 주차 문서를 오시는 길로 합침) | 폴더 다섯, 문서 10~12개씩 | 19장 실습 1~3, 프로젝트 1, 20장(day4) |
library_qa.jsonl | 도서관 색인을 평가할 질문. 질문, 근거(맞는 조각에 든 글), 부터·까지(그 질문이 맞는 밤) | jsonl 24줄 | 19장 프로젝트 1 |
out_flow.py | 19장 실습 1의 작은 워크플로 실행기(run_flow, Stop) | 파이썬 파일 | 19장 실습 1, 3, 6, 프로젝트 1 |
out_index/ | 19장 실습 3의 색인 판 폴더(vNNN/), 가리킴(CURRENT), 임베딩 캐시 | 폴더 | 19장 실습 3 |
out_mlflow.db, out_mlruns/ | 19장의 MLflow 기록(SQLite)과 모델 파일. 실습 4가 지우고 새로 만든다 | 파일, 폴더 | 19장 실습 4~6, 프로젝트 1 |
out_inquiry_nov_fixed.csv, out_serving/ | 19장 실습 6이 바로잡은 11월 묶음, 배포한 모델과 release.json | 파일, 폴더 | 19장 실습 6 |
out_rag_index/ | 19장 프로젝트 1의 도서관 색인 판 폴더와 가리킴 | 폴더 | 19장 프로젝트 1 |
library_eval.jsonl | 도서관 챗봇의 답 평가 묶음. 번호, 질문, 정답(참조 답), 열쇠(세로줄로 여럿), 종류(답 18, 모름 4), 근거 | jsonl 22줄 | 20장 실습 1~4 |
judge_cases.jsonl | LLM 채점자를 시험할 답 18개. 번호, 질문, 정답, 답, 사람(1 맞음, 0 틀림), 유형. 답은 일부러 지어 썼고 사람의 판정은 교안을 만든 사람이 매겼다 | jsonl 18줄 | 20장 실습 3 |
chat_log.csv | 도서관 챗봇의 운영 기록 8주(2026-09-07 ~ 2026-11-01, 지어낸 기록). 시각, 질문, 지연초, 답토큰, 오류, 모름, 피드백. 6주째부터 문서에 없는 새 주제(스마트 도서관, 시험 기간 열람실, 영어 질문)가 늘고, 10월 20~22일은 응답이 느리고 21일에 오류가 몰린다 | 1,712행 7열 | 20장 실습 5, 6, 프로젝트 1 |
out_libbot.py | 20장 실습 1의 도서관 챗봇 모듈(검색, Ollama 호출, 두 판의 프롬프트) | 파이썬 파일 | 20장 실습 1, 3, 4, 프로젝트 1 |
out_lib_answers.csv, out_lib_scores.csv | 20장 실습 1의 답(판 v2·v3, 검색한 자료)과 실습 2의 유사도·규칙 판정 | 44행 | 20장 실습 1~4 |
out_weekly.csv, out_new_questions.csv, out_dashboard.py | 20장 프로젝트의 주간 표, 처음 보는 질문, Streamlit 대시보드 | 파일 | 20장 프로젝트 1 |
injection_tests.jsonl | 도서관 챗봇에 걸 인젝션 시험 묶음(지어낸 공격문). 번호, 종류(직접 8, 간접 6, 정상 6), 질문, 심은자료, 표식(CANARY 는 가짜 관리 코드 유출) | jsonl 20줄 | 21장 실습 1, 2, 프로젝트 1 |
cs_records.csv | 개인정보가 섞인 상담 메모(모두 지어낸 것). 번호, 메모, 정답(심어 둔 개인정보 목록 json). 전화는 010-0000-XXXX, 이메일은 example.com, 주민번호는 뒷자리를 1234567·2345678 로 둔 가짜, 카드는 결제 시험용 공개 번호. 주문번호와 날짜처럼 닮은 숫자, 지어낸 이름도 들어 있다 | 40행 3열 | 21장 실습 3, 4, 프로젝트 1 |
secure_docs.jsonl | 가상 회사 솔내기술의 사내 문서 12개(지어낸 내용). 번호, 제목, 부서, 등급(1 공개, 2 사내, 3 비밀), 내용 | jsonl 12줄 | 21장 실습 5, 프로젝트 1 |
out_secbot.py, out_guard.py | 21장 실습 1의 시험 대상 챗봇(가짜 관리 코드를 넣은 프롬프트)과 실습 2의 인젝션 방어 | 파이썬 파일 | 21장 실습 1~5, 프로젝트 1 |
out_inj_baseline.csv, out_pii_patterns.json | 21장 실습 1의 방어 없는 답, 실습 3의 다듬은 개인정보 패턴 | 파일 | 21장 실습 2, 4, 프로젝트 1 |
out_checks.py, out_ci_check.py, out_security_report.md | 21장 프로젝트의 점검 함수, CI 스크립트, 점검 보고서 | 파일 | 21장 프로젝트 1 |
scikit-learn 의 load_digits | 8×8 손글씨 숫자 그림 1,797장. 파일이 아니라 scikit-learn 에 들어 있는 실제 공개 자료 | 1797×64 | 2장 프로젝트 1 |
out_ 으로 시작하는 파일은 실습 코드가 만듭니다. 없으면 그 파일을 만드는 실습을 먼저 실행합니다.
delivery.csv
| 열 | 뜻 | 유형 |
|---|---|---|
| 주문번호 | 주문마다 붙은 번호 | 식별자 |
| 주문일 | 주문한 날(2026-03-01 ~ 2026-04-30) | 날짜(글자로 저장) |
| 주문시각 | 주문한 시(0~23) | 정수 |
| 지역 | 서울, 경기, 인천, 지방 | 범주 |
| 거리km | 물류센터에서 받는 곳까지의 거리. 입력 실수로 9999 가 든 행이 있다 | 소수 |
| 무게kg | 짐의 무게. 빈칸이 있다 | 소수 |
| 상품분류 | 의류, 식품, 가전, 도서, 생활용품 | 범주 |
| 날씨 | 맑음, 흐림, 비, 눈. 빈칸이 있다 | 범주 |
| 택배사 | 한결택배, 빠른별택배, 새벽길택배(가상의 이름) | 범주 |
| 지연 | 1이면 약속한 날보다 늦게 도착, 0이면 정시 | 정수(정답) |
out_delivery_clean.csv 는 1장 실습 2가 만듭니다. 열이 같고, 중복 행과 거리 9999 행을 빼고 빈칸을 채운 것입니다. 무게kg 의 빈칸은 중앙값으로, 날씨의 빈칸은 '모름' 으로 채웠습니다.
reviews.csv
| 열 | 뜻 | 유형 |
|---|---|---|
| 리뷰번호 | 행 번호 | 식별자 |
| 상품분류 | 의류, 식품, 가전, 도서, 생활용품 | 범주 |
| 리뷰 | 리뷰 글. 문장 조각을 이어 붙여 지어낸 것이다 | 글 |
| 긍정 | 1이면 긍정, 0이면 부정 | 정수(정답) |
daily_orders.csv
| 열 | 뜻 | 유형 |
|---|---|---|
| 날짜 | 2024-01-01 ~ 2025-12-31 | 날짜(글자로 저장) |
| 주말 | 토요일·일요일이면 1 | 정수(0/1) |
| 공휴일 | 쉬는 날이면 1. 실제 달력과는 관계없이 지어낸 표시다 | 정수(0/1) |
| 기온 | 그날의 기온(도) | 소수 |
| 강수mm | 그날의 강수량. 비가 오지 않은 날은 0 | 소수 |
| 광고비만원 | 그날 쓴 광고비(만원) | 정수 |
| 할인행사 | 할인행사를 한 날이면 1 | 정수(0/1) |
| 주문량 | 그날 들어온 주문 건수(정답) | 정수 |
신경망 연습용으로 곡선 관계를 심어 만들었습니다. 기온은 너무 덥거나 추우면 주문이 줄고, 광고비는 늘수록 효과가 줄어들고, 할인행사는 주말에 훨씬 잘 먹힙니다. 실제 쇼핑몰의 숫자가 아닙니다.
load_digits
scikit-learn 을 설치하면 함께 들어오는 손글씨 숫자 자료입니다. from sklearn.datasets import load_digits 로 인터넷 없이 불러옵니다. 실제 사람이 쓴 숫자를 8×8 칸으로 줄인 공개 자료(UCI 의 손글씨 숫자 자료)이고, 이 교안이 지어낸 데이터가 아닙니다.
cs_dialogs.txt
"고객: …" 한 줄과 "상담원: …" 한 줄이 짝을 이루는 대화 1,500개입니다. 상품 열 가지(티셔츠, 운동화, 커피머신 등)와 문의 여덟 가지(배송, 교환, 사이즈, 불량, 환불, 쿠폰, 취소, 재고)를 문장 틀에 끼워 지어냈습니다. 받침에 따라 조사(은/는, 을/를, 이/가)를 골라 붙였습니다. 서로 다른 글자는 124가지입니다.
shop_faq.csv
| 열 | 뜻 | 유형 |
|---|---|---|
| 분류 | 배송, 교환, 환불, 주문, 결제, 쿠폰, 회원, 상담 | 범주 |
| 질문 | 자주 묻는 질문 | 글 |
| 답변 | 쇼핑몰이 정한 답. 연습용으로 지어낸 정책이다 | 글 |
sft_shop.jsonl, bakery_qa.jsonl
한 줄이 JSON 하나인 jsonl 파일입니다.
| 열 | 뜻 |
|---|---|
| 의도 | 질문의 종류(배송 기간, 배송비, 영업시간 등) |
| 질문 | 같은 의도를 다르게 말한 질문 |
| 답변 | 의도마다 하나인 모범 답. 쇼핑몰은 "안녕하세요, 고객님. … 감사합니다.", 빵집은 "안녕하세요. … 맛있게 드세요." 말투 |
| 정답열쇠 | 바른 답이면 꼭 들어 있어야 할 낱말(예: 3만원, 7일, 오전 8시) |
| 나눔 | train(학습용) 또는 test(시험용). 의도마다 마지막 질문 둘이 시험용이다 |
쇼핑몰의 정책은 3장의 shop_faq.csv 와 같은 내용입니다. 빵집의 영업시간, 메뉴, 가격은 모두 지어낸 것입니다.
dpo_shop.jsonl
| 열 | 뜻 |
|---|---|
| prompt | sft_shop.jsonl 의 학습용 질문 |
| chosen | "안녕하세요, 고객님. … 감사합니다." 꼴의 친절하고 정확한 답 |
| rejected | 정해진 흠이 있는 답 셋 가운데 하나(회피, 무뚝뚝, 두루뭉술) |
| 의도 | 질문의 종류 |
5장 프로젝트의 빵집 선호 데이터는 파일로 두지 않고, bakery_qa.jsonl 의 답변에서 인사를 떼어 코드 안에서 만듭니다.
shop_policy_qa.jsonl, apt_rules_qa.jsonl
| 열 | 뜻 |
|---|---|
| 질문 | 손님이나 주민이 물을 법한 질문. 문서의 낱말을 일부러 바꿔 적은 것이 있다 |
| 정답열쇠 | 답에 들어 있어야 할 낱말. 여럿이면 | 로 나눴다. 문서에 없는 질문은 빈 글자 |
| 근거조항 | 답이 든 조항. shop_policy_qa.jsonl 은 번호(없으면 0), apt_rules_qa.jsonl 은 조항 제목(없으면 빈 글자) |
it_helpdesk_qa.jsonl
| 열 | 뜻 |
|---|---|
| 질문 | 직원이 물을 법한 질문 |
| 근거 | 정답 조각에 들어 있어야 할 글의 일부. 조각을 어떻게 나누든 이 글이 든 조각을 정답으로 본다 |
| 유형 | "뜻"은 문서와 낱말을 바꿔 적은 질문, "낱말"은 코드(VPN-809, HW-05)나 이름이 그대로 든 질문 |
intranet 폴더(11차시)
가상의 제조 회사 "누리솔정밀"의 사내 문서입니다. 회사, 사람, 부서, 규정, 숫자, 전화번호, 메일 주소는 모두 지어낸 것입니다. 등급은 1 공개(협력사 직원 포함), 2 사내(정직원), 3 비밀(인사팀)입니다.
| 경로 | 형식 | 등급 | 일부러 넣은 흠 |
|---|---|---|---|
hr/휴가규정_2025.html, hr/휴가규정_2026.html | html | 1 | 같은 규정의 옛 판(반차 하루 전, 이월 5일)과 새 판(오전 9시, 10일). 메뉴와 꼬리말이 섞여 있다 |
hr/복리후생_안내.docx | 워드 | 1 | 경조금이 표로 들어 있다 |
hr/인사평가_기준.md | 마크다운 | 3 | 비밀 문서 |
it/보안수칙.md | 마크다운 | 1 | 담당자의 휴대폰 번호와 메일 주소 |
it/VPN_접속안내.txt | 글 | 2 | 옛 메모장 방식(cp949)으로 저장 |
finance/경비정산기준.txt | 글 | 1 | PDF 에서 뽑은 글처럼 줄이 끊기고 쪽 머리말과 쪽 번호가 있다 |
finance/법인카드_규정.html | html | 2 | 메뉴와 꼬리말 |
notice/공지_사무실이전.html, notice/공지_사무실이전 (1).html | html | 1 | 이름만 다른 똑같은 파일 |
notice/공지_보안점검.html | html | 1 | 메뉴와 꼬리말 |
production/설비점검_절차.md | 마크다운 | 2 | |
production/불량률_현황.csv | 표 | 2 | 라인 3개의 석 달 불량률 |
_문서목록.csv 의 열은 경로, 제목, 부서, 등급, 버전, 작성일입니다. intranet_update/_변경목록.csv 는 여기에 변경(추가, 수정, 삭제) 열이 더 있습니다.
12차시에서 쓰는 멀티모달 모델
| 모델 | 하는 일 | 크기 | 라이선스 |
|---|---|---|---|
sentence-transformers/clip-ViT-B-32 | 그림과 영어 글을 같은 공간의 임베딩(512차원)으로 | 607MB | MIT(OpenAI CLIP) |
sentence-transformers/clip-ViT-B-32-multilingual-v1 | 한국어 등 50여 언어의 글을 위와 같은 공간으로 | 543MB | Apache 2.0 |
qwen2.5vl:3b(Ollama) | 그림을 보고 글로 답하는 비전 언어 모델 | 3.2GB | Qwen Research 라이선스(상업적으로 쓰기 전에 조건을 읽는다) |
7차시에서 쓰는 임베딩·재정렬 모델
| 모델 | 하는 일 | 크기 | 라이선스 |
|---|---|---|---|
intfloat/multilingual-e5-small | 임베딩(384차원) | 470MB 쯤 | MIT |
cross-encoder/mmarco-mMiniLMv2-L12-H384-v1 | 재정렬 | 470MB 쯤 | Apache 2.0 |
6차시에서 쓰는 Ollama 모델
Ollama 로 내려받는 모델은 data 폴더가 아니라 C:\Users\사용자이름\.ollama\models 에 저장됩니다. 설치는 환경설정을 봅니다.
| 모델 | 파일 크기 | GPU 메모리(이 PC) | 라이선스 | 쓰는 곳 |
|---|---|---|---|---|
qwen2.5:0.5b | 397MB | 481MB | Apache 2.0 | 6장 실습 5, 6 |
qwen2.5:1.5b | 986MB | 1.2GB | Apache 2.0 | 6장 실습 6 |
qwen2.5:3b | 1.9GB | 2.2GB | Qwen Research 라이선스(상업적으로 쓰기 전에 조건을 읽는다) | 6장 실습 6, 프로젝트 1, 7장 프로젝트 1, 8장부터 11장 |
qwen2.5:0.5b-instruct-q8_0, qwen2.5:0.5b-instruct-fp16 | 531MB, 994MB | 0.6GB, 1.1GB | Apache 2.0 | 15장 실습 3, 프로젝트 1 |
gemma3:1b | 806MB | Gemma 이용 약관 | 7장 프로젝트 1 | |
llama3.2:1b | 1.3GB | Llama 3.2 커뮤니티 라이선스 | 7장 프로젝트 1 |
3차시에서 내려받는 모델
파일이 아니라 Hugging Face 에서 처음 실행할 때 내려받는 공개 모델입니다.
파일을 다시 만들려면
데이터는 tools/make_data.py 로 만들었습니다. 난수 씨앗을 고정해 두어서 다시 실행해도 같은 파일이 나옵니다.
python tools/make_data.py