[아티클 번역] RAG는 왜 실패하는가 (by 마이클 우드)

[아티클 번역] RAG는 왜 실패하는가 (by 마이클 우드)

avatar
speculate
2024.12.11조회수 24회

본문: Michael Wood, 'The Insanity of Relying on Vector Embeddings: Why RAG Fails', Medium, 2024. 11. 22.

재인용: 브런치스토리 블로그 'delight', '벡터 임베딩 기반 RAG는 왜 실패하는가', 2024. 12. 8.


RAG(검색 증강 생성)는 쿼리(사용자 질문)과 가장 관련이 높은 정보를 첨부해서 활용하는 것을 목적으로 하는 기술이다. 반면 가장 관련성이 높은 정보의 탐색 과정에서 사용하는 벡터 유사성 검색(Vector similarity search)은 본질적으로, 질문과 관련이 높은 정보를 정확하게 측정하지 못한다. 이것이 RAG가 실제 환경에서 효과적으로 작동하지 않는 주요한 원인이다.

'유사성 측정 한계의 문제'는 쉽게 증명된다.

아래 3개 단어의 경우를 생각해 보자.

  • 왕(King)

  • 여왕(Queen)

  • 통치자(Ruler)

'왕'과 '통치자'는 같은 사람을 가리킬 수 있기에 높은 유사성 비율을 가진다. (동의어로 간주한다.) 그러나 '왕'과 '여왕'이 다뤄진다면, 이 둘은 분명히 다른 사람들일 것이다. 유사성 비율 관점에서 '왕'과 '통치자' 사이는 높은 점수가 나와야 할 것이고, '왕'과 '여왕' 사이에는 0점이 나와야 할 것이다. 다르게 말해, 쿼리가 '왕'에 관해 물을 때는 '여왕'에 관한 정보는 첨부할 필요가 없고, '통치자'에 관한 정보를 참고하도록 해야 할 것이다. 그러나 '벡터 임베딩' 방식을 활용한다면 여왕이 통치자보다는 '왕'과 더 관련이 있다고 간주하고 다루게 된다. 다음은 'OpenAI ADA-002' 임베딩에서 보여주는 '왕, 여왕, 통치자' 간 벡터 유사성 점수다.

'왕'에 대해서,

  • 단어 '여왕'와 의미상으로 92% 유사하다고 판단.

  • 단어 '통치자'와 의미상으로 83% 유사하다고 판단.

이 경우 '왕'에 관한 정보를 요청하는 상황에서, '여왕'에 관한 정보가 '통치자'에 관한 정보보다 우선으로 다뤄지게 된다. '여왕'에 관한 정보가 전혀 필요 없을지라도 말이다.

벡터 임베딩은 이런 질문에 적합하지 않다!

'벡터 임베딩 문제'는 사물을 지칭하는 단어에서도 발생한다. 고양이 특징에 대해서 질문하는 상황이라고 해보자. 이 경우, '개'와 관련된 정보와는 유사성 점수가 0이 나와야 적합하고, '야옹이'에 대한 정보가 높은 점수를 가져야 할 것이다. (* 의역) 그러나 벡터 임베딩은 이것 역시도 잘못 이해한다.

'고양이'에 대해서,

  • 단어 '개'와 의미상으로 86% 유사하다고 판단.

  • 단어 '야옹이'와 의미상으로 85% 유사하다고 판단.

이것은 '고양이'에 대한 탐색 과정에서 '개'에 관한 정보가 '야옹이'에 대한 정보보다 먼저 다뤄진다는 것을 의미한다. '개'에 관한 정보가 관련성이 전혀 없는 상황에서도 말이다.


'벡터 임베딩 문제'는 사람, 사물뿐만이 아니라 시간에 관련된 주제에서도 비슷한 문제를 일으킨다. '1900년대'에 관한 질문을 하는 상황을 생각해 보자. 유사성의 비율 관점에서, '1700년대'에 관한 정보와는 관련이 없어야 하고, '20세기'에 관한 정보는 말 그대로 100%로 나타나야 한다. ('1900년대'와 '20세기'는 같은 의미이기 때문이다) 그러나 다시 한번, 벡터 임베딩은 유사성 수준을 잘못 파악한다.

'1900년대'에 대해서,

  • 단어 '1700년대'와 의미상으로 91% 유사하다고 판단.

  • 단어 '20세기'와 의미상으로 89% 유사하다고 판단.

현재의 벡터 임베딩 알고리즘은 '1900년대'의 주제에 대해서, 단어 '1700년대'의 의미가 '20세기'에 비해 훨씬 더 유사하다 간주하고 있다는 것이다. (문자 그대로 하나도 관련성이 없는 대상과 완전 동일한 개념 사이에서 말이다) 정확히 같은 의미를 가진 단어를 절대적 동의어(absolute synonyms) 또는 완벽한 동의어(perfect synonyms)라고 한다. 그러나 절대적 동의어의 경우에도 벡터 임베딩은 전혀 동의어가 아닌 것들에 우선순위를 부여한다. 이 문제는 또 다른 예시에서도 더 자세히 확인할 수 있다.


'빅 애플(The Big Apple)'은 '뉴욕시'를 지칭하는 말이다. 만약에, 뉴저지에서 거주하는 수잔이라는 사람이 고향 식당, 박물관 등에 방문하며 관련된 게시물을 블로그에 많이 작성한 상황을 생각해 보자. 수잔은 게시물 중 하나에 자신이 ‘빅 애플’에서 결혼했다고 적어뒀다고 한다. 이때, 수잔의 웹사이트 방문자가 (* 수잔 블로그 게시글에 대한 RAG) 챗봇에 "수잔이 뉴욕에 방문했던 적이 있는가?"라고 물어봤다면? 챗봇은 불행하게도, 수잔이 올린 결혼 관련 게시물보다 '뉴저지'와 관련된 게시물을 훨씬 더 많이 보여주려고 하게 된다. 왜 그럴까? 벡터 임베딩의 의미 탐색 알고리즘은 '뉴저지'를 '빅애플'보다 '뉴욕'에 더 관련이 있다고 파악하는 구조로 되어있기 때문이다.

'뉴욕'에 대해서,

  • 단어 '뉴저지'와 의미상으로 90% 유사하다고 판단.

  • 단어 'Big Apple'와 의미상으로 89% 유사하다고 판단.

'뉴저지'와 관련된 게시물 수가 많다면, '빅 애플'과 관련된 게시물이 (LLM의 입력 제한에 따라) 포함되지 않을 소지가 다분하다. '벡터 임베딩'은 장소, 사람, 사물, 시간에 대한 정보와 마찬가지로 위치와 관련된 정보를 탐색하는 데에서도 실패할 수 있다.

벡터 임베딩은 '설명(instructions)'에서도 실패할 수 있다.

'케이크를 굽는 방법'을 질문하는 상황이라고 생각해 보자. '파이 굽기'에 관한 정보가 '초콜릿케이크 만들기'에 관한 정보보다 유사성이 높다고 평가된다. 전자는 전혀 관련이 없는 ...

회원가입만 해도
이 글을 무료로 읽을 수 있어요.

이미 계정이 있으신가요?로그인하기
댓글 0
avatar
speculate
구독자 11명구독중 40명
인터페이스 디자인을 공부했습니다. 휴먼 디지털 트윈, 잡 서치 에이전트 개발에 관심이 있습니다. 최근에는 브랜드 철학, 정보학, 권력학 관련 책들을 살펴보고 있습니다. 2026년 재취업을 계획하고 있습니다.