LangChain 챗봇용어집← 이전목차다음 →MetaContents

용어집

용어집

장마다 나온 용어를 한곳에 모았습니다. 위의 찾기 칸에 낱말을 넣으면 그 줄만 남습니다.

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 를 붙인 말입니다.
tiktokenOpenAI 가 만든 토크나이저 라이브러리입니다. 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장에서 다룹니다.
LangChainLLM 으로 앱을 만드는 파이썬 라이브러리입니다. 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 은 "끝, 단말기"라는 뜻으로, 옛날 큰 컴퓨터에 이어 붙인 입력 장치를 부르던 말에서 왔습니다.
PowerShellWindows 의 터미널에서 쓰는 명령 언어입니다. 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 라는 이름으로 부릅니다.
.gitignoreGit 이 올리지 않고 모른 척할 파일을 적은 목록입니다. 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(깐깐한)을 합친 이름으로, 값을 깐깐하게 검사한다는 뜻을 담았습니다.
BaseModelPydantic 에서 틀을 만들 때 물려받는 기본 클래스입니다. base 는 "바탕"이라는 뜻입니다.
FieldPydantic 틀의 칸 하나에 설명(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_idToolMessage 가 어느 도구 호출 요청의 결과인지 가리키는 요청 번호입니다. id 는 identifier(식별자)의 줄임말입니다.
에이전트(agent)모델이 도구를 부르고 결과를 읽고 다시 부르는 고리를, 일이 끝날 때까지 스스로 돌리는 프로그램입니다. agent 는 "대신 일을 맡아 하는 사람, 대리인"이라는 뜻입니다.
create_agentLangChain 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-adaptersMCP 서버의 도구를 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 는 "싣다, 불러오다"라는 뜻입니다.
PyPDFLoaderpypdf 라이브러리로 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(데이터를 모아 둔 곳)의 줄임말입니다.
검색기(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(사용자 접점)의 머리글자로, 사람과 프로그램이 만나는 자리라는 뜻입니다.
Streamlit1장에서 소개한 대로 파이썬 코드만으로 웹 화면을 만드는 라이브러리입니다. 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 이 이 형식입니다.
AppTestStreamlit 앱을 브라우저 없이 실행해 화면의 부품을 꺼내 보는 시험 도구입니다. App(앱)과 Test(시험)를 붙인 이름입니다.
로컬 호스트(localhost)지금 쓰는 내 컴퓨터 자신을 가리키는 주소입니다. local(이곳의)과 host(손님을 맞는 컴퓨터)를 붙인 말입니다. streamlit run 은 보통 http://localhost:8501 에 화면을 엽니다.
배포(deployment)내 PC 에서만 돌던 앱을 서버에 올려 다른 사람이 웹 주소로 쓸 수 있게 하는 일입니다. deploy 는 군대를 "배치하다"라는 뜻에서 왔습니다.
저장소(repository)프로젝트의 파일과 고친 기록을 모아 두는 곳입니다. repository 는 "창고, 보관소"라는 뜻으로, 줄여서 repo 라고 부릅니다.
GitHubGit 저장소를 인터넷에 올려 두고 나누는 서비스입니다. Git(버전 관리 프로그램)과 hub(중심지, 모이는 곳)를 붙인 이름입니다.
Streamlit Community CloudGitHub 저장소의 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)입니다.
← 이전실습 데이터 파일