소소한 컴퓨터 이야기

Problem of Naive RAG

by Cori

해당 포스트는 Medium 'Florian June'이 작성한 Advanced RAG 포스트 시리즈 그 첫 번째 내용을 정리한다. Navie RAG의 구조 및 RAG 프로세스 각 단계에서의 문제점에 대해 다루고 있다.


Naive RAG

Naive RAG는 대부분 다음 단계들을 포함한다. 

 

# 01. Indexing
PDF, HTML과 같은 다양한 파일 형식을 표준화된 일반 텍스트로 변환한다. 언어 모델의 문맥 제약을 수용하기 위해, 이러한 텍스트는 청킹(chunking)이라고 불리는 과정으로 더 작고 관리 가능한 조각들로 나누어진다. 나누어진 조각들은 임베딩 모델을 사용하여 벡터 표현으로 변환되며, 텍스트 조각들과 그들의 벡터 임베딩을 키-값 쌍으로 저장하는 인덱스를 생성하여 효율적이고 확장 가능한 검색 기능을 가능하게 한다.

 

# 02. Retrieval

사용자의 쿼리는 외부 지식 소스로부터 관련 문맥을 검색하는 데 사용된다. 이를 수행하기 위해, 사용자의 쿼리는 인코딩 모델에 의해 처리되어 의미적으로 관련된 임베딩을 생성한다. 이후, 벡터 데이터베이스에서 유사도 검색을 수행하여 가장 가까운 k개의 데이터 객체를 검색한다. 

 

# 03. Generation

사용자 쿼리와 검색된 추가 문맥은 프롬프트 템플릿에 채워진다. 마지막으로, 검색 단계에서 증강된 프롬프트가 LLM에 입력된다.

https://miro.medium.com/v2/resize:fit:1400/format:webp/1*X41aBnBo4CMO6aAGqK7Obg.png

 

Problems of Naive RAG

# 01. Indexing

PDF와 같은 비구조화된 파일 내 이미지와 표의 유용한 정보를 효과적으로 처리하지 못한다. 또한 청킹 과정에서 다양한 파일 형식의 특성을 고려하기 보다는 일률적인 전략을 사용하며, 이로 인해 각 청크가 불완전한 의미를 포함하게 된다. 이외에도, 임베딩 모델의 의미 표현 능력이 약하다는 등의 한계가 존재한다.

 

# 02. Retrieval

검색된 문맥의 재현율 (recall)이 부족하고, 정확성이 낮다. 낮은 재현율은 관련 구절을 검색하는 것을 방해하여 LLM이 포괄적인 답변을 생성하는 능력을 저해한다. 쿼리가 부정확하거나 임베딩 모델의 의미 표현 능력이 약하여 유용한 정보를 검색하지 못할 수 있다.

 

# 03. Generation

검색된 데이터를 현재의 생성 작업과 효과적으로 통합하지 못할 수 있으며, 이는 일관성 없는 출력을 초래할 수 있다. 생성 과정에서 향상된 정보에 지나치게 의존하는 것은 높은 위험을 수반하는데, 이는 검색된 내용을 단순히 반복하고 유용한 정보를 제공하지 않는 출력을 초래할 수 있다.

https://miro.medium.com/v2/resize:fit:1400/format:webp/1*MofEwsFkb-4iYKpiX9LCHg.png

이러한 문제의 원인은 다면적일 수 있는데, 예를 들어 사용자에게 제공된 최종 응답에 관련 없는 내용이 포함되어 있다고 해보자. 이는 단순히 LLM 문제 때문만은 아닐 수 있고, 근본 원인은 PDF에서 문서를 부정확하게 추출했거나 임베딩 모델이 의미를 정확하게 포착하지 못한 것 등일 수 있다.


Ref. 

https://medium.com/@florian_algo/advanced-rag-part-01-problems-of-naive-rag-7e5f8ebb68d5

블로그의 정보

코딩하는 오리

Cori

활동하기