우리에게 벡터 검색이 필요한 이유

Posted on September 14, 2023
우리에게 벡터 검색이 필요한 이유

우리가 사용하는 모바일 애플리케이션이나 웹서비스에는 검색기능이 있습니다. 대부분은 데이터베이스에서 제공하는 기본적인 텍스트 검색이나 Elasticsearch 같은 검색 엔진에서 제공하는 전문 검색(Full-Text Search)을 사용하여 개발 합니다. Full-Text Search는 주로 텍스트 데이터 검색에 사용되는 전통적인 방법 중 하나로 문서, 웹 페이지, 데이터베이스 등에서 특정 키워드, 단어, 구문 등을 찾아내는 데 중점을 두고 있습니다. 주로 키워드 또는 짧은 문장을 입력하여 텍스트 데이터를 검색 하고, 키워드와 일치하는 문서를 찾는 과정을 거치는데, 문맥이나 의미적 유사성을 고려하지는 않습니다.

그런데 이런 특징들 때문데 Full-Text Search의 한계가 발생합니다. 무엇인가를 찾고 싶은데 정확한 명칭을 몰라 헤메었던 경험이 한 번 쯤은 있었을 겁니다. 찾고자 하는 대상이 어떤 특징을 가지는지, 무엇을 하는지 등 설명 할 수는 있지만 대상의 명칭을 몰라 검색바를 계속 두드리죠. Full Text Search가 동의어처리, 유사단어검색, 오탈자 수정 기능을 제공하지만 한계가 있습니다.

예를 들어 아래 다섯 문장을 살펴 보겠습니다.

  • 백년에 한 번 발생 할 까 말까
  • 0.001%의 가능성
  • 성공 확률 제로
  • 죽었다 깨어나도 안돼
  • 연속으로 벼락 맞을

다섯 문장 모두 "가능성이 거의 없다"를 나타내고 있습니다. 그런데 모든 문장에서 공통으로 포함하는 단어는 한 개도 없습니다. 유사 단어, 동의어 처리를 반영한 Full-Text Search도 위의 모든 문장을 한 번에 검색하는 것이 거의 불가능 합니다. 즉, Full-Text Search는 텍스트의 단어나 구문에만 의존하며 의미론적 유사성을 고려할 수 없습니다.

또한 검색 대상이 텍스트에만 국한되는 한계점도 있습니다. 예를들어 텍스트로 "강아지"를 입력했을 때 아무런 설명 없는 이미지 파일에서 "강아지"를 찾을 수는 없습니다. 우리가 네이버나 구글에서 단어를 입력해서 찾는 이미지는 해당 단어가 언급된 블로그나 뉴스 등의 문서에 포함된 이미지 입니다.

머신러닝 기술이 발전하며 이미지, 영상, 음성, 문서(단어, 문단)들의 다양한 데이터를 벡터 임베딩이라는 동일한 형태로 변환할 수 있게 되었습니다. 그리고 이러한 벡터 사이의 거리를 기준으로 원본 데이터간 유사성도 측정이 가능해지며 벡터 검색이라는 새로운 검색 기술로 이어지게 되었습니다.

벡터 임베딩 - 모든 데이터를 표현하다

벡터 검색은 Full-Text Search의 한계를 극복하고 의미를 기준으로 검색 할 수 있도록 지원합니다. 위의 “가능성이 거의 없다”라는 의미를 나타내는 문장을 벡터로 표현하면 서로 가까운 곳에 위치합니다. 2차원 벡터로 표현되는 것을 가정하면 아래와 같이 나타나는 것이죠.

벡터검색을 사용하면 아래와 같은 여러가지 장점이 있습니다.

  • 의미론적 유사성 고려: Full-Text Search는 검색어의 일치 여부에 의존하며 문맥을 고려하지 않습니다. 하지만 벡터 검색은 데이터를 벡터 공간으로 표현하여 의미론적 유사성을 고려합니다. 이로써 검색어가 포함된 문서 뿐만 아니라, 검색어가 포함되지 않았더라도 의미적으로 유사한 문서를 찾을 수 있습니다.
  • 간편한 동의어 처리: 예를 들어 Full-Text Search에서 "자동차"라는 검색어로 "차량”이 포함된 문서를 검색하기 위해서는 별도의 동의어 처리가 필요합니다. 반면 벡터 검색은 단어의 의미를 벡터로 표현하므로 동의어 처리가 자연스럽게 가능합니다.
  • 다양한 데이터 검색: Full-Text Search는 텍스트 데이터에만 적용되며 이미지, 음성, 비디오와 같은 비정형 데이터에는 적용하기 어렵습니다. 벡터 검색은 다양한 데이터 유형을 벡터 임베딩으로 변환하여 처리할 수 있으므로, 서로 다른 데이터의 검색과 분석에 효과적입니다.
  • 복잡한 데이터처리: 현대 데이터는 매우 복잡하며 다차원적인 특성을 가지고 있습니다. Full-Text Search는 이러한 다차원 데이터를 다루기 어렵지만, 벡터 검색은 다차원 데이터를 벡터로 표현하여 복잡한 데이터 구조를 쉽게 처리할 수 있습니다.
  • 검색 품질 개선에 따른 사용자 경험 개선: 벡터 검색은 의미론적 유사성을 고려하므로 고객이 정확한 검색어를 입력하지 않더라도 의도에 적합한 정보를 빠르게 찾을 수 있습니다.

요약하면, 벡터 검색은 Full-Text Search의 한계를 극복하고 데이터의 의미와 유사성을 고려하여 더 나은 검색 결과를 제공하는 강력한 도구입니다. 다양한 데이터 유형과 복잡한 데이터 구조를 다루는 데 효과적이며, 고객이 정보를 더 정확하고 신속하게 찾을 수 있도록 도와주는, 현대 데이터 분석과 검색 시스템에서 필수적인 기술 입니다.

Copyright © 2024 Aeca, Inc.

Made with ☕️ and 😽 in San Francisco, CA.