책 이미지
책 정보
· 분류 : 국내도서 > 컴퓨터/모바일 > 인공지능
· ISBN : 9791194587934
· 쪽수 : 372쪽
· 출판일 : 2025-12-18
책 소개
목차
추천사 ix
베타리더 후기 x
머리말 xii
CHAPTER 1 라마인덱스 및 RAG 이해하기 1
1.1 라마인덱스 소개 1
__1.1.1 대형 언어 모델 1 / 1.1.2 LLM의 학습 방법과 한계점 2 / 1.1.3 라마인덱스 소개 4 / 1.1.4 라마인덱스와 랭체인 비교 5 / 1.1.5 라마인덱스 환경 소개 7
1.2 프롬프트 8
__1.2.1 프롬프트와 콘텍스트 8 / 1.2.2 토큰 10 / 1.2.3 프롬프트: 시스템, 사용자, 어시스턴트 12
1.3 RAG 13
__1.3.1 RAG의 작동 원리 14 / 1.3.2 RAG의 구성 요소 16
1.4 라마인덱스 RAG 파이프라인 19
__1.4.1 데이터 로더 19 / 1.4.2 문서 분할과 노드 20 / 1.4.3 임베딩과 인덱스 21 / 1.4.4 쿼리 엔진: Query the LLM 22
1.5 라마인덱스 사용 준비하기 23
__1.5.1 VS Code 설치하기 23 / 1.5.2 파이썬 설치하기 28 / 1.5.3 ChatGPT API 준비하기 30
CHAPTER 2 라마인덱스 RAG 기본 파이프라인 구현하기 37
2.1 실습 환경 세팅 37
__2.1.1 가상 환경을 사용하는 이유 37 / 2.1.2 실습 코드 다운로드 39 / 2.1.3 가상 환경 세팅 41
2.2 라마인덱스 기초 파이프라인 구현 44
__2.2.1 실습 코드 오픈 및 가상 환경 선택 44 / 2.2.2 파이프라인 코드 설명 46
2.3 데이터 로드 49
__2.3.1 Document 50 / 2.3.2 노드 54 / 2.3.3 여러 가지 데이터 로더 소개 57 / 2.3.4 여러 가지 노드파서 소개 62
2.4 임베딩과 인덱스 69
__2.4.1 임베딩을 통한 문장 간 유사도 평가 70 / 2.4.2 VectorStoreIndex 72 / 2.4.3 로컬에 인덱스 저장 74
2.5 벡터 스토어 77
__2.5.1 FAISS 78 / 2.5.2 크로마 DB 81 / 2.5.3 기존 벡터 DB 활용 85
2.6 검색 및 쿼리 86
__2.6.1 쿼리 엔진이란? 87 / 2.6.2 쿼리 엔진 간단 사용법 89 / 2.6.3 RetrieverQueryEngine 91 / 2.6.4 Chat Engine 96
2.7 스트림릿을 활용한 RAG 애플리케이션 구축 97
__2.7.1 스트림릿 소개 97 / 2.7.2 스트림릿 설치 99 / 2.7.3 스트림릿 기본 사용법 101 / 2.7.4 스트림릿 RAG 애플리케이션 105 / 2.7.5 스트림릿 앱 배포 109
CHAPTER 3 고급 검색 알고리즘을 활용한 Advanced RAG 구현 119
3.1 희소 검색과 밀집 검색 119
__3.1.1 희소 검색 119 / 3.1.2 밀집 검색 120
3.2 라마인덱스를 활용한 BM25 RAG 구현 122
__3.2.1 TF-IDF 122 / 3.2.2 BM25 125 / 3.2.3 BM25 검색기를 통한 RAG 구현 132
3.3 리랭킹 기법 139
__3.3.1 리랭킹의 개념 139 / 3.3.2 혼합 검색 구현하기 141 / 3.3.3 크로스 인코더 기반의 리랭킹 라마인덱스 RAG 구현 146 / 3.3.4 LLM 기반의 리랭킹 라마인덱스 RAG 구현 159
3.4 다중 쿼리 생성 167
__3.4.1 다중 쿼리 생성 기능 구현 167 / 3.4.2 다중 쿼리 생성을 적용한 RAG 구현 171
3.5 가상 문서 임베딩 176
__3.5.1 가상 문서 임베딩 기능 구현 177 / 3.5.2 가상 문서 임베딩을 적용한 RAG 구현 179
CHAPTER 4 RAG 시스템 구현을 위한 여러 가지 모델 소개 183
4.1 LLM 선택 시 고려할 점 183
__4.1.1 API vs 로컬 183 / 4.1.2 LLM 모델 벤치마크 185 / 4.1.3 임베딩 모델 벤치마크 189
4.2 LLM 모델 소개 및 사용법 191
__4.2.1 OpenAI 192 / 4.2.2 구글 195 / 4.2.3 앤트로픽 199 / 4.2.4 딥시크 204
4.3 임베딩 모델 소개 및 사용법 210
__4.3.1 OpenAI 210 / 4.3.2 구글 제미나이 211 / 4.3.3 코히어 213 / 4.3.4 허깅 페이스 217 / 4.3.5 업스테이지 221
4.4 상용 vs 오픈소스 모델 실전 비교 223
__4.4.1 상용 조합(클로드 + 코히어) 224 / 4.4.2 오픈소스 조합(DeepSeek-R1 + 허깅 페이스) 227
CHAPTER 5 이미지와 표도 인식하는 멀티모달 RAG 구현 231
5.1 라마인덱스 멀티모달 RAG 소개 231
__5.1.1 멀티모달 RAG 개념 231 / 5.1.2 라마인덱스 멀티모달 RAG 파이프라인 233
5.2 라마인덱스 라마파스 활용하기 236
__5.2.1 라마파스 소개 236 / 5.2.2 라마파스 사용 준비하기: API 키 발급 237 / 5.2.3 라마파스를 활용한 RAG 구현하기 240
5.3 텍스트, 이미지를 활용한 라마인덱스 RAG 247
__5.3.1 이미지 파일을 활용한 멀티모달 구현하기 247 / 5.3.2 라마인덱스 멀티모달 RAG 파이프라인 구현하기 251 / 5.3.3 이미지를 입력으로 하는 RAG 구현하기 257
5.4 복잡한 PDF 문서를 활용한 RAG 시스템 구현 264
__5.4.1 이미지 파일로 추출하기: unstructured 사용하기 265 / 5.4.2 PDF 문서 텍스트, 표 문서로 저장하기 272 / 5.4.3 이미지 캡셔닝 273 / 5.4.4 인덱스 생성 및 RAG 구현 278
CHAPTER 6 생각하고 판단하는 ReAct 에이전트 285
6.1 생각의 사슬 288
6.2 환경 설정 및 데이터 로드 289
6.3 쿼리 엔진 만들기 293
6.4 도구 만들기 295
6.5 프롬프트 작성하기 297
6.6 에이전트 객체 선언 300
6.7 에이전트 RAG 300
6.8 멀티턴: 이전 대화 고려하기 303
6.9 그라디오를 이용한 웹 애플리케이션 310
__6.9.1 그라디오와 스트림릿 비교 310 / 6.9.2 RAG 애플리케이션 312 / 6.9.3 애플리케이션 데모 315
CHAPTER 7 즉시 함수를 호출하는 Function Calling 에이전트 319
7.1 Function Calling 이해하기 319
7.2 ReAct 에이전트와의 비교 320
7.3 환경 설정 및 필요 라이브러리 설치 321
7.4 쇼핑몰 데이터 구조 설계 323
7.5 고객 지원 함수 구현 327
7.6 에이전트 객체 선언 335
7.7 멀티턴: 이전 대화 고려하기 337
7.8 그라디오를 이용한 웹 애플리케이션 346
찾아보기 353
책속에서
LLM은 학습한 데이터에 따라 텍스트를 생성한다는 관점에서 몇 가지 한계점이 있습니다. 첫째, 편향되거나 오류가 있는 데이터를 학습했을 경우 잘못된 정보를 생성할 수 있습니다. 둘째, 환각 현상입니다. 특정 질문에 대해 학습하지 않았다면 부정확한 정보를 근거로 응답하는 것을 의미합니다. 셋째, 회사 내부 자료와 같이 특정 도메인에 대한 정보나 실시간으로 업데이트되는 정보(주가, 날씨 등)는 학습하지 않아서 정확히 답변하지 못합니다. 즉, LLM은 학습된 데이터에 의존하기 때문에 답변을 신뢰할 수 없다는 단점이 있습니다. / 이러한 LLM의 한계점을 보완하기 위한 것이 RAG 기술입니다. RAG는 LLM이 학습하지 못한 부분을 웹, 데이터베이스, 각종 문서 등을 참고하여 LLM이 답변하도록 만드는 기술입니다. 이 책의 주요 테마인 라마인덱스는 RAG를 활용하여 LLM을 개발하는 프레임워크라고 할 수 있습니다.
라마인덱스는 데이터 수집을 위해 SimpleDirectoryReader와 같은 내장 데이터 로더를 기본적으로 제공하며, 이를 통해 로컬 디렉터리의 다양한 파일 형식을 쉽게 Document로 로드할 수 있습니다. 더 전문적인 데이터 소스 처리가 필요한 경우, 라마허브에서 제공하는 수백 가지의 특수 목적 데이터 로더를 다운로드하여 사용할 수 있습니다. 예를 들어 노션(Notion), 디스코드(Discord), 구글 드라이브(Google Drive) 등 특정 플랫폼의 데이터를 가져오거나 API 연동이 필요한 경우 라마허브의 데이터 로더를 활용하면 됩니다.
TF-IDF를 기반으로 BM25 알고리즘을 이해하고 파이썬으로 구현해보겠습니다. TF-IDF에서는 총문서의 개수와 단어의 등장 빈도를 고려하는 알고리즘이었습니다. BM25 알고리즘은 TF-IDF에서 발전된 형태로 문서의 길이까지 고려하여 문서와 쿼리 간 관련성까지 평가합니다. TF-IDF는 단어가 자주 등장할수록 중요도가 한없이 높아지기가 쉽습니다. BM25는 이런 문제를 방지하기 위해 일정 빈도 이상에서는 관련성을 천천히 증가시키는 포화 효과를 통해 보정 작업을 거칩니다. 또한 길이가 긴 문서의 경우 짧은 문서에 비해 단어가 많기 때문에 상대적으로 TF가 높을 수 있으므로, 문서의 길이에 대한 보정식도 적용합니다. / 따라서 BM25는 TF-IDF에 비해 더 정교한 검색을 할 수 있습니다. BM25는 주로 검색 엔진이나 정보 검색 시스템에서 정밀한 결과를 제공하여 사용자에게 더욱 적절한 문서를 추천할 수 있습니다.



















