안녕하세요🐶
빈지식 채우기의 비니🙋🏻♂️ 입니다.
RAG 에 필요한 구성요서 두 번째 시간!
바로 비정형 데이터를 사용함에 매우매우 중요한 임베딩에 대해 알아보도록 하겠습니다!
1. 임베딩이란?
사람이 쓰는 자연어를 기계가 이해할 수 있는 숫자의 나열인 벡터로 바꾼 결과 혹은 그 과정
가장 간단한 형태의 임베딩은 단어의 빈도를 기준으로 벡터로 변환하는 것입니다.
구분 | A 책 | B 책 | C 책 | D 책 |
탕수육 | 0 | 2 | 9 | 7 |
고양이 | 0 | 1 | 0 | 0 |
동물 | 0 | 1 | 0 | 0 |
- 위에 표에서 B 책의 임베딩은 [2,1,1] 이고 탕수육의 임베딩은 [0,2,9,7,] 입니다.
- C 책과 D 책에서 탕수육의 단어가 많이 겹친 것을 알 수 있습니다.
- 위 표를 마탕으로 C 책과 D 책은 탕수육이라는 소재를 공유한다는 점에서 비슷한 작품일 가능성이 높습니다.
- 고양이와 동물은 B 책에서만 등장하는 것을 알 수 있습니다.
- 고양이와 동물의 의미차이가 탕수육과 고양이보다 작을 수 있다고 추정할 수 있습니다.
2. 임베딩의 역할
임베딩의 역할에는 크게 2가지가 존재합니다.
1. 의미적/문법적 정보 함축
2. 전이 학습
2.1 의미적/문법적 정보 함축
임베딩은 벡터인 만큼 사칙연산도 가능합니다.
단어의 덧셈/뺄셈을 통해서 단어들 사이의 관계를 도출할 수 있습니다.
예를 들어,
아들 - 딸 + 소녀 = 소년 이 성립되면 성공적인 임베딩이라 볼 수 있습니다.
아들 - 딸 사이의 관계가 소년 - 소녀 사이의 의미 차이가 임베딩에 함축되어 있으면 품질이 좋은 임베딩이라 볼 수 있습니다.
2.2 전이 학습
품질 좋은 임베딩을 다른 딥러닝 모델의 입력값으로 사용하는 것을 Transfer Learning ( 전이학습 ) 이라고 합니다.
전이 학습을 통해 신경망을 업데이트하고 재훈련시키는 것이
처음부터 신경망을 훈련시키는 것보다 빠르며 쉽습니다.
3. 임베딩 모델
정보를 다차원 공간의 조밀한 포현으로 캡슐화 하도록 훈련된 알고리즘
- 다차원 공간 : Vector DB
- 조밀한 표현 : Vector
고로 임베딩 모델이란,
비정형 정보를 Vector 로 변환하는 머신러닝 알고리즘 입니다.
3.1 벡터 임베딩
단어와 문장, 비정형 데이터 등을 Vector DB에 저장하기 위해 Vector 로 변환하는 행위
* 내부 머신 러닝 프로세스를 통해 데이터가 벡터로 변환된다.
Q. 비정형 데이터들을 처리하기 위해서는 여러 임베딩 모델을 사용해야 하나요?
A. 임베딩 모델마다 머신러닝 프로세스가 다르다. 같은 데이터라도 모델이 다르면 생성되는 벡터가 달라진다.
이는 Vector DB의 유사성 검색 시 문제를 야기한다.
그럼 여러 형태의 데이터들은 어떻게 처리해야 하는 걸까?
3.2 Document Loader
Text 문서, PDF, Excel, CSV, PPT, JSON, 웹페이지 등 다양한 비정형 데이터들을 Text 로 변환하는 기법
* RAG 시스템에서는 외부 데이터를 LOAD 하는 단계에서 사용되는 기법이다.
즉, Document Loader 를 사용해 비정형 데이터들을 Text 타입으로 뽑아낼 수 있다면,
Text 를 처리하는 모델 하나만을 사용해 처리가 가능하다.
3.3 임베딩 모델 종류
종류 | 설명 | 장점 | 단점 |
Cloud Service Embedding Model | OpenAI, Amazon 과 같은 플렛폼에서 제공 | - 하드웨어 사양에 대해 크게 신경 안써도 됨 - 다국어에 대한 임베딩 보장 - 사용방법이 간단 |
- 유료 / 과금 |
OpenSource Embedding Model | HuggingFace 에서 제공하는 무료 오픈소스 임베딩 제공 | - 무료 - OpenSource 이지만 성능 높은 임베딩 모델 - LangChain에서 HuggingFace 모듈 지원 |
- 다국어에 대한 아쉬움 - 하드웨어 사양 고려 |
3.4 Document Loader vs Embedding Model
Document Loader
- 서비스 내에서 주로 사용하는 비정형 데이터(ex. PDF)를 얼마나 잘 읽어오는지가 중요할 때
- 속도, 성능을 고려한 선택
Embedding Model
- 머신러닝 프로세스 실행에 하드웨어적으로 이슈가 발생해서는 안될 때
- 속도, 성능, 사양, 돈을 고려한 선택
감사합니다.
참고
'기타 👨🏻💻 > AI' 카테고리의 다른 글
[AI] 간단한 RAG 구현 ( Anaconda, Streamlit, OpenAI, Flask, Chroma, Hugging Face ) (5) | 2024.09.03 |
---|---|
[AI] RAG 의 구성요소 1 ( Vector DB ) (0) | 2024.08.21 |
[AI] RAG ( Retrieval Augmented Generation ) 의 기초 (0) | 2024.08.20 |
[OCR] Google Vision Ai 적용 ( 이미지 분석 - Python ) (0) | 2024.03.20 |