반응형
Retrieval-Augmented Generation의 약자인 RAG는 모델이기보다는 하나의 생성형 AI를 구성하는 방식이라고 생각된다.
크게는 2개의 단계로 이루어져 있으며 해당 단계를 통해 사용자에게 개발자가 의도한대로 답변이 가도록 한다.
물론 2개의 단계 안에서 작은 단위의 단계가 존재한다.
그래서 RAG의 흐름을 Retreival과 Generation 두 단계로 나누었을 때 아래와 같다.
- Retrieval
- Embedding
- 사용자가 입력한 Query를 Vector로 전환한다.
- Searching
- Vector로 전환된 내용을 바탕을 DB에서 Generation에 사용될 내용을 찾는다.
- Embedding
- Generation
- Query + Searched Results
- DB에서 반환된 내용을 Query와 함께 참고하여 생성을 한다.
- 생성의 경우 개발자가 지정한 양식 혹은 행위까지 포함 한다.
- 생성된 내용을 Client에게 반환한다.
- Query + Searched Results
여기서 알 수 있는 RAG의 목적은 LLM을 직접 만들지 않고서도 서비스가 원하는 의도대로 결과를 생성하는 것에 있다.
대부분의 LLM의 경우 텍스트를 이해하고 생성하는데에 있어 일반적인 사용될 수 있는 수준이다. 하지만 특수 목적에 맞게 만들려면은 그 시간과 비용이 천문학적으로 들고 그렇게 만들어진다 해도 서비스의 목적이 조금이라도 바뀌면 쓸모가 없어지는 불상사가 발생한다.
그래서 RAG는 기존의 LLM을 사용하면서 참고하는 데이터를 서비스의 목적에 맞춰 LLM에 전달함으로써 서비스에 의도에 맞춰 생성하도록 유도한다.
그래서 RAG 방식을 사용하는데 있어 아래의 내용들이 필수적으로 준비돼야한다.
- Embedding Model: Query를 Vector로 전환 하기 위하여
- Searching Algorithm: 전환된 Vector를 기반으로 Generation에 사용될 Relevant Data를 구분하기 위해
- DB: Generation에 사용 될 수 있는 데이터를 보관하기 위해
- LLM: 반환 된 내용들을 바탕으로 서비스 의도에 맞게 생성
그래서 위의 내용을 바탕으로 RAG는 아래와 같은 구성이다.(예시 주의!)
참고자료
- What is Retrieval Augmented Generation (RAG)?
반응형
'개발일반 > 도대체' 카테고리의 다른 글
도대체 FAISS 그리고 Vector Store는 뭘까? (0) | 2024.09.20 |
---|---|
도대체 LangChain은 뭘까? (2) | 2024.09.19 |
도대체 CI/CD는 뭘까? (1) | 2023.12.19 |
도대체 Docker는 뭘까요? (1) | 2023.12.18 |
도대체 Nginx는 뭘까요? (1) | 2023.12.08 |