AWS 기술 블로그
Cohere Rerank를 사용한 RAG 성능 향상
검색 증강 생성(RAG)은 기업이 실시간 데이터를 통합하고 독점 데이터를 사용하여 더욱 풍부하고 상호작용적인 대화를 가능하게 하는 Generative AI(생성형 AI) 애플리케이션을 개발할 수 있도록 돕는 강력한 기술입니다.
RAG를 활용하면 이러한 AI 애플리케이션이 외부의 신뢰할 수 있는 도메인별 데이터를 효과적으로 사용하여 사용자 쿼리에 대한 언어 모델의 문맥을 강화할 수 있습니다. 하지만, 응답의 신뢰성과 정확도는 적절한 도메인 데이터를 찾는 것에 크게 의존합니다. 따라서, RAG의 검색 프로세스를 최적화하는 것이 생성된 응답의 신뢰성을 높이는 핵심 요소로 작용합니다.
RAG 시스템은 검색 및 정보 탐색 시스템 구축에 중요한 도구이지만, 종종 검색 단계가 최적화되지 않아 기대에 미치지 못하는 경우가 발생할 수 있습니다. 이를 보완하기 위해 순위를 재 조정하는 Rerank 단계를 추가해 검색 품질을 개선할 수 있습니다.
RAG는 정보 검색 기술과 자연어 처리(NLP)를 결합해 텍스트 생성 또는 언어 모델링 작업의 성능을 한층 향상시키는 접근 방식입니다. 이 방법은 대규모 텍스트 데이터 코퍼스에서 관련 정보를 검색하여 이를 생성 프로세스에 반영하는 것으로, 외부 지식이나 문맥을 모델에 통합하여 응답의 정확성, 다양성, 그리고 관련성을 개선하는 것이 핵심입니다.
RAG 오케스트레이션의 워크플로우
RAG 오케스트레이션은 일반적으로 두 단계로 구성됩니다.
- 검색 단계 – RAG는 생성된 검색 쿼리를 활용하여 외부 데이터 소스에서 관련된 문서들을 가져옵니다. 검색 쿼리가 주어지면, RAG 기반 애플리케이션은 데이터 소스에서 관련 문서나 구절을 탐색하여 필요한 정보를 수집합니다.
- 근거 기반 생성 단계 – 검색된 문서나 구절을 바탕으로 생성 모델은 신뢰할 수 있는 자료를 활용하여 답변을 생성하며, 필요한 경우 인라인 인용을 포함하여 답변의 신뢰성을 높입니다. 이를 통해 보다 높은 신뢰성 있는 응답을 제공할 수 있습니다.
다음 다이어그램은 RAG 워크플로우를 보여줍니다.
RAG 오케스트레이션에서의 문서 검색
RAG 오케스트레이션에서 문서를 검색하는 방법 중 하나는 Dense Retrieval(밀도 검색)입니다. 밀도 검색은 사용자 쿼리의 의미와 의도를 의미론적으로 파악하여 관련 문서를 찾는 정보 검색 기법입니다. 이 방식은 사용자 쿼리와 가장 가까운 문서를 임베딩 공간에서 찾아내며, 아래 스크린샷은 이러한 밀도 검색의 과정을 보여줍니다.
고밀도 검색의 목표는 사용자 쿼리와 문서(또는 구절)를 모두 고밀도 벡터 공간에 매핑하는 것입니다. 이 공간에서는 코사인 유사도나 유클리드 거리와 같은 표준 거리 메트릭을 사용해 쿼리와 문서 벡터 간의 유사도를 계산할 수 있습니다. 그 후, 계산된 거리 메트릭을 기준으로 사용자 쿼리의 의미에 가장 근접하게 일치하는 문서들이 사용자에게 표시됩니다.
검색 쿼리에 대한 최종 응답의 품질은 검색된 문서의 관련성에 큰 영향을 받습니다. 고밀도 검색 모델은 매우 효율적이며 대규모 데이터 세트에 적합하게 확장할 수 있지만, 이 방법의 단순성 때문에 더 복잡한 데이터와 질문을 다룰 때는 한계를 보이기도 합니다. 문서 벡터는 일반적으로 786-1536 차원 벡터로, 텍스트의 의미를 압축하여 표현하지만, 정보가 단일 벡터로 압축되는 과정에서 일부 내용이 손실될 수 있습니다. 따라서 벡터 검색을 통해 문서를 검색할 때, 가장 관련성이 높은 정보가 항상 검색 결과의 최상위에 위치하는 것은 아닙니다.
Cohere Rerank로 검색 정확도 높이기
정확도 문제를 해결하기 위해 검색 엔지니어들은 검색 품질을 높이기 위한 방법으로 2단계 검색 방식을 채택해 왔습니다. 이 2단계 시스템에서는 1단계 모델(임베딩 모델 또는 리트리버)이 대규모 데이터 세트에서 후보 문서들을 먼저 검색한 후, 2단계 모델(리랭커)이 이를 재정렬하여 가장 관련성이 높은 문서들이 상위에 표시되도록 합니다.
예를 들어, Cohere Rerank와 같은 재랭크 모델은 쿼리와 문서 쌍이 주어졌을 때 각 쌍에 대한 유사성 점수를 출력합니다. 이 점수는 검색 쿼리와의 관련성을 바탕으로 문서 순위를 재정렬하는 데 사용됩니다. 특히 Cohere Rerank 모델은 딥 러닝을 통해 쿼리와 문서 간의 정밀한 일치를 평가하여, 기존 임베딩 모델보다 검색 정확도를 크게 향상시키는 점에서 두드러집니다. Cohere Rerank는 쿼리와 문서를 동시에 처리하여 관련성 점수를 산출함으로써 더 정교한 문서 선택이 가능합니다.
다음 예를 보면, 애플리케이션에 “Aidan N.Gomez가 공저한 트랜스포머 논문이 언제 발표되었나요?”라는 쿼리가 입력되었습니다. k = 6인 top-k 결과를 반환한 이미지에서 가장 정확한 결과가 목록의 하단에 포함되어 있었습니다. 만약 k = 3으로 제한되었다면, 가장 관련성이 높은 문서가 검색 결과에서 제외되었을 것입니다.
Cohere Rerank는 의미론적 콘텐츠, 사용자 의도, 문맥과의 관련성 등 추가 기준에 따라 검색된 문서의 관련성을 재평가하고 순서를 변경하여 유사성 점수를 산출하는 것을 목표로 합니다. 그런 다음 이 점수를 사용하여 쿼리의 관련성에 따라 문서를 재정렬합니다. 다음 이미지는 Rerank를 사용한 재정렬 결과를 보여줍니다.
1단계 검색 후 Cohere Rerank를 적용하면, RAG 오케스트레이션은 두 가지 접근 방식의 장점을 모두 활용할 수 있습니다. 1단계 검색은 벡터 공간 내에서 유사한 항목을 식별하여 관련 항목을 효율적으로 캡처하는 데 도움을 주며, Rerank는 문맥상 가장 관련성이 높은 결과가 상단에 노출되도록 하여 검색 결과의 최적화를 돕습니다. 이러한 방식으로 검색 효율성이 크게 향상되며, 이를 보여주는 다이어그램은 아래와 같습니다.