-
[NLP] RAG 란 무엇일까?카테고리 없음 2024. 9. 5. 12:05
1. RAG 란 무엇일까요?
- Retrieval-Augmented Generation 의 약자 입니다.
- 이름을 해석해보자면, 가져와서 -> 증강하고 -> 생성한다 입니다.
- 무엇을 가져오고, 무엇을 생성하는 걸까요?
- 아래 영상을 잠깐 봅시다.
https://ai.meta.com/1319742961447503/videos/244800523626272/?idorvanity=712362492679853
2. RAG 는 왜 필요할까요?
- LLM 은 parameter 안에 지식을 저장합니다.
- 이 지식은 한번 학습되면 멈춰있기 때문에 정적 상태에 놓여 있습니다.
- 지식이 수정되거나, 지식을 추가해야할 경우, 이 parameter를 수정하기 위해 재학습을 시켜야 합니다.
- 하지만 LLM 을 학습시키는데에는 많은 자원이 필요합니다.
- 또한 LLM은 도메인 지식에 대해서는 취약합니다.
3. RAG의 이용 ( 결론 )
- RAG 는 LLM이 가지고 있지 못한 지식을, 가져와서(retrieve), prompt에 추가시켜(augment), 답변을 생성해주는(generation) 방법론 입니다.
4. RAG 의 작동 원리를 살펴보시죠.
< 아래의 설명은 chatgpt 와의 대화를 통한 정보입니다 >
1) Retriever 는 DPR ( Dense Passage Retrieval ) 로 구성된다.
- 질문(question)을 encoding 하고, 질문과 문서 벡터 사이의 유사도 측정을 통해, top-k 개의 문서를 반환한다.
2) Generator ( seq2seq 모델을 사용한다 )
- 그런데 retrieve 단계와 generate 단계에서 문서 인코딩 방식이 다른걸 볼 수 있다.
- 그래서 물어봤더니 좋은 질문이라고 칭찬을 받았네요.
-> 검색 목적과 생성 목적의 차이
< 검색 목적 >
- 문서 벡터 d(i) 는 검색 목적으로 인코딩된 벡터이다.
- 이 벡터는 주어진 질문 q 와의 관련성을 평가하기 위해 사용된다.
- 이때의 인코딩은 문서 전체의 의미를 요약하고, 질문과의 유사성을 측정하는데 최적화 되어 있다.
< 생성 목적 >
- 생성 단계에서는 문서의 세부적인 정보를 바탕으로 텍스트를 생성해야 한다.
- 생성기는 검색과는 다른 방식으로 문서의 내용을 활용한다.
- 문서의 전체 의미 뿐만 아니라 문서의 구체적인 세부 정보들이다.
- 문서의 내용을 더 세밀하게 표현한 벡터 z(i) 가 필요하다.
-> 따라서 문서 검색을 위한 인코더와 생성을 위한 인코더는 다를 수 있다.
5. RAG-Sequence 와 RAG-Token
1) RAG-Token
- 같은 질문에 대해 RAG-Token 모델은 첫 번째 단어를 생성하고,
- 이 단어를 바탕으로 정보를 업데이트하여 다음 단어를 생성하는 식으로 진행됩니다.
- 이 과정에서 필요하다면 추가적인 문서를 검색합니다.
- 매우 세밀한 정보가 요구되거나, 질문에 대한 답변이 매우 구체적이어야 하는 경우에 적합합니다.
- 각 토큰마다 정보 검색이 이루어지므로, 질문에 대한 응답이 더욱 정교해질 수 있습니다.
- 매 토큰 생성마다 검색이 수행되므로, 연산 비용이 더 크고, 생성 속도가 느려질 수 있습니다.
2) RAG-Sequence :
- 인코딩된 문서 정보를 바탕으로 한 번에 전체 응답 텍스트를 생성합니다.
- 응답의 일관성이 중요한 경우에 적합합니다.
- 길고 복잡한 질문에 대해 긴 답변을 제공해야 하는 경우, 검색된 모든 정보를 바탕으로 통합적인 응답을 제공할 수 있습니다.
-> 요약 : RAG-Sequence는 더 단순하고 일관된 응답을 원할 때, RAG-Token은 더 복잡하고 동적인 응답이 필요할 때 적합합니다.