용어집
용어집
장마다 나온 용어를 한곳에 모았습니다. 위의 찾기 칸에 낱말을 넣으면 그 줄만 남습니다.
1장 · 과정 소개와 LLM 의 이해
| 용어 | 설명 |
|---|---|
챗봇(chatbot) | 사람과 글로 대화하는 프로그램입니다. chat(수다, 대화)과 bot(로봇을 줄인 말)을 붙인 이름입니다. |
규칙 기반 챗봇(rule-based chatbot) | 사람이 미리 정한 규칙("환불"이라는 낱말이 있으면 환불 답)대로만 답하는 챗봇입니다. rule 은 "규칙"이라는 뜻입니다. |
LLM(Large Language Model) | 거대 언어 모델입니다. Large(거대한), Language(언어), Model(모델)의 머리글자입니다. 아주 많은 글을 읽고 "다음에 올 낱말"을 맞히도록 학습한 모델입니다. |
생성형 AI(generative AI) | 글, 그림, 소리처럼 새로운 것을 만들어 내는 인공지능입니다. generative 는 "만들어 내는"이라는 뜻입니다. |
토큰(token) | LLM 이 글을 읽고 쓰는 조각 단위입니다. 낱말 하나일 때도 있고, 낱말의 일부일 때도 있습니다. token 은 "표, 징표"라는 뜻으로, 버스 토큰처럼 하나씩 세는 조각이라는 데서 왔습니다. |
토크나이저(tokenizer) | 글을 토큰으로 자르고 번호를 붙이는 도구입니다. token 에 "~하게 만드는 것"이라는 뜻의 -izer 를 붙인 말입니다. |
tiktoken | OpenAI 가 만든 토크나이저 라이브러리입니다. GPT 모델과 같은 방식으로 토큰을 셉니다. 이름은 tik(빠르게 째깍거리는 소리를 흉내 낸 말)과 token 을 붙인 것으로 알려져 있습니다. |
확률(probability) | 어떤 일이 일어날 가능성을 0 부터 1 사이의 수로 나타낸 것입니다. 이 장에서는 "그 낱말이 온 횟수 ÷ 전체 횟수"로 구합니다. probable(그럴듯한)에서 온 말입니다. |
온도(temperature) | LLM 이 다음 낱말을 고를 때 얼마나 모험할지 정하는 값입니다. 낮으면 늘 1등 낱말을, 높으면 여러 낱말을 골고루 고릅니다. 물이 뜨거울수록 분자가 활발히 움직이는 것에 빗댄 이름입니다. |
프롬프트(prompt) | LLM 에게 보내는 지시와 질문의 글입니다. prompt 는 연극에서 배우에게 대사를 일러 주는 일을 뜻합니다. |
메시지(message) | 대화의 한 마디입니다. 누가 한 말인지 알려 주는 역할과 내용으로 이루어집니다. message 는 "전하는 말"이라는 뜻입니다. |
역할(role) | 메시지를 누가 했는지 나타내는 이름표입니다. system(시스템, 지시), user(사용자, 질문), assistant(조수, 모델의 답) 셋을 씁니다. role 은 연극의 "배역"이라는 뜻입니다. |
시스템 메시지(system message) | 대화 맨 앞에 두는 지시입니다. "너는 여행 비서다. 짧게 답한다"처럼 챗봇의 성격과 규칙을 정합니다. system 은 "체계, 운영"이라는 뜻입니다. |
무상태(stateless) | 앞의 요청을 기억하지 않는 성질입니다. LLM API 가 그렇습니다. state(상태)에 less(없는)를 붙인 말입니다. |
컨텍스트 창(context window) | LLM 이 한 번에 읽을 수 있는 토큰의 최대 개수입니다. context 는 "앞뒤 사정, 맥락", window 는 "창문"이라는 뜻으로, 창문만큼만 내다볼 수 있다는 데서 왔습니다. |
환각(hallucination) | LLM 이 사실이 아닌 내용을 그럴듯하게 지어내는 일입니다. hallucination 은 "없는 것을 보는 착각"이라는 뜻입니다. |
지식 마감일(knowledge cutoff) | LLM 이 학습한 글이 언제까지의 것인지 나타내는 날짜입니다. 그 뒤의 일은 모릅니다. cutoff 는 "잘라 낸 지점"이라는 뜻입니다. |
API(Application Programming Interface) | 프로그램끼리 주고받는 약속된 창구입니다. Application(응용 프로그램), Programming(프로그래밍), Interface(맞닿는 면)의 머리글자입니다. 우리 코드는 API 로 OpenAI 의 모델을 부릅니다. |
API 키(API key) | API 를 쓸 자격이 있는지 확인하는 비밀 글자열입니다. key 는 "열쇠"라는 뜻입니다. 남에게 보이면 안 됩니다. |
RAG(Retrieval-Augmented Generation) | 검색 증강 생성입니다. Retrieval(찾아오기), Augmented(보탠), Generation(생성)의 머리글자입니다. 문서에서 관련 내용을 찾아 프롬프트에 붙인 뒤 답하게 하는 방법으로, 6장에서 만듭니다. |
도구 호출(tool calling) | LLM 이 계산기나 검색 같은 도구를 쓰겠다고 요청하고, 우리 코드가 그 도구를 실행해 결과를 돌려주는 방식입니다. tool 은 "도구", calling 은 "부르기"라는 뜻입니다. |
MCP(Model Context Protocol) | 모델 맥락 프로토콜입니다. Model(모델), Context(맥락), Protocol(통신 약속)의 머리글자입니다. LLM 앱이 파일이나 데이터 같은 바깥 자원에 같은 방식으로 붙도록 정한 약속이며, 5장에서 다룹니다. |
LangChain | LLM 으로 앱을 만드는 파이썬 라이브러리입니다. Language(언어) 모델과 chain(사슬)을 붙인 이름으로, 여러 부품을 사슬처럼 이어 붙인다는 뜻입니다. |
LCEL(LangChain Expression Language) | LangChain 표현 언어입니다. 부품을 | 기호로 이어 프롬프트 | 모델 | 파서 처럼 쓰는 방식입니다. Expression 은 "표현식"이라는 뜻입니다. 3장에서 자세히 봅니다. |
가짜 모델(fake model) | 진짜 LLM 대신 정해 둔 답을 차례로 돌려주는 연습용 모델입니다. LangChain 의 FakeListChatModel 이 그것입니다. fake 는 "가짜"라는 뜻입니다. |
Streamlit | 파이썬 코드만으로 웹 화면을 만드는 라이브러리입니다. stream(시냇물)과 lit(불 켜진)을 붙인 이름으로, 코드가 흐르듯 바로 화면이 된다는 뜻을 담았습니다. 7장에서 씁니다. |
2장 · 개발 환경 준비
| 용어 | 설명 |
|---|---|
가상환경(virtual environment) | 과목이나 프로젝트마다 따로 쓰는 파이썬 패키지 상자입니다. virtual 은 "실제는 아니지만 그렇게 쓸 수 있는", environment 는 "환경"이라는 뜻입니다. 컴퓨터에 파이썬을 하나 더 설치하지 않고도 따로 쓰는 것처럼 할 수 있다는 데서 온 이름입니다. |
venv | 파이썬에 들어 있는 가상환경 만드는 도구입니다. virtual environment 를 줄인 이름입니다. 이 과정은 가상환경 폴더의 이름도 .venv 로 짓습니다. |
패키지(package) | 남이 만들어 둔 코드를 한 묶음으로 싸서 나눠 주는 것입니다. package 는 "꾸러미, 소포"라는 뜻입니다. langchain, openai 가 모두 패키지입니다. |
pip(Package Installer for Python) | 패키지를 내려받아 설치하는 도구입니다. 이름은 "파이썬 패키지 설치 도구"라는 뜻으로 풀어 부릅니다. |
PyPI(Python Package Index) | 파이썬 패키지를 모아 둔 공개 저장소입니다. Python(파이썬), Package(패키지), Index(목록, 색인)의 머리글자이고 "파이피아이"라고 읽습니다. pip install 은 기본으로 여기서 받아 옵니다. |
의존성(dependency) | 어떤 패키지가 돌아가려면 함께 있어야 하는 다른 패키지입니다. depend 는 "기대다"라는 뜻입니다. langchain-openai 는 openai 와 tiktoken 에 기댑니다. |
requirements.txt | 설치할 패키지와 판을 한 줄에 하나씩 적은 글 파일입니다. requirement 는 "필요한 것"이라는 뜻입니다. 이 파일 하나로 다른 PC 에서도 같은 패키지를 설치합니다. |
판(version) | 패키지가 고쳐질 때마다 붙는 번호입니다. 1.4.7 처럼 점으로 나눈 숫자로 적고, 맨 앞 숫자가 바뀌면 크게 바뀐 것입니다. version 은 "~본, 고쳐 낸 것"이라는 뜻입니다. |
인터프리터(interpreter) | 파이썬 코드를 읽고 한 줄씩 실행하는 프로그램, 곧 python.exe 입니다. interpreter 는 "통역사"라는 뜻입니다. VS Code 에서 어느 인터프리터를 쓸지 골라야 가상환경의 패키지를 씁니다. |
VS Code(Visual Studio Code) | Microsoft 가 만든 코드 편집기입니다. Visual(눈으로 보는), Studio(작업실), Code(코드)를 붙인 이름입니다. |
터미널(terminal) | 글자로 명령을 써서 컴퓨터를 다루는 창입니다. terminal 은 "끝, 단말기"라는 뜻으로, 옛날 큰 컴퓨터에 이어 붙인 입력 장치를 부르던 말에서 왔습니다. |
PowerShell | Windows 의 터미널에서 쓰는 명령 언어입니다. power(힘)와 shell(껍데기, 운영체제를 감싸 사람과 잇는 층)을 붙인 이름입니다. |
API 키(API key) | 1장에서 본 것처럼 API 를 쓸 자격을 확인하는 비밀 글자열입니다. key 는 "열쇠"라는 뜻이고, 이 장에서는 "식자재 거래처 출입증"에 빗댑니다. |
사용량 한도(rate limit) | 정해진 시간에 보낼 수 있는 요청 수나 토큰 수의 상한입니다. rate 는 "빠르기, 비율", limit 은 "한계"라는 뜻입니다. 넘으면 429 오류가 납니다. |
환경 변수(environment variable) | 운영체제가 프로그램에 넘겨주는 "이름 = 값" 쌍입니다. 프로그램 바깥에 두는 설정이라 코드에 값을 적지 않아도 됩니다. variable 은 "바뀔 수 있는 값"이라는 뜻입니다. |
.env 파일(dotenv file) | 환경 변수로 올릴 "이름=값"을 한 줄씩 적어 둔 글 파일입니다. 이름이 점(dot)으로 시작하고 env 는 environment 의 줄임말이라 "닷엔브"라고 읽습니다. |
python-dotenv | .env 파일을 읽어 환경 변수로 올려 주는 패키지입니다. 코드에서는 from dotenv import load_dotenv 처럼 dotenv 라는 이름으로 부릅니다. |
.gitignore | Git 이 올리지 않고 모른 척할 파일을 적은 목록입니다. git 에 ignore(무시하다)를 붙인 이름입니다. 과목 폴더의 .gitignore 에는 .env 가 적혀 있습니다. |
SDK(Software Development Kit) | 어떤 서비스를 코드로 쉽게 쓰도록 만든 도구 묶음입니다. Software(소프트웨어), Development(개발), Kit(도구 상자)의 머리글자입니다. openai 패키지가 OpenAI 의 파이썬 SDK 입니다. |
클라이언트(client) | 서버에 요청을 보내는 쪽입니다. client 는 "손님, 의뢰인"이라는 뜻입니다. OpenAI() 로 만든 객체가 우리 코드의 클라이언트입니다. |
상태 코드(status code) | 서버가 요청의 결과를 알려 주는 세 자리 숫자입니다. 200 은 성공, 401 은 인증 실패, 404 는 찾을 수 없음, 429 는 너무 많은 요청입니다. status 는 "상태"라는 뜻입니다. |
HTTP(HyperText Transfer Protocol) | 웹에서 요청과 응답을 주고받는 약속입니다. HyperText(서로 이어진 글), Transfer(전송), Protocol(통신 약속)의 머리글자입니다. OpenAI API 도 HTTP 로 주고받습니다. |
가리기(masking) | 비밀 글자열의 일부를 * 로 바꿔 화면에 보여도 괜찮게 만드는 일입니다. mask 는 "가면, 가리개"라는 뜻입니다. |
3장 · LangChain 기본 구조와 LCEL
| 용어 | 설명 |
|---|---|
체인(chain) | 여러 부품을 차례로 이어, 앞 부품의 결과를 뒤 부품이 받아 일하게 만든 것입니다. chain 은 "사슬"이라는 뜻으로, 고리를 하나씩 이어 붙인다는 데서 왔습니다. |
LCEL(LangChain Expression Language) | LangChain 표현 언어입니다. LangChain, Expression(표현식), Language(언어)를 줄인 말입니다. 부품을 prompt | model | parser 처럼 | 로 이어 체인을 쓰는 방식입니다. |
파이프(pipe) | | 기호입니다. 앞의 결과를 뒤로 흘려보내는 관이라는 뜻으로, 명령 창에서 쓰던 이름을 그대로 가져왔습니다. 키보드에서는 Enter 위의 역슬래시(\) 키를 Shift 와 함께 누릅니다. |
러너블(Runnable) | LangChain 에서 "실행할 수 있는 부품"을 모두 아우르는 이름입니다. run(실행하다)에 -able(~할 수 있는)을 붙인 말입니다. 프롬프트, 모델, 파서, 체인이 모두 러너블입니다. |
invoke | 입력 하나를 넣고 결과 하나를 받는 손잡이입니다. invoke 는 "불러서 실행하다"라는 뜻입니다. |
batch | 입력 여러 개를 한꺼번에 넣고 결과 목록을 받는 손잡이입니다. batch 는 "한 번에 굽는 빵 한 판"처럼 "한 묶음"이라는 뜻입니다. |
stream | 결과를 다 만들 때까지 기다리지 않고 조각이 생기는 대로 받는 손잡이입니다. stream 은 "시냇물, 흐름"이라는 뜻입니다. |
프롬프트 템플릿(prompt template) | 빈칸이 있는 프롬프트의 틀입니다. 빈칸은 {place} 처럼 중괄호로 적고, 나중에 값을 넣어 완성합니다. template 은 "본뜨는 틀, 양식"이라는 뜻입니다. |
변수(variable) | 프롬프트 템플릿의 빈칸 이름입니다. {place} 의 place 가 변수입니다. variable 은 "바뀔 수 있는 것"이라는 뜻입니다. |
ChatPromptTemplate | 역할(system, human, ai)마다 한 줄씩 메시지 틀을 적는 채팅용 프롬프트 템플릿입니다. Chat(대화)과 Prompt Template 을 붙인 이름입니다. |
프롬프트 값(PromptValue) | 프롬프트 템플릿에 값을 채운 결과입니다. 모델에 그대로 넣을 수 있는 꼴입니다. value 는 "값"이라는 뜻입니다. |
출력 파서(output parser) | 모델의 답에서 필요한 것만 꺼내 쓰기 좋은 꼴(글, 목록, 사전)로 바꾸는 부품입니다. parse 는 "문장을 쪼개어 뜻을 읽다"라는 뜻입니다. |
StrOutputParser | 모델의 답(AIMessage)에서 글만 꺼내는 출력 파서입니다. Str 은 string(글자열)을 줄인 말입니다. |
최대 토큰 수(max_tokens) | 모델이 답으로 쓸 수 있는 토큰의 상한입니다. max 는 maximum(가장 많은)을 줄인 말입니다. 넘으면 답이 중간에 잘립니다. |
시간 제한(timeout) | 모델의 답을 기다리는 가장 긴 시간(초)입니다. time(시간)과 out(다 됨)을 붙인 말로, "시간이 다 됐다"는 뜻입니다. |
제로샷(zero-shot) | 예시 없이 지시만으로 답하게 하는 방식입니다. shot 은 "한 번 해 보기"라는 뜻으로, 보여 준 예시가 0 번이라는 말입니다. |
퓨샷(few-shot) | 질문과 답의 예시를 몇 개 보여 주고 같은 꼴로 답하게 하는 방식입니다. few 는 "몇 개"라는 뜻입니다. |
단계별 지시(step-by-step instruction) | 모델이 할 일을 "먼저 ~하고, 그다음 ~한다"처럼 순서대로 적어 주는 지시입니다. step 은 "걸음, 단계"라는 뜻입니다. |
RunnableLambda | 내가 쓴 파이썬 함수를 체인의 부품으로 만들어 주는 것입니다. lambda 는 이름 없는 작은 함수를 부르는 말로, 그리스 문자 λ(람다)에서 왔습니다. |
RunnablePassthrough | 받은 입력을 아무것도 바꾸지 않고 그대로 넘기는 부품입니다. passthrough 는 "그대로 지나가기"라는 뜻입니다. |
RunnableParallel | 같은 입력을 여러 부품에 동시에 넣고 결과를 사전 하나로 모으는 부품입니다. parallel 은 "나란한"이라는 뜻입니다. |
부분 채우기(partial) | 프롬프트 템플릿의 빈칸 가운데 일부만 먼저 채워 두는 일입니다. partial 은 "일부분의"라는 뜻입니다. |
4장 · 대화형 챗봇과 메모리 전략
| 용어 | 설명 |
|---|---|
구조화된 출력(structured output) | 모델의 답을 줄글 대신 정해 둔 칸(열쇠와 값)으로 받는 것입니다. structure 는 "짜임, 구조"라는 뜻입니다. |
JSON(JavaScript Object Notation) | 자바스크립트 객체 표기법입니다. JavaScript(웹 프로그래밍 언어), Object(객체), Notation(표기법)의 머리글자입니다. {"목적지": "제주도"} 처럼 열쇠와 값을 적는 글의 형식으로, 파이썬의 사전과 모양이 거의 같습니다. |
파서(parser) | 글을 읽어 쓰기 좋은 모양(글자열, 사전, 객체)으로 바꾸는 부품입니다. parse 는 "문장을 낱낱이 뜯어 분석하다"라는 뜻입니다. |
JsonOutputParser | 모델이 쓴 JSON 글을 파이썬 사전으로 바꾸는 LangChain 의 파서입니다. Output 은 "출력"이라는 뜻입니다. |
스키마(schema) | 데이터가 어떤 칸과 어떤 자료형을 가져야 하는지 적은 설계도입니다. 그리스 말로 "모양, 형태"라는 뜻에서 왔습니다. |
Pydantic | 파이썬 클래스로 데이터의 틀을 정하고, 들어온 값이 틀에 맞는지 검사하는 라이브러리입니다. Py(파이썬)와 pedantic(깐깐한)을 합친 이름으로, 값을 깐깐하게 검사한다는 뜻을 담았습니다. |
BaseModel | Pydantic 에서 틀을 만들 때 물려받는 기본 클래스입니다. base 는 "바탕"이라는 뜻입니다. |
Field | Pydantic 틀의 칸 하나에 설명(description)과 범위(ge, le) 같은 조건을 붙이는 함수입니다. field 는 "입력 칸"이라는 뜻입니다. |
검증(validation) | 값이 정해 둔 조건에 맞는지 확인하는 일입니다. valid 는 "유효한"이라는 뜻입니다. 맞지 않으면 ValidationError 가 납니다. |
with_structured_output | 모델에게 틀(스키마)을 건네고, 그 틀에 맞춘 답을 객체로 돌려받게 하는 LangChain 의 메서드입니다. "구조화된 출력과 함께"라는 뜻입니다. |
메모리(memory) | 챗봇이 앞의 대화를 기억하는 것처럼 보이게 하는 장치입니다. 실제로는 우리 코드가 대화 기록을 모아 두었다가 요청마다 함께 보냅니다. memory 는 "기억"이라는 뜻입니다. |
대화 기록(chat history) | 지금까지 주고받은 메시지의 목록입니다. history 는 "지나온 일, 역사"라는 뜻입니다. |
MessagesPlaceholder | 프롬프트 틀 안에 메시지 목록이 들어갈 자리를 비워 두는 부품입니다. placeholder 는 "자리를 맡아 두는 것"이라는 뜻입니다. |
세션(session) | 한 사람과 이어지는 대화 한 묶음입니다. 세션 id(identifier, 식별자)로 손님마다의 기록을 나눕니다. session 은 "한 차례의 모임, 회기"라는 뜻입니다. |
InMemoryChatMessageHistory | 대화 기록을 컴퓨터 메모리(RAM) 안의 목록에 담아 두는 LangChain 의 기록 상자입니다. in memory 는 "메모리 안에"라는 뜻으로, 프로그램을 끄면 사라집니다. |
RunnableWithMessageHistory | 체인을 감싸서, 부를 때마다 세션의 기록을 꺼내 넣고 답이 나오면 기록에 덧붙이는 LangChain 의 부품입니다. "메시지 기록을 단 실행 가능한 것"이라는 뜻입니다. |
Window 메모리(window memory) | 대화 기록 가운데 최근 것만 창문 크기만큼 남겨 보내는 전략입니다. window 는 "창문"이라는 뜻으로, 창으로 보이는 만큼만 본다는 데서 왔습니다. |
trim_messages | 메시지 목록을 토큰 상한에 맞게 잘라 주는 LangChain 의 함수입니다. trim 은 "다듬다, 잘라 내다"라는 뜻입니다. |
Summary 메모리(summary memory) | 오래된 대화를 짧은 요약으로 바꿔, 요약과 최근 대화를 함께 보내는 전략입니다. summary 는 "요약"이라는 뜻입니다. |
5장 · LLM 외부 도구 연동
| 용어 | 설명 |
|---|---|
도구(tool) | 모델이 부를 수 있게 이름과 설명을 붙여 둔 함수입니다. 계산, 표 찾기, 파일 읽기처럼 모델이 혼자 할 수 없는 일을 맡습니다. tool 은 "연장, 도구"라는 뜻입니다. |
Tool Calling(tool calling) | 모델이 답 대신 "어느 도구를 어떤 값으로 불러 달라"는 요청을 돌려주는 기능입니다. calling 은 "부르기"라는 뜻입니다. Function Calling(함수 호출)이라고도 부릅니다. |
tool_calls | 모델이 돌려준 AIMessage 안의 도구 호출 요청 목록입니다. 요청마다 도구 이름(name), 인자(args), 요청 번호(id)가 들어 있습니다. |
인자(argument) | 함수를 부를 때 넘기는 값입니다. argument 는 원래 "논거, 근거로 내놓는 것"이라는 뜻입니다. 도구 호출에서는 {"code": "P01", "adults": 2} 같은 사전으로 오갑니다. |
데코레이터(decorator) | 함수 위에 @이름 으로 얹어 그 함수에 기능을 덧입히는 파이썬 문법입니다. decorate 는 "꾸미다"라는 뜻입니다. |
@tool | 보통 함수를 LangChain 도구로 바꾸는 데코레이터입니다. 함수 이름, docstring, 타입 힌트로 도구의 이름, 설명, 인자 스키마를 만듭니다. |
docstring(documentation string) | 함수 첫머리에 따옴표 세 개로 적는 설명 글입니다. documentation(문서)과 string(글자열)을 합친 말입니다. 도구에서는 모델이 읽는 설명이 됩니다. |
bind_tools | 모델에 도구 목록을 묶어, 요청마다 도구 설명서가 함께 가게 하는 메서드입니다. bind 는 "묶다"라는 뜻입니다. |
ToolMessage | 도구를 실행한 결과를 모델에게 돌려줄 때 쓰는 메시지입니다. 1장에서 본 system, human, ai 에 이어 넷째 역할(tool)입니다. |
tool_call_id | ToolMessage 가 어느 도구 호출 요청의 결과인지 가리키는 요청 번호입니다. id 는 identifier(식별자)의 줄임말입니다. |
에이전트(agent) | 모델이 도구를 부르고 결과를 읽고 다시 부르는 고리를, 일이 끝날 때까지 스스로 돌리는 프로그램입니다. agent 는 "대신 일을 맡아 하는 사람, 대리인"이라는 뜻입니다. |
create_agent | LangChain 1.x 에서 모델과 도구 목록으로 에이전트를 만드는 함수입니다. langchain.agents 에 있습니다. |
MCP(Model Context Protocol) | 모델 맥락 규약입니다. Model(모델), Context(맥락, 모델에게 건네는 자료), Protocol(규약)의 머리글자입니다. AI 앱이 바깥의 도구와 자료를 같은 방식으로 꽂아 쓰도록 정한 열린 규격입니다. |
프로토콜(protocol) | 프로그램끼리 무엇을 어떤 순서와 형식으로 주고받을지 정한 약속입니다. 원래 외교에서 지키는 의례와 절차를 뜻하는 말입니다. |
MCP 서버(MCP server) | 도구와 자료를 MCP 규격으로 내놓는 프로그램입니다. server 는 "시중드는 쪽, 내주는 쪽"이라는 뜻입니다. |
MCP 클라이언트(MCP client) | MCP 서버에 붙어 도구 목록을 받고 도구를 부르는 쪽입니다. client 는 "의뢰인, 맡기는 쪽"이라는 뜻입니다. |
호스트(host) | MCP 클라이언트를 품고 사용자와 만나는 AI 앱입니다. 이 장에서는 우리가 만드는 챗봇 프로그램입니다. host 는 "손님을 맞는 주인"이라는 뜻입니다. |
stdio(standard input/output) | 표준 입출력입니다. 프로그램이 글을 받는 표준 입력(stdin)과 글을 내보내는 표준 출력(stdout)을 함께 부르는 말입니다. MCP 의 기본 전송 방식입니다. |
JSON-RPC(JSON Remote Procedure Call) | JSON 으로 "원격 프로시저 호출"을 주고받는 형식입니다. Remote(멀리 있는), Procedure(절차, 함수), Call(부르기)의 머리글자로, 다른 프로그램의 함수를 부르는 요청과 답을 JSON 으로 적습니다. |
FastMCP | 파이썬 mcp 패키지에 든 MCP 서버를 쉽게 만드는 틀입니다. fast 는 "빠른"이라는 뜻으로, 몇 줄로 서버를 만든다는 데서 붙은 이름입니다. |
langchain-mcp-adapters | MCP 서버의 도구를 LangChain 도구로 바꿔 주는 패키지입니다. adapter 는 "맞지 않는 두 단자를 이어 주는 연결 부품"이라는 뜻입니다. |
MultiServerMCPClient | 여러 MCP 서버에 한꺼번에 붙는 langchain-mcp-adapters 의 클라이언트입니다. multi server 는 "여러 서버"라는 뜻입니다. |
비동기(asynchronous) | 기다리는 동안 다른 일을 할 수 있게 짠 실행 방식입니다. 파이썬에서는 async def 로 함수를 만들고 await 로 기다리며, asyncio.run() 으로 시작합니다. asynchronous 는 "시간을 맞추지 않는"이라는 뜻입니다. |
최소 권한(least privilege) | 일에 꼭 필요한 권한만 주는 원칙입니다. privilege 는 "특권, 권한"이라는 뜻입니다. |
6장 · 문서 기반 챗봇
| 용어 | 설명 |
|---|---|
RAG(Retrieval-Augmented Generation) | 검색 증강 생성입니다. 질문과 관련된 글을 먼저 찾아(retrieval, 되찾아 옴) 프롬프트에 보태고(augmented, 보강된) 그 글로 답을 쓰게(generation, 만들어 냄) 하는 방법입니다. |
색인(indexing) | 나중에 빨리 찾도록 미리 정리해 두는 일입니다. 책 뒤의 "찾아보기"를 만드는 일과 같습니다. index 는 라틴어로 "가리키는 것, 집게손가락"이라는 뜻입니다. |
PDF(Portable Document Format) | 어느 컴퓨터에서 열어도 같은 모양으로 보이게 만든 문서 형식입니다. Portable 은 "들고 다닐 수 있는", Format 은 "형식"이라는 뜻입니다. |
문서 로더(document loader) | PDF, 웹 쪽, 글 파일 같은 문서를 읽어 LangChain 의 Document 목록으로 바꾸는 부품입니다. load 는 "싣다, 불러오다"라는 뜻입니다. |
PyPDFLoader | pypdf 라이브러리로 PDF 를 쪽마다 읽는 문서 로더입니다. Py 는 파이썬을 가리킵니다. |
Document | 글(page_content)과 그 글에 대한 정보(metadata)를 함께 담는 LangChain 의 상자입니다. document 는 "문서"라는 뜻입니다. |
메타데이터(metadata) | 데이터에 대한 데이터입니다. 글이 어느 파일의 몇 쪽에서 왔는지 같은 정보입니다. meta 는 그리스 말로 "너머, ~에 관한"이라는 뜻입니다. |
청킹(chunking) | 긴 글을 검색하기 좋은 크기의 조각으로 나누는 일입니다. chunk 는 "덩어리, 토막"이라는 뜻입니다. |
RecursiveCharacterTextSplitter | 문단, 줄, 낱말 순서로 자를 곳을 찾아 가며 글을 정한 길이 안으로 나누는 LangChain 의 분할기입니다. recursive 는 "되풀이하는", character 는 "글자", splitter 는 "쪼개는 것"이라는 뜻입니다. |
chunk_overlap | 이웃한 두 조각이 겹치게 둘 글자 수입니다. overlap 은 "겹침"이라는 뜻입니다. 조각의 경계에서 잘린 문장을 양쪽에 남깁니다. |
임베딩(embedding) | 글을 같은 길이의 숫자 목록으로 바꾸는 일, 또는 그 숫자 목록입니다. embed 는 "박아 넣다"라는 뜻으로, 글을 숫자의 공간 안에 한 점으로 박아 넣는다는 데서 왔습니다. |
벡터(vector) | 순서가 있는 숫자 목록입니다. 화살표 하나로 그릴 수 있습니다. 라틴어로 "나르는 것"이라는 뜻입니다. |
바이그램(bigram) | 이웃한 글자 두 개의 묶음입니다. "환불"과 "불은" 처럼 한 칸씩 밀며 만듭니다. bi 는 "둘", gram 은 "쓴 것, 글자"라는 뜻입니다. |
코사인 유사도(cosine similarity) | 두 화살표의 방향이 얼마나 닮았는지를 0~1 사이(음수도 될 수 있다)로 나타낸 값입니다. 1 이면 같은 방향입니다. cosine 은 각도를 숫자로 나타내는 삼각비의 이름이고, similarity 는 "닮음"이라는 뜻입니다. |
벡터DB(vector database) | 임베딩을 저장하고, 질문의 임베딩과 가까운 것을 빨리 찾아 주는 저장소입니다. DB 는 database(데이터를 모아 둔 곳)의 줄임말입니다. |
FAISS(Facebook AI Similarity Search) | 페이스북(지금의 Meta)의 AI 연구팀이 만든, 가까운 벡터를 빨리 찾는 라이브러리입니다. 이름은 "페이스북 AI 의 닮은 것 찾기"라는 뜻입니다. |
검색기(retriever) | 질문을 받아 관련 Document 목록을 돌려주는 LangChain 의 부품입니다. retrieve 는 "되찾아 오다"라는 뜻입니다. |
k(top-k) | 검색기가 가까운 순서로 몇 개를 돌려줄지 정하는 수입니다. top-k 는 "위에서 k 개"라는 뜻입니다. |
RetrievalQA | 검색기와 모델을 묶어 "찾아서 답하기"를 한 번에 하는 옛 방식의 체인입니다. QA 는 Question Answering(질문 답하기)의 머리글자입니다. |
근거(grounding) | 답이 기대고 있는 문서의 내용입니다. ground 는 "땅, 바탕"이라는 뜻으로, 답이 땅에 발을 딛게 한다는 데서 왔습니다. |
역직렬화(deserialization) | 파일에 저장해 둔 바이트를 다시 파이썬 객체로 되살리는 일입니다. serial 은 "줄지어 늘어선"이라는 뜻으로, 객체를 한 줄의 바이트로 늘어놓는 것이 직렬화입니다. |
7장 · 웹 UI 연동과 배포
| 용어 | 설명 |
|---|---|
웹 UI(Web User Interface) | 브라우저에서 보이는 화면입니다. User Interface(사용자 접점)의 머리글자로, 사람과 프로그램이 만나는 자리라는 뜻입니다. |
Streamlit | 1장에서 소개한 대로 파이썬 코드만으로 웹 화면을 만드는 라이브러리입니다. HTML 이나 자바스크립트를 몰라도 됩니다. |
위젯(widget) | 단추, 입력칸, 고르기 상자, 밀대처럼 손님이 만지는 화면 부품입니다. window(창)와 gadget(작은 장치)을 합친 말이라는 설이 널리 알려져 있습니다. |
사이드바(sidebar) | 화면 왼쪽에 따로 붙는 좁은 막대입니다. side(옆)와 bar(막대)를 붙인 말로, 설정이나 안내를 둡니다. |
다시 실행(rerun) | 손님이 위젯을 만질 때마다 Streamlit 이 앱 스크립트를 맨 위부터 다시 돌리는 일입니다. re(다시)와 run(실행하다)을 붙인 말입니다. |
세션 상태(session_state) | 다시 실행해도 지워지지 않고 남는 손님별 메모장입니다. session 은 4장에서 본 "한 사람과 이어지는 한 묶음", state 는 "상태"라는 뜻입니다. |
st.chat_message | 채팅 화면의 말풍선 하나를 만드는 함수입니다. chat(수다, 대화)과 message(전하는 말)를 붙인 이름입니다. |
st.chat_input | 화면 아래에 붙는 채팅 입력창입니다. input 은 "넣는 것, 입력"이라는 뜻입니다. |
캐시(cache) | 한 번 만든 결과를 보관해 두었다가 다시 쓰는 저장 칸입니다. 프랑스 말 cacher(숨기다)에서 온 말로, "숨겨 둔 저장소"라는 뜻입니다. |
st.cache_resource | 모델, 색인처럼 무거운 부품을 서버에 한 번만 만들어 모든 손님이 함께 쓰게 하는 캐시입니다. resource 는 "자원"이라는 뜻입니다. |
st.cache_data | 표, 글처럼 데이터를 돌려주는 함수의 결과를 보관하는 캐시입니다. 꺼낼 때마다 복사본을 줍니다. |
스트리밍(streaming) | 답을 다 쓸 때까지 기다리지 않고 조각이 생기는 대로 흘려보내는 일입니다. stream 은 "시냇물, 흐름"이라는 뜻입니다. |
st.write_stream | 조각을 하나씩 받아 화면에 이어 쓰고, 다 쓰면 전체 글을 돌려주는 함수입니다. |
비밀 값(secrets) | API 키나 비밀번호처럼 코드에 적으면 안 되는 값입니다. secret 은 "비밀"이라는 뜻입니다. Streamlit 은 st.secrets 로 읽습니다. |
TOML(Tom's Obvious, Minimal Language) | "톰의 뻔하고 작은 언어"라는 뜻의 설정 파일 형식입니다. 만든 사람 Tom Preston-Werner 의 이름에서 왔습니다. 이름 = "값" 꼴로 적고, secrets.toml 이 이 형식입니다. |
AppTest | Streamlit 앱을 브라우저 없이 실행해 화면의 부품을 꺼내 보는 시험 도구입니다. App(앱)과 Test(시험)를 붙인 이름입니다. |
로컬 호스트(localhost) | 지금 쓰는 내 컴퓨터 자신을 가리키는 주소입니다. local(이곳의)과 host(손님을 맞는 컴퓨터)를 붙인 말입니다. streamlit run 은 보통 http://localhost:8501 에 화면을 엽니다. |
배포(deployment) | 내 PC 에서만 돌던 앱을 서버에 올려 다른 사람이 웹 주소로 쓸 수 있게 하는 일입니다. deploy 는 군대를 "배치하다"라는 뜻에서 왔습니다. |
저장소(repository) | 프로젝트의 파일과 고친 기록을 모아 두는 곳입니다. repository 는 "창고, 보관소"라는 뜻으로, 줄여서 repo 라고 부릅니다. |
GitHub | Git 저장소를 인터넷에 올려 두고 나누는 서비스입니다. Git(버전 관리 프로그램)과 hub(중심지, 모이는 곳)를 붙인 이름입니다. |
Streamlit Community Cloud | GitHub 저장소의 Streamlit 앱을 웹 주소로 띄워 주는 Streamlit 의 배포 서비스입니다. community(공동체)와 cloud(인터넷 너머의 서버)를 붙인 이름입니다. |
requirements.txt | 앱이 쓰는 패키지와 판을 한 줄에 하나씩 적은 파일입니다. requirement 는 "필요한 것"이라는 뜻으로, 서버는 이 파일을 읽어 패키지를 설치합니다. |
8장 · 최종 프로젝트
| 용어 | 설명 |
|---|---|
최종 프로젝트(capstone project) | 과정에서 배운 것을 모두 써서 하나의 결과물을 만드는 마지막 과제입니다. capstone 은 돌담이나 기둥 맨 위에 얹어 마무리하는 "갓돌"이라는 뜻입니다. |
설계서(design document) | 만들기 전에 누가, 무엇을, 어떻게 쓰는지 적어 두는 문서입니다. design 은 "밑그림을 그리다", document 는 "문서"라는 뜻입니다. |
사용자(user) | 챗봇에 질문을 하는 사람입니다. 사내 규정 도우미라면 직원, 수업 도우미라면 학생입니다. use(쓰다)에 -er(하는 사람)를 붙인 말입니다. |
범위 밖 질문(out-of-scope question) | 챗봇이 맡은 문서에 답이 없는 질문입니다. scope 는 "보는 범위, 시야"라는 뜻이고, out of 는 "그 바깥"입니다. |
평가 질문(evaluation set) | 챗봇이 받을 법한 질문과 그 정답 위치를 미리 모아 둔 시험 문제입니다. evaluation 은 "값을 매기다", set 은 "한 묶음"이라는 뜻입니다. |
정답 위치(ground truth) | 평가 질문마다 사람이 정해 둔 정답 조항이나 노트입니다. ground truth 는 "땅에서 직접 확인한 사실"이라는 뜻으로, 위성 사진을 현장에 가서 맞춰 보던 일에서 왔다고 알려져 있습니다. |
적중률(hit rate) | 평가 질문 가운데 정답 조각을 찾아낸 질문의 비율입니다. hit 은 "맞히다", rate 는 "비율"이라는 뜻입니다. |
hit@k | 정답 조각이 가까운 조각 위 k 개 안에 든 질문의 비율입니다. hit@1 은 첫째로 찾은 조각이 정답인 비율, hit@3 은 셋째 안에 든 비율입니다. @ 은 영어로 at(~에서)이라고 읽습니다. |
문턱(threshold) | 검색 거리가 이 값보다 멀면 "찾지 못했습니다"라고 답하게 하는 경계입니다. threshold 는 "문지방"이라는 뜻으로, 넘어야 들어가는 경계를 가리킵니다. |
별칭 사전(alias dictionary) | 사람들이 평소 쓰는 말을 문서의 낱말로 바꿔 주는 짝 목록입니다. alias 는 라틴어 alias(다른 때에, 달리)에서 온 말로 "다른 이름"이라는 뜻입니다. |
질문 바꿔 쓰기(query rewriting) | "그럼 UDP 는요?"처럼 앞의 대화가 있어야 뜻이 통하는 질문을, 혼자서도 뜻이 통하는 질문으로 고쳐 쓰는 일입니다. query 는 "물음", rewriting 은 "다시 쓰기"라는 뜻입니다. |
시연(demo) | 만든 챗봇을 다른 사람 앞에서 실제로 돌려 보이는 일입니다. demo 는 demonstration(눈앞에 보여 줌)을 줄인 말입니다. |
피드백(feedback) | 시연을 본 사람이 돌려주는 의견입니다. feed(먹이다, 넣다)와 back(되돌려)을 붙인 말로, 원래는 기계의 출력을 다시 입력으로 되돌리는 일을 가리켰습니다. |
회귀 시험(regression test) | 무언가를 고친 뒤 예전에 되던 것이 여전히 되는지 같은 시험을 다시 돌려 보는 일입니다. regression 은 "뒤로 물러남"이라는 뜻으로, 고치다가 뒷걸음질 치지 않았는지 본다는 말입니다. |
시연 점검표(demo checklist) | 시연 전에 확인할 항목(첫 화면, 질문 몇 개, 모를 때의 답, 키 노출)을 적은 목록입니다. checklist 는 하나씩 확인(check)하며 지워 가는 목록(list)입니다. |