🐍 Python

LLM + RAG 활용 AI 시스템 정리

itstory(Booho) 2025. 2. 12. 22:21
728x90

LLM과 RAG 개념 및 실습 준비

🔹 LLM(대규모 언어 모델)이란?

  • 사전에 학습된 대형 AI 모델.
  • 기업이나 연구소에서 미리 학습한 모델을 제공하여 활용 가능.
  • 기존의 AI 모델보다 강력한 문맥 이해 능력을 제공하며, 다양한 응용이 가능.
  • 주요 활용 방식:
    1. 기본 모델 그대로 사용 (가장 빠르고 간단한 방법)
    2. 파인 튜닝(Fine-tuning) → 기존 모델에 새로운 데이터를 학습시켜 맞춤형 모델로 개선.
    3. RAG(Retrieval-Augmented Generation) → 기존 모델에 문서 데이터를 연동하여 특정 문서 기반 응답 생성.

🔹 RAG (검색 증강 생성, Retrieval-Augmented Generation)란?

  • 기존 LLM의 한계를 보완하는 기술.
  • 모델 자체를 학습하지 않고, 외부 문서 데이터를 검색하여 보다 정확한 답변을 제공.
  • 예시:
    • 기존 LLM: 일반적인 대화 가능하지만 특정 기업의 정책이나 매뉴얼에 대한 정확한 답변이 어려움.
    • RAG 적용 LLM: 특정 기업의 매뉴얼을 참고하여 해당 내용을 기반으로 응답 생성.
  • RAG의 핵심 개념:
    1. 문서 내 텍스트를 검색하여 관련 정보를 찾음.
    2. LLM이 검색된 정보를 참고하여 응답 생성.
    3. 특정 기업의 업무 매뉴얼을 기반으로 실제 상담에 활용 가능.
  • RAG의 장점:
    • 모델을 재학습(Fine-Tuning)할 필요 없이 최신 정보 반영 가능.
    • 대형 언어 모델의 불확실한 답변을 줄이고, 신뢰성을 향상시킴.
    • 사내 문서나 법률 문서 같은 특정 도메인에서 정확한 답변을 제공 가능.

PDF 문서 활용한 RAG 실습

🔹 실습 개요

  • AI가 PDF 문서를 읽고, 해당 내용을 바탕으로 질문에 응답하는 시스템을 구축.
  • 사용 문서:
    1. AWS SDK for Java 매뉴얼
    2. 기업 복지 관련 업무 매뉴얼
  • 목표:
    • PDF 문서를 분석하고 텍스트를 추출.
    • LLM 모델을 이용하여 질문-응답 시스템을 구축.
    • 기업의 내부 문서를 기반으로 AI 챗봇을 구현.

🔹 실습 과정

1️⃣ 라이브러리 설치

! pip install pypdf2 llama-index llama-index-embeddings-huggingface pdf2image pytesseract

2️⃣ PDF 문서에서 텍스트 추출 함수 생성

이 함수는 PDF 파일에서 텍스트를 읽어와서 문자열 형태로 반환하는 역할을 합니다.

from pypdf import PdfReader

def extract_text_from_pdf(pdf_file):
    """
    PDF 파일에서 모든 텍스트를 추출하는 함수
    :param pdf_file: PDF 파일 경로
    :return: 추출된 텍스트 문자열
    """
    reader = PdfReader(pdf_file)
    text = ""
    for page in reader.pages:
        text += page.extract_text()
    return text

🔹 이 함수의 동작 과정

  1. PdfReader를 사용하여 PDF 파일을 엽니다.
  2. for 루프를 이용하여 각 페이지의 텍스트를 읽습니다.
  3. 모든 페이지에서 읽어온 텍스트를 하나의 문자열로 합칩니다.
  4. 최종적으로 합쳐진 텍스트를 반환합니다.

🔹 OCR을 활용한 PDF 텍스트 추출 (이미지 기반 PDF 지원)

import pytesseract
from pdf2image import convert_from_path

def extract_text_with_ocr(pdf_file):
    """OCR을 활용하여 이미지 기반 PDF에서도 텍스트 추출"""
    images = convert_from_path(pdf_file)
    text = ""
    for img in images:
        text += pytesseract.image_to_string(img, lang='kor+eng')
    return text

3️⃣ LLM 모델 설정

from llama_index.core import Document, VectorStoreIndex, Settings
from llama_index.embeddings.huggingface import HuggingFaceEmbedding

model_name = "mistralai/Mistral-7B-Instruct-v0.2"

4️⃣ RAG 기반 검색 시스템 구축

from llama_index.core import ServiceContext, SimpleKeywordTableIndex

# 문서 데이터 생성
text_data = extract_text_from_pdf("path/to/pdf")
doc = Document(text=text_data)

# 인덱스 생성 및 검색
index = SimpleKeywordTableIndex.from_documents([doc])
query_engine = index.as_query_engine()
response = query_engine.query("퇴직 연금의 도입 효과는?")
print(response)

실습 마무리 및 응용

🔹 실무 적용 예시

  • 기업 고객 상담 챗봇 구축
  • 내부 업무 매뉴얼 자동 검색 시스템
  • 특정 도메인 기반 질의응답 시스템
  • 사내 직원 교육용 AI 도우미
  • 법률 및 규정 관련 문서 검색 시스템
  • 의료 및 연구 자료 기반 AI 시스템

🔹 추가 개선 방향

  • 벡터 검색(Vector Search) 적용 → 더 정밀한 검색 결과 제공.
  • GPT-4와 같은 강력한 LLM 모델 연동 → 더욱 자연스럽고 정확한 답변 가능.
  • 데이터베이스 연동 → 실시간 데이터 반영 및 활용.
  • 멀티모달 AI 적용 고려 → 이미지, 음성 데이터와 결합한 AI 검색 시스템.
  • 특정 기업 환경에 맞춰 LLM 조정 → 기업 내부 문서에 특화된 모델 구성.

 

728x90