RAG(Retrieval Augmented Generation) 개념
정의
- 검색 증강 생성. 문서 기반의 검색 및 답변 생성 기술.
프로세스
전처리 작업: 문서 로드, 스플릿(청킹), 임베딩, 벡터 데이터베이스 저장. 후반부 작업: 사용자 질문 임베딩, 문서 검색, 답변 생성.
문서 전처리 단계
- 각 단계에는 수 많은 알고리즘이 있다.
- 각 알고리즘의 조합은 수억개가 되므로 파이프라인 구성 시 기존 사례를 참고해야한다.
Document Loader
- PDF, Excel, CSV, Json 등등의 문서를 로드할 있다.
- PDF 인코딩 문제와 메타데이터(페이지 번호, 파일명) 처리가 중요.
PDF Loader
- fitz
- 페이지 번호 제공
- Metadata 미지
- PyPDFLoader
- 예제코드에 자주 등장함
- 한글인코딩 처리 수준이 우수하고 속도 빠름
- metadata
- 파일명, 페이지 번호 제공
- UnstructuredPDFLoader
- 세부적인 메타정보를 주기 때문에 속도가 느리다.
- PDFPlumber
Text Splitter
- 소제목을 끊지 않고 가져오는 것이 중요하다.
- 문서를 작은 조각으로 나누는 작업.
- 캐릭터 텍스트 스플리터
- 공백이나 점을 기준으로 분할.
- 리커시브 캐릭터 텍스트 스플리터
- 단락, 문장, 단어 순으로 분할.
- 토큰 텍스트 스플리터
- 한글 처리 문제 해결을 위해 KoNLPy 텍스트 스플리터 사용.
- 허깅페이스
- 다양한 토크나이저 쉽게 활용 가능
- BPE
- Subword Tokenizer
- 시맨틱 청커
- 텍스트를 의미 유사성에 따라 분할.
Embedding
- 문서와 사용자 질문을 벡터로 표현하여 벡터 데이터베이스에 저장.
- 오픈 AI 임베딩
- 유료 모델, 한글 처리 우수, API 사용으로 인프라 부담 감소.
- 캐시백 임베딩
- 중복 과금 방지를 위한 캐싱 기능 제공.
- 임베딩을 저장하거나 임시로 캐싱하여 다시 계산 할 필요가 없도록 함
- 임베딩을 key-value 저장소에 캐싱
- 여러 임베딩 모델을 사용하는 경우 네임스페이스를 설정하여, 1개의 문서에 대한 서로다른 캐싱 가능
- 허깅페이스 임베딩
- MGE
- Mistal
- 다양한 무료 임베딩 모델 제공, 로컬 서버 구축 필요.
Vector Store
Retrievers
참고
[1] https://www.youtube.com/watch?v=NfQrRQmDrcc&ab_channel=%ED%85%8C%EB%94%94%EB%85%B8%ED%8A%B8TeddyNote
이 문서는
jhy156456에 의해 작성되었습니다.
마지막 수정 날짜:2024-07-22 08:58:00