여행 가이드 봇 만들기 혼자실습
여행 가이드 봇 만들기 혼자실습에서 직접 따라간 구현 흐름과 코드 증거를 다시 볼 수 있게 정리한 LLM 학습 기록입니다. 본문은 여행 가이드 봇 만들기 - 혼자 실습 순서로 핵심 장면을 먼저 훑고, RAG 실습 준비 같은 코드로 실제 구현을 이어서 확인할 수 있습니다. ipynb/md 원본과 10개 코드 블록, 7개 실행 셀을 함께 남겨 구현 흐름을 다시 따라갈 수 있게 정리했습니다. 주요 스택은 os, langchain_community, langchain_text_splitters, langchain_openai입니다.
빠르게 볼 수 있는 포인트: 여행 가이드 봇 만들기 - 혼자 실습.
남겨둔 자료: ipynb/md 원본과 10개 코드 블록, 7개 실행 셀을 함께 남겨 구현 흐름을 다시 따라갈 수 있게 정리했습니다. 주요 스택은 os, langchain_community, langchain_text_splitters, langchain_openai입니다.
주요 스택: os, langchain_community, langchain_text_splitters, langchain_openai, langchain_chroma
Snapshot
| Item | Value |
|---|---|
| Track | LLM |
| Type | Practice |
| Source Files | ipynb, md |
| Code Blocks | 10 |
| Execution Cells | 7 |
| Libraries | os, langchain_community, langchain_text_splitters, langchain_openai, langchain_chroma, langchain_core, getpass |
| Source Note | 3-5 (실습)여행_가이드_봇_만들기_혼자실습 |
What This Note Covers
여행 가이드 봇 만들기 - 혼자 실습
RAG 실습 준비 같은 코드를 직접 따라가며 여행 가이드 봇 만들기 - 혼자 실습 흐름을 확인했습니다.
- 읽을 포인트: 세부 흐름: RAG 실습 준비
RAG 실습 준비
검색과 컨텍스트 주입 단계를 실제 코드로 묶어 보는 구간입니다.
Why This Matters
RAG 검색 파이프라인
- 왜 필요한가: LLM이 외부 지식을 안정적으로 참조하게 하려면, 생성 전에 관련 문서를 정확히 찾아오는 검색 단계가 먼저 필요합니다.
- 왜 이 방식을 쓰는가: 이 방식은 모델 파라미터만 믿지 않고 최신 문서나 도메인 지식을 붙일 수 있어서 실제 서비스형 QA에 적합합니다.
- 원리: 문서를 청크로 나누고 임베딩한 뒤, 질문과 가까운 벡터를 검색해 프롬프트에 함께 넣는 구조로 동작합니다.
임베딩과 표현 학습
- 왜 필요한가: 텍스트나 토큰을 그대로는 모델이 다룰 수 없기 때문에, 의미를 담은 수치 벡터 표현으로 바꾸는 단계가 필요합니다.
- 왜 이 방식을 쓰는가: Word2Vec, FastText, GloVe 같은 방식은 같은 단어라도 주변 문맥이나 서브워드 정보를 반영해 비교 가능한 표현 공간을 만듭니다.
- 원리: 자주 함께 등장하는 단어는 가까운 벡터가 되도록 학습해, 의미적으로 비슷한 표현이 공간에서도 가까워지게 합니다.
프롬프트 체인 구성
- 왜 필요한가: LLM 호출을 재현 가능하게 만들려면 입력 조합, 프롬프트 템플릿, 후처리 순서를 구조화할 필요가 있습니다.
- 왜 이 방식을 쓰는가: 체인 구조는 실험 중 프롬프트와 입력 변형을 비교하기 쉽고, 이후 RAG나 에이전트 단계로 확장하기도 좋습니다.
- 원리: 질문과 컨텍스트를 정해진 템플릿에 넣고, 모델 호출 결과를 다음 단계 입력으로 넘기며 처리 흐름을 구성합니다.
Implementation Flow
- 여행 가이드 봇 만들기 - 혼자 실습: RAG 실습 준비
Code Highlights
RAG 실습 준비
RAG 실습 준비는 이 노트에서 핵심 구현을 보여주는 코드 블록입니다. 코드 안에서는 실습용 데이터 (제주도 맛집 가이드), 파일 생성 흐름이 주석과 함께 드러납니다.
# 실습용 데이터 (제주도 맛집 가이드)
jeju_content = """
[제주도 맛집 & 여행 가이드]
1. 흑돼지 거리: 제주시 건입동에 위치. 저녁 7시 이후에는 웨이팅이 1시간 이상 발생할 수 있음.
추천 메뉴는 흑돼지 오겹살(200g 2만원). 멜젓에 찍어 먹는 것이 특징.
2. 우도 땅콩 아이스크림: 우도 검멀레 해변 앞이 원조. 가격은 5,000원.
고소한 땅콩 가루가 듬뿍 뿌려져 있음. 배 시간 때문에 오후 4시 이전에 가는 것을 추천.
3. 성산일출봉: 입장료 5,000원. 왕복 소요 시간 50분.
매월 첫째 주 월요일은 휴관. 새벽 일출을 보려면 전날 근처 숙소 예약 필수.
"""
# 파일 생성
with open("jeju_guide.txt", "w", encoding="utf-8") as f:
f.write(jeju_content)
print("제주도 가이드북 파일 생성 완료")
RAG 실습 준비
RAG 실습 준비는 이 노트에서 핵심 구현을 보여주는 코드 블록입니다. 코드 안에서는 ==========================================, 벡터 저장소를 만들기 흐름이 주석과 함께 드러납니다.
# ==========================================
# 벡터 저장소를 만들기
# ==========================================
print("\n 벡터 DB 저장 중...")
vectorstore = Chroma.from_documents(
documents=splits,
embedding=OpenAIEmbeddings(model="text-embedding-3-small")
)
RAG 실습 준비
RAG 실습 준비는 이 노트에서 핵심 구현을 보여주는 코드 블록입니다. 코드 안에서는 ==========================================, RAG 체인을 완성 흐름이 주석과 함께 드러납니다.
# ==========================================
# RAG 체인을 완성
# ==========================================
print("\n 답변 생성 준비 중...")
retriever = vectorstore.as_retriever()
# LLM 설정
llm = ChatOpenAI(model="gpt-4o-mini", temperature=0)
# 프롬프트 템플릿
template = """
당신은 제주도 여행 가이드입니다.
[정보]를 바탕으로 여행객의 질문에 답변해주세요.
[정보]
{context}
[질문]: {question}
"""
prompt = PromptTemplate.from_template(template)
RAG 실습 준비
RAG 실습 준비는 이 노트에서 핵심 구현을 보여주는 코드 블록입니다. 코드 안에서는 체인 생성 흐름이 주석과 함께 드러납니다.
# 체인 생성
rag_chain = (
{"context": retriever, "question": RunnablePassthrough()}
| prompt
| llm
| StrOutputParser()
)
Source Bundle
- Source path:
13_LLM_GenAI/Code_Snippets/3-5 (실습)여행_가이드_봇_만들기_혼자실습.md - Source formats:
ipynb,md - Companion files:
3-5 (실습)여행_가이드_봇_만들기_혼자실습.ipynb,3-5 (실습)여행_가이드_봇_만들기_혼자실습.md - Note type:
code-note - Last updated in the source vault:
2026-03-08T03:33:14 - Related notes:
13_LLM_code_Roadmap.md,13_LLM_GenAI_Code_Summary.md - External references:
localhost
Note Preview
원본 노트에 별도 설명 문단이 많지 않아 코드 중심으로 보존했습니다.