Rag

<!– — title: “[AI] 벡터 임베딩과 RAG” date: 2023-05-12 00:00:00 -0000 categories: [Spring, 스프링] permalink: /rag classes: wide —

RAG

검색 증강 생성(retrieval augmented generation, RAG)이란 LLM이 질의에 대한 답변을 생성할 때 답변에 참고할 수 있는 데이터를 먼저 검색하고 해당 데이터를 기반으로 답변을 생성하는 기술이다. 질문에 대한 답변을 생성하기 전에 답변에 참고할 수 있는 데이터를 검색하고, 답변을 기반으로 응답한다. 이때, 벡터 유사도 검색(vector similarity search)을 사용하여 전용 벡터 데이터베이스에서 데이터를 검색한다.

벡터 유사도 검색(또는 벡터 검색)이란 벡터로 표현되는 데이터를 검색하는 데이터 검색 방법이다. 벡터란 단어, 문장, 문서, 이미지, 영상 데이터의 숫자 표현이다. 머신러닝 모델과 인공지능 응용 애플리케이션에서 주로 사용되는 개념이다. 벡터는 데이터 간의 의미적(semantic) 관계와 유사도(similarity)를 확인할 수 있게 하므로 단순 키워드 기반 검색 보다 질의에 대한 의미 및 문맥에 더 적합한 검색을 가능하게 한다.

벡터 데이터베이스는 벡터 데이터의 저장소이다. 데이터를 벡터 데이터베이스에 저장하기 위해서는 데이터를 먼저 벡터로 변환해야 한다. 데이터를 간단한 형태로 변환하는 것을 임베딩(embedding)이라고 하며 데이터를 벡터 형태로 변환하는 것을 벡터화(vectorization) 또는 벡터 임베딩(vector embedding)이라고 한다.

데이터를 벡터 임베딩을 수행하는 방법을 벡터 임베딩 모델(vector embedding model)이라고 하며, 예로 Word2Vec, GloVE, FastText이나 BERT 또는 RoBERTa 같은 사전 학습된 트랜스포머(transformer) 기반 모델이 있다.

벡터 데이터베이스는 벡터 데이터를 단순히 저장하는 역할 뿐만 아니라 서로 다른 벡터 데이터 간 유사도를 계산하여 벡터 데이터를 검색하는 역할도 수행한다. 이를 유사도 검색(similarity search) 또는 시맨틱 검색(sementic search)이라고 한다.

벡터 검색은 질의 데이터 벡터와의 유사도가 가장 높은 벡터 데이터를 검색한다.

RAG는 벡터 검색 방법을 사용하는 검색 기술이다.

RAG가 해결하는 LLM의 문제점은 다음과 같다.

  • LLM은 학습하지 않은(최신화되지 않은) 데이터에 대해 응답할 수 없다. RAG 사용 시 LLM은 검색된 유사한 데이터를 컨텍스트로 사용하여 더 최신화된 데이터를 기반으로 응답을 생성한다.
  • LLM이 정확하지 않은 데이터를 응답으로 생성하는 환각(hallucination) 현상이 발생할 수 있다. RAG 사용 시 LLM은 검색된 유사한 데이터를 컨텍스트로 사용하여 더 정확하고 관련성 있는 응답을 생성한다. 이를 통해 환각 현상을 줄인다.


RAG의 동작 방식은 다움과 같다.

  1. 데이터를 벡터화한 후 벡터 데이터베이스에 저장
  2. 새로운 데이터를 벡터 데이터베이스에서 검색하여 가장 유사한 데이터를 검색한다.
  3. LLM에 질문 시 유사한 데이터를 함께 전달한다. 즉, 프롬프트는 질문 + 유사한 데이터이다.


문서 유사도 계산 알고리즘 비교

문서 유사도 계산 알고리즘에는 여러 가지가 있다. 단순 키워드 기반 계산 부터 딥러닝을 사용한 계산까지 다양하다.

엘라스틱서치

  • 키워드 기반 검색, TF-IDF(단어 빈도-역문서 빈도)와 BM25 알고리즘 + 벡터 기반 검색
  • 키워드의 일치 여부에 따라 결정

AI

  • 딥러닝 모델(예: BERT, GPT 등)을 사용하여 문서의 의미를 벡터로 변환
  • 문서의 의미를 벡터로 변환한 후, 코사인 유사도 사용
  • 단어와 문장 간의 복잡한 관계를 이해, 문맥을 고려한 유사도 계산


Langchain

랭체인(LangChain)이란 LLM 프로바이더를 호출하는 도구이다. 랭체인은 LLM을 애플리케이션에 손쉽게 통합하게 도와준다.


참고

  • <>

Updated:

Comments