RAG
정보 검색과 생성을 통합하는 방법론.
풍부한 정보를 담고 있는 대규모 문서 데이터베이스에서 관련 정보를 검색하고, 이를 통해 언어 모델이 더 정확하고 상세한 답변을 생성할 수 있게 한다.
ex) 최신 뉴스 이벤트나 특정 분야의 전문 지식과 같은 주제에 대해 물어보면, RAG는 관련 문서를 찾아 그 내용을 바탕으로 답변을 구성한다.
RAG의 8단계 프로세스
사전 준비 단계
1. 도큐먼트 로드(Document Loader)
외부 데이터 소스에서 필요한 문서를 로드하고 초기 처리를 진행
공부하기 전에 필요한 책들을 책장에서 골라오는 것과 유사
2. 텍스트 분할(Text Splitter)
로드된 문서를 처리 가능한 작은 단위로 분할
큰 책을 챕터별로 나누는 것과 유사
3. 임베딩(Embedding)
각 문서 또는 문서의 일부를 벡터 형태로 변환 후, 문서의 의미를 수치화
책의 내용을 요약해 핵심 키워드로 표현하는 것과 유사
4. 벡터 스토어(Vector Store) 저장
임베딩된 벡터들을 데이터베이스에 저장
요약된 키워드를 색인화하여 추후 빠르게 찾을 수 있도록 하는 과정
런타임 단계
1. 검색기(Retriever)
검색 알고리즘
질문이 주어지면, 이와 관련된 벡터를 벡터 데이터베이스에서 검색
쿼리를 바탕으로 DB에서 검색해 결과를 가져오기 위해 리트리버 정의
Dense, Sparse 리트리버로 나뉨
- Dense 리트리버: 유사도 기반 검색
- Sparse 리트리버: 키워드 기반 검색
질문에 가장 잘 맞는 책의 챕터를 찾는 것과 유사
2. 프롬프트(Prompt)
RAG를 수행하기 위한 프롬프트 생성
프롬프트의 context에는 문서에서 검색된 내용이 입력됨
프롬프트 엔지니어링을 통해 답변의 형식을 지정할 수 있음
검색된 정보를 바탕으로 언어 모델을 위한 질문을 구성
정보를 바탕으로 어떻게 질문할지 결정하는 과정
3. LLM(Large Language Model)
GPT-3,5, GPT-4, Claude 등과 같은 모델을 정의
구성된 프롬프트를 사용해 언어 모델이 답변을 생성
수집된 정보를 바탕으로 과제나 보고서를 작성하는 학생과 유사
4. 체인(Chain) 생성
이전의 모든 과정(프롬프트 - LLM - 출력)을 하나의 파이프라인으로 묶어주는 체인(Chain)을 생성
기능별 다양한 모듈 활용
LangChain의 RAG
1. 질문 처리
사용자의 질문을 받아 이를 처리하고, 관련 데이터를 찾는 작업
- 데이터 소스 연결: 질문에 대한 답변을 찾기 위해 다양한 텍스트 데이터 소스에 연결
- LangChain은 다양한 데이터 소스와의 연결을 간편하게 설정할 수 있도록 도움
- 데이터 인덱싱 및 검색: 데이터 소스에서 관련 정보를 효율적으로 찾기 위해 데이터는 인덱싱되어야 함
- LangChain은 인덱싱 과정을 자동화하고, 사용자의 질문과 관련된 데이터를 검색하는 데 필요한 도구를 제공
2. 답변 생성
관련 데이터를 찾은 후, 이를 기반으로 사용자의 질문에 답변을 생성
- 답변 생성 모델: LangChain은 고급 자연어 처리(NLP) 모델을 사용해 검색된 데이터로부터 답변을 생성할 수 있는 기능을 제공
- 사용자의 질문과 검색된 데이터를 입력으로 받아, 적절한 답변을 생성
아키텍처
전형적인 RAG의 주요 구성 요소
- 인덱싱: 소스에서 데이터를 수집하고 인덱싱하는 파이프라인
- 검색 및 생성: 실제 RAG 체인. 사용자 쿼리를 실행 시간에 받아 인덱스에서 관련 데이터를 검색한 다음, 그 데이터를 모델에 전달
인덱싱
- 1. 로드: DocumentLoaders를 사용한 데이터 로드
- 2. 분할: Text splitters 는 큰 Document를 더 작은 청크로 나눔.
- 데이터를 인덱싱하고 모델에 전달하는 데 유용. 큰 청크는 검색하기 어렵고 모델의 유한한 컨텍스트 창에 맞지 않음.
- 3. 저장: 나중에 검색할 수 있도록 분할을 저장하고 인덱싱할 장소 필요
- VectorStore, Embeddings 모델 사용
검색 및 생성
- 1. 검색: 사용자 입력이 주어지면 리트리버를 사용하여 저장소에서 관련 분할을 검색
- 2. 생성: ChatModel / LLM 은 질문과 검색된 데이터를 포함한 프롬프트를 사용해 답변을 생성
'머신러닝 > 자연어 처리' 카테고리의 다른 글
Agent (0) | 2025.02.25 |
---|---|
Hugging Face가 공개한 MiniMax-Text-01 정리 (0) | 2025.02.21 |