RAG

소원·2024년 5월 1일

2024

목록 보기
6/10

가장 관련성이 높은 정보를 빠르고 효율적으로 찾는 것은 어렵다.
제품을 찾고 싶지만 자세한 이름이나 브랜드를 모를 때, 노래의 가사는 알지만 노래 제목을 알 수 없을 때, 우리는 모르는 사이에 의미 상 유사성에 초점을 맞춘 Vector search를 사용하고 있다.

Vector Search는 의미론적으로 관련된 수십억 개의 항목을 검색할 수 있는 기능이다.
이는 키워드 검색과 같은 기존 검색 기술과 다르다.
기존의 키워드 검색은 웹을 크롤링하고 키워드를 인덱싱한 후 테이블에 저장된 데이터를 바탕으로 결과를 제공했다.
하지만 사람들은 점점 더 정교한 검색기능을 요구했고, 검색엔진은 사용자의 의도를 파악하고 똑똑해져야했다.
하지만 전통적인 검색 기술은 사용자가 던진 질문의 의도와 맥락을 이해할 수 없고 도메인 특이성이 부족하다는 문제에 직면한 상태였다.

이러한 문제를 해결하기 위해 데이터를 의미론적 의미를 포함하는 Embedding이라는 특수 벡터로 변환하는 방법인 Vector Search를 도입, 이게 LLM과 결합한 형태가 RAG이다.

+구글이 말하는 추가 얘기
LLM에서 Vector는 사용자가 엔진의 이해여부를 고려하지 않고 사용하는 자연어 쿼리에 유용하다는 특징을 가지고 있다. 컨텍스트 이해 기능을 활용해 검색 결과 및 추천 기능을 구현할 수 있고, 사용자는 더 관련성있고 흥미로운 정보를 접할 수 있다.
Vector Search는 생성AI에서 정보를 빠르고 효율적으로 검색하는데 도움이 되는 중요한 구성요소다. 이는 사람들이 정보에 참여하는 방식을 변화시키고 있다.
데이터 양이 계속 증가하고 검색에 대한 사용자의 기대가 증가함에 따라 Vector Search는 향후 검색에서 점점 더 중요한 역할을 할 것이다. (라고 그러네요..)

RAG란?

RAG는 LLM에 외부데이터 기반 정보검색(Vector Search)을 결합한 형태이다.
갱신되는 vector DB의 정보를 바탕으로 답변하기 때문에, 질문에 대한 답을 검색해서 찾는 open book의 느낌이라고 생각하면 된다. (그렇다면 반대로 Fine-tuning은 Closed book으로 생각하면 된다.)

모델이 최신 정보를 반영하거나 더 넓은 지식을 활용해 전문화된 대답을 하도록 설계할때 활용된다. 또한 기존 LLM모델에서 Fine-tuning의 유무에 상관없이 발견되는 환각현상(Halluciation)을 방지하고싶다면 RAG가 그 해답이다.

RAG 기술

RAG의 방식은 다음과 같다.

0. 인덱싱(Indexing)
1. 검색(Retrieval)
2. 생성(Generation)

0.인덱싱

검색에 사용할 데이터는 모델이 검색할 수 있는 형태로 만들어줘야한다.
1) 데이터 인덱싱
다양한 형식(PDF, HTML, Word 등)의 정보를 일반텍스트로 변환한다. 이 과정은 데이터를 효율적으로 처리하고 검색하기 위한 기초를 마련한다.

2)청크 분할(Chunk)
데이터의 길이는 모두 다르다. 언어모델은 일반적으로 처리할 수 있는 맥락의 양에 한계가 있기 때문에, Chunk라는 단위로 분할해야 더 잘 분석할 수 있다.
Chunk는 문맥을 잘 이해하고 의미가 전달되도록 앞뒤로 겹치게 분할하는 특징이 있으며, 가능한 작게 생성해 검색과정에서 모델이 처리할 수 있는 데이터의 양을 최적화한다.

3)임베딩 및 인덱스 생성
검색을 하기 위해서, 기본적으로 데이터들을 정렬해야한다.
당연하게도 컴퓨터는 문자를 이해할 수 없기 때문에, 문자를 숫자로 변환하는 과정이 필요하다.
Embedding은 텍스트를 수치화하여 컴퓨터가 이해할 수 있는 형태인 vector형태로 변환한다.
이후 모델은 Vector를 이용해 검색 과정에서 질문 벡터와 유사성을 계산할 수 있다.
분할되었던 Chunk와 임베딩된 Vector를 키-값 의 블록 형태로 Vector DB에 저장한다.

1.검색(Retrieve)

사용자가 질문을 하면 이를 벡터로 변환한다. 이를 기존 Vector DB에 있는 벡터 간 유사성을 계산해 상위 K 문서 블록을 선택한다.

2.생성(Generation)

주어진 질문과 선택된 문서를 결합해 새로운 프롬프트를 생성하고 이 정보를 바탕으로 LLM이 답변한다.

References

0개의 댓글