[NCE-AI] RAG & LangChain

NCE-AI자격증RAGLangchain
avatar
2025.03.26
·
9 min read

RAG(Retrieval-Augmented Generation)란?

LLM에 외부 지식 베이스를 연결하여 모델의 생성 능력과 사실 관계 파악 능력을 향상시키는 기술

4303
  • 외부에 있는 데이터를 전처리 과정을 통해 로드함

  • 데이터를 적절한 길이로 분할하고, 텍스트가 가지고 있는 의미와 특성을 벡터화하는 임베딩 과정 수행

  • 임베딩 결과 값들은 벡터DB에 저장되어, 사용자가 쿼리를 던지면 가장 적합한 답변을 벡터DB로부터 찾아 답변을 만들어냄

LLM이 가지고 있는 한계와 RAG의 등장

할루시네이션

생성형 AI가 정보를 출력하는 과정에서 발생하는 오류로, 허위 정보를 마치 '사실'인 것처럼 말하는 현상'

  • LLM은 기존의 학습된 데이터를 바탕으로 받은 질문에 가장 근접한 답변을 확률 계산을 통해 생성함.

  • 이때, LLM이 잘못된 데이터를 학습하거나 학습되지 않은 부분에 대해서는 기존 학습 데이터에서 확률상 높은 답변을 생성하면서 잘못된 답변을 만들어낼 수 있음.

  • 또한, 학습된 데이터의 진위 여부까지는 알지 못하는 LLM의 한계가 있음.

  • => RAG를 통해서 할루시네이션 현상을 보완할 수 있음.

RAG가 주목받는 이유

4307
  • 한국 기업의 절반 정도가 AI를 도입 및 활용하는 매우 구체적인 계획을 가지고 있음.

  • LLM 모델에 기업 내부 데이터를 학습시킬 수 있는 RAG를 도입함으로써, 보다 높은 정확도의 답변을 생성할 수 있음.

    • 내 휴가는 얼마나 남았어?

    • 우리 회사 휴가 제도는 어떻게 돼?

RAG와 Fine tuning

4308

RAG 구성 요소

4310

RAG 동작 프로세스

4311

Indexing

  • 외부 데이터 준비

  • 데이터 정제

  • 데이터 청킹(chunking)

  • 임베딩한 데이터를 벡터DB에 저장

Retrieval

  • 사용자의 쿼리 이해

  • 쿼리 벡터의 유사도 스코어 계산

  • DB에서 쿼리 벡터와 가장 높은 유사도를 가지는 Top-k를 검색 및 추출

Generation

  • 결과값을 프롬프트에 맞춰 실제 최종 답변을 생성

RAG 구성 시 활용되는 프레임워크

LangChain

  • LLM 기반으로 복잡한 어플리케이션 구현 가능

  • 다양한 모듈 제공

    4313

LlamaIndex

  • Retrieval과 Indexing에 초점이 맞춰져 있는 프레임워크

  • 데이터로부터 보다 정확한 데이터를 추출해서 구성하고 싶다면 적합

4315

Langchain이란?

대규모 언어 모델(LLM)을 기반으로 어플리케이션을 구축하기 위한 오픈 소스 프레임 워크

4319
  • 여러 개의 모듈로 구성되어 있는데, RAG, Agents, Extraction 등 어떤 작업을 할 것인지에 따라 원하는 모듈들을 조합하여 구성할 수 있음

  • Retrieval Augmented Generation

    • Retrieval > Prompt > Chat Model

  • Agents

    • Prompt > Model > Output Parser > Tools

  • Storage & Indexing

    • Document Loader > Text Splitter > Embeddings > Vector Store

  • Extraction

    • Document Loader > Prompt > Model > Output Parser

Langchain 주요 모듈

43204322

ChatPromptTemplates

from langchain_core.prompts import ChatPromptTemplate

chat_template = ChatPromptTemplate.from_messages(
  [
    ("system", "You are a helpful AI bot. Your name is {name}."),
    ("human", "Hello, how are you doing?"),
    ("ai", "I'm doing well, thanks!"),
    ("human", "{user_input}"),
  ]
)

messages = chat_template.format_message(name="Bob", user_input="What is your name?")
  • Role 지정 (system, human, ai 등)

  • 여러 개의 입력값을 받아서 하나의 반환값으로 결과값을 리턴

  • Role을 이용하여 언어 모델에 instruction이나 input 값을 넣을 수 있음.

Chat Model

  • Input, Output 챗 메시지를 만들어낼 수 있는 언어 모델을 의미

  • 현재 랭체인에서는 많은 LLM 모델과 연동되어 있음

4323

Output Parser

  • LLM의 응답값을 정형화된 데이터로 가공하고자 할 때 유용

  • 예) StrOutputParser : 메시지의 content 속성을 추출하여 문자열 형태로 반환

    4324

Document Loader

from langchain_community.document_loaders import PyMuPDFLoader

loader = PyMuPDFLoader("example_data/layout-parser-paper.pdf"_
data = loader.load()
  • 웹 페이지, PDF 파일, 데이터베이스 등 다양한 소스에서 문서를 불러올 수 있음.

  • 불러온 문서 데이터를 부석하고 처리하여, 랭체인의 다른 모듈이나 알고리즘이 처리하기 쉬운 형태로 변환함. 불필요한 데이터를 제거하거나, 구조를 변경할 수도 있음.

  • 대량의 문서 데이터를 효율적으로 관리하고, 필요할 때 쉽게 접근할 수 있도록 함. 이를 통해 검색 속도를 향상시키고, 전체 시스템의 성능을 높일 수 있음.

Text Splitter

4326
  • 위에서 문서를 로드하게 되면, 긴 텍스트를 chunk 단위로 쪼개는 작업을 수행

    • LLM 모델마다 input 값으로 받을 수 있는 토큰 길이에 제한이 있기 때문

    • 모델이 텍스트의 문맥을 정확히 이해하기 위해서 필요함

Embedding

임베딩 모델은 인간의 언어를 기계가 이해할 수 있는 형식으로 변환

4330

Vector Store

벡터 값을 기반으로 정보를 인덱싱하고 검색할 수 있는 데이터 저장소

4331

Retrieval

4332
  • 사용자의 쿼리와 유사한 벡터를 뽑아내기 위해 Retreival 과정을 수행


AI 개발 플랫폼, CLOVA Studio

43334334
  1. 플레이그라운드

    • 파라미터를 조정해 결과값 세부 설정

    • 프롬프트를 입력해 원하는 형태 출력

    • 조율한 값을 기반으로 API 생성

  2. 튜닝

    • 기업 맞춤형 데이터로 모델을 학습

    • 특화 모델 구축하여 AI 제작

    • 작업 종류, 언어에 최적화하여 활용

  3. 익스플로러

    • AI 제작 작업에 활용할 도구 지원

    • 임베딩 API 등 특화 모델 도구 제공

    • 기존에 생성한 작업물 저장 및 공유

  4. 스킬 트레이너

    • 모델에 외부 서비스 API 연결

    • 특화 지식을 모델에 학습

    • 최신 정보를 반영한 답변 제공

RAG 구성 시 활용되는 CLOVA Studio API

익스플로러 도구

Studio에서 유용하게 활용할 수 있는 특화 도구 및 API

4317

플레이그라운드

프롬프트를 입력해 원하는 형태를 출력하고, 조율한 값을 기반으로 API 생성

4318

Reference

CLOVA Studio를 활용한 RAG 구성
네이버 비즈니스 스쿨
https://bizschool.naver.com/online/course/65263/lecture/1462216
CLOVA Studio를 활용한 RAG 구성






- 컬렉션 아티클