책 이미지

책 정보
· 분류 : 국내도서 > 컴퓨터/모바일 > 인공지능
· ISBN : 9791194084167
· 쪽수 : 544쪽
· 출판일 : 2025-05-30
책 소개
ChatGPT와 같은 LLM은 다양한 업무에 활용되지만, 최신 정보나 특정 문서 내용을 정확히 반영하지 못하는 한계가 있다. 이를 극복하는 대안이 RAG(검색 증강 생성) 기술이다. 이 책은 LangChain을 활용한 RAG 시스템을 ‘문서 로드 → 텍스트 분할 → 임베딩 → 벡터 저장 → 리트리버 검색 → 프롬프트 생성 → LLM 응답 생성 → 체인 구성’의 8단계로 정리하고 각 단계를 하나하나 실습하며 익힌다. 이 과정에서 LCEL 문법, 프롬프트 설계, 출력 포맷 처리법을 배우며, OpenAI, Hugging Face, Upstage, Ollama 등 다양한 모델과 연결하는 방법도 익힐 수 있다. 또한 Streamlit을 활용해 문서 검색, 이메일 자동화, 보고서 작성 챗봇, 멀티모달 챗봇 등 실무에 적용 가능한 다양한 웹 애플리케이션을 어렵지 않게 직접 제작할 수 있다.
★ 8단계로 정리한 RAG 파이프라인을 손에 익히는 완성형 학습 과정
LLM과 RAG의 기본 개념을 이해하고, LangChain의 기본 사용법과 LCEL 체인 구성 문법을 익히는 체계적인 과정으로 이뤄져 있다. RAG 파이프라인 8단계(문서 로드 → 텍스트 분할 → 임베딩 → 벡터 저장 → 리트리버 검색 → 프롬프트 생성 → LLM 응답 생성 → 체인 구성)를 하나하나 실습하며, 각 단계에서 활용할 수 있는 다양한 모듈과 도구(PDF 로더, 여러 종류의 텍스트 분할기, OpenAI 및 Hugging Face 임베딩, 다양한 벡터 데이터베이스, 고급 리트리버 등)를 익힌다. 이 과정에서 선택 가능한 옵션과 특성, 차이점을 비교해 가며 기본기를 탄탄히 다진다.
★ 다양한 모델을 짧게, 빠르게, 반복해서 실전 감각 완성
책 전반에 걸쳐 LLM 모델(OpenAI, Hugging Face, Upstage, Ollama 등), 문서 로더(PDF, HWP, CSV, 웹 데이터), 텍스트 분할기, 벡터 스토어(Chroma, FAISS, Pinecone), 리트리버, 메모리 시스템 구축 과정을 반복해서 실습한다. 각 기능별로 짧은 코드 예제와 실행 결과를 통해 자연스럽게 손에 익히게 하며, 다양한 선택지를 실습하고 비교함으로써 자신의 프로젝트 목적에 맞는 최적의 모델과 기능을 빠르게 고를 수 있는 실전 감각을 기른다. 또한 최신 논문의 기술도 소개하며 실습에 직접 적용해 볼 수 있다.
★ 상황별 챗봇 프로젝트로 배우는 실전형 RAG 시스템 구축
Streamlit 프레임워크를 활용하여 다양한 상황별 RAG 프로젝트를 직접 만든다. 문서 기반 질문 응답 챗봇, 이메일 업무 자동화 챗봇, 멀티모달 입력을 지원하는 이미지 기반 챗봇, 다양한 오픈소스 모델을 조합한 고급 RAG 챗봇 등 실전 사례를 직접 구현해 본다.
▶이 책이 필요한 독자
RAG 기본 개념부터 실제 구현까지 체계적으로 배우고자 하는 입문자들
랭체인 프레임워크를 활용하여 RAG 시스템을 구축하려는 개발자들
LLM의 한계를 극복하고 정확한 정보 검색과 응답 생성을 결합하려는 데이터 전문가들
기업이나 조직에서 문서 검색, 이메일 자동화, 보고서 작성 등 실제 업무를 AI에 적용하려는 실무자들
기초적인 파이썬 실력을 가진 비개발자지만 AI에 관심있는 사람들
▶ 이 책에서 다루는 내용
_PART 01 처음 만나는 LangChain
RAG의 기본 개념과 필요성을 이해하고, 환경 설정 방법, LLM 기본 용어, LangChain의 핵심 기능과 LCEL 문법을 학습한다. ChatOpenAI 설정, 멀티모달 모델, 체인 구성 등 LangChain의 기초를 다룬다.
_PART 02 프롬프트와 출력 파서
프롬프트 템플릿 생성, 부분 변수 활용, 퓨샷 프롬프트, 예제 선택기 등 다양한 프롬프트 기법과 PydanticOutputParser, JSON 파서, 데이터프레임 파서 등 출력 형식을 제어하는 방법을 배운다.
_PART 03 모델과 메모리
다양한 LLM 모델(OpenAI, Google, Hugging Face, Ollama 등) 활용법과 대화 버퍼, 토큰 버퍼, 요약 메모리, 벡터 스토어 검색 메모리 등 대화 내용을 기억하는 메모리 시스템 구축법을 다룬다.
_PART 04 데이터 로드와 텍스트 분할
PDF, HWP, CSV 등 다양한 문서 로더와 문자 단위, 토큰 단위, 의미 단위, 코드, 마크다운, HTML, JSON 등 다양한 방식의 텍스트 분할 방법을 학습한다.
_PART 05 벡터 스토어와 리트리버
OpenAI, HuggingFace 등 임베딩 모델과 Chroma, FAISS, Pinecone 등 벡터 스토어, 다양한 리트리버(문서 압축기, 앙상블, 다중 쿼리 생성, 셀프 쿼리 등) 활용법을 배운다.
_PART 06 LangChain 실습
Streamlit으로 ChatGPT 웹 앱, 이메일 자동화 챗봇, 다양한 모델 활용 챗봇, PDF 기반 RAG 챗봇 등 실제 프로젝트를 구현하며 앞서 배운 기술을 종합적으로 적용한다.
목차
프롤로그
추천사
독자들의 찬사
코드 리뷰어들의 후기
다운로드 및 문의
이 책의 구성
PART 01 처음 만나는 LangChain
CHAPTER 01 RAG 이해하기
01 RAG를 사용해야 하는 이유
02 RAG의 기막힌 능력
03 LangChain을 이용한 RAG 시스템 구축
CHAPTER 02 환경 설정
01 윈도우에서 환경 설치
02 MacOS에서 환경 설치
03 OpenAI API 키 발급 및 설정하기
04 LangSmith 키 발급 및 설정하기
CHAPTER 03 LLM 기본 용어
01 Jupyter Notebook 사용법
02 토큰, 토큰 계산기, 모델별 토큰 비용
03 모델의 입출력과 컨텍스트 윈도우
CHAPTER 04 LangChain 시작하기
01 ChatOpenAI 주요 매개변수와 출력
02 LangSmith로 GPT 추론 내용 추적하기
03 멀티모달 모델로 이미지를 인식하여 답변 출력하기
04 프롬프트 템플릿 활용하기
05 LCEL로 체인 생성하기
06 출력 파서를 체인에 연결하기
07 batch() 함수로 일괄 처리하기
08 비동기 호출 방법
09 Runnable로 병렬 체인 구성하기
10 값을 전달해 주는 RunnablePassthrough
11 병렬로 Runnable을 실행하는 RunnableParallel
12 함수를 실행하는 RunnableLambda와 itemgetter
PART 02 프롬프트와 출력 파서
CHAPTER 05 프롬프트
01 프롬프트 템플릿 만들기
02 부분 변수 활용하기
03 YAML 파일로부터 프롬프트 템플릿 로드하기
04 ChatPromptTemplate
05 MessagesPlaceholder
06 퓨샷 프롬프트
07 예제 선택기
08 FewShotChatMessagePromptTemplate
09 목적에 맞는 예제 선택기
10 LangChain Hub에서 프롬프트 공유하기
CHAPTER 06 출력 파서
01 PydanticOutputParser
02 with_structured_output() 바인딩
03 LangSmith에서 출력 파서의 흐름 확인하기
04 쉼표로 구분된 리스트 출력 파서
05 구조화된 출력 파서
06 JSON 형식 출력 파서
07 Pandas 데이터프레임 출력 파서
08 날짜 형식 출력 파서
09 열거형 출력 파서
PART 03 모델과 메모리
CHAPTER 07 모델
01 RAG에서 LLM의 역할과 모델의 종류
02 다양한 LLM 활용 방법과 API 키 가져오기
03 LLM 답변 캐싱하기
04 직렬화와 역직렬화로 모델 저장 및 로드하기
05 GPT 모델의 토큰 사용량 확인하기
06 Google Generative AI 모델
07 Hugging Face Inference API 활용하기
08 Dedicated Inference Endpoint로 원격 호스팅하기
09 Hugging Face 로컬 모델 다운로드 받아 추론하기
10 Ollama 설치 및 Modelfile 설정하기
11 Ollama 모델 생성하고 ChatOllama 활용하기
12 GPT4All로 로컬 모델 실행하기
CHAPTER 08 메모리
01 대화 버퍼 메모리
02 대화 버퍼 윈도우 메모리
03 대화 토큰 버퍼 메모리
04 대화 엔티티 메모리
05 대화 지식 그래프 메모리
06 대화 요약 메모리
07 벡터 스토어 검색 메모리
08 LCEL 체인에 메모리 추가하기
09 SQLite에 대화 내용 저장하기
10 휘발성 메모리로 일반 변수에 대화 내용 저장하기
PART 04 데이터 로드와 텍스트 분할
CHAPTER 09 문서 로더
01 문서 로더의 구조 이해하기
02 PDF 로더
03 HWP 로더
04 CSV 로더와 데이터프레임 로더
05 WebBaseLoader
06 DirectoryLoader
07 UpstageDocumentParseLoader
08 LlamaParse
CHAPTER 10 텍스트 분할
01 문자 단위로 분할하기
02 문자 단위로 재귀적으로 분할하기
03 토큰 단위로 분할하기
04 의미 단위로 분할하기
05 코드 분할하기
06 마크다운 헤더로 분할하기
07 HTML 헤더로 분할하기
08 JSON 단위로 분할하기
PART 05 벡터 스토어와 리트리버
CHAPTER 11 임베딩
01 OpenAIEmbeddings
02 CacheBackedEmbeddings
03 HuggingFaceEmbeddings
04 UpstageEmbeddings
05 OllamaEmbeddings
CHAPTER 12 벡터 스토어
01 Chroma
02 FAISS
03 Pinecone
CHAPTER 13 리트리버
01 벡터 스토어 기반 리트리버
02 문서 압축기
03 양방향 리트리버
04 긴 문맥 재정렬
05 부모 문서 리트리버
06 다중 쿼리 생성 리트리버
07 다중 벡터 스토어 리트리버
08 셀프 쿼리 리트리버
09 시간 가중 벡터 스토어 리트리버
PART 06 LangChain 실습
CHAPTER 14 Streamlit으로 ChatGPT 웹 앱 제작하기
01 기본적인 웹 앱 형태 만들기
02 웹 앱에 체인 생성하기
03 프롬프트 타입 선택 기능 추가하기
CHAPTER 15 이메일 업무 자동화 챗봇
01 이메일 내용으로부터 구조화된 정보 추출하기
02 SerpAPI를 정보 검색에 활용하기
03 구조화된 답변을 다음 체인의 입력으로 추가하기
04 이메일의 주요 정보 및 검색 정보 기반 요약 보고서 챗봇
CHAPTER 16 다양한 모델을 활용한 챗봇
01 별도의 파이썬 파일로 기능 분리하기
02 GPT 대신 Deepseek 모델 사용하기
03 Ollama 모델을 사용한 RAG
04 멀티모달 모델을 활용한 이미지 인식 기반 챗봇
CHAPTER 17 RAG 챗봇
01 PDF 문서 기반 질의응답 RAG 만들기
02 프롬프트를 개선해 주는 프롬프트 메이커
03 페이지 분할 후 파일 업로드 기능 추가하기
04 PDF 기반 QA 챗봇 만들기
05 LangSmith 추적, 다양한 LLM을 RAG에 적용하기
06 프롬프트에 출처 표시하고 표 기능 추가하기
에필로그
찾아보기
저자소개
책속에서
“서울특별시에 사는 테디 아버지 이름이 뭐야?”
ChatGPT는 이러한 개인적인 질문을 받으면 굉장히 황당할 겁니다. 테디가 누구인지, 그의 아버지 이름이 뭔지 어떻게 알겠냐고요. 이런 경우 모른다고 답하거나 답변하는 과정에서 잘못된 정보를 생성(할루시네이션)할 가능성이 높습니다. 하지만 다음과 같은 가족관계증명서를 GPT에게 주면 어떻게 될까요? GPT는 자료를 참고해서 테디 아버지 이름은 ‘폴’이라고 정확한 답변을 제공할 수 있을 것입니다.
완전 파인 튜닝은 다소 전문적인 영역이기 때문에 개인이 수행하기에는 어려울 수 있습니다. PEFT 역시 파인 튜닝의 한 종류이지만, 충분한 시간과 노력을 들인다면 개인적으로 시도해 볼 수 있는 수준입니다.
RAG는 코드 작성이 필요 없는 프롬프트 엔지니어링과 비교해도 구현 난이도가 그리 높지 않은데, 앞으로 학습할 8단계의 세부 모듈을 플러그인처럼 교체하는 방식으로 구현할 수 있기 때문입니다.
ChatGPT는 자체 RAG 시스템을 통해 답변을 제공하지만, 더 나은 답변을 위해 세부 알고리즘을 조정할 수 없다는 문제가 있습니다. 이제 우리는 LangChain을 통해 RAG의 모든 세부 프로세스를 한 땀 한 땀 구현할 것입니다. 한마디로 ‘튜닝’을 하는 것이죠. 우리가 원하는 형태의 답변을 얻을 때까지 각 과정을 투명하게 개선하고, 그 방법론을 체계적으로 정립해 놓으면 다양한 비즈니스 환경에서도 얼마든지 활용 가능한 수준의 성능에 도달할 수 있습니다.