우리에게 벡터 검색이 필요한 이유
우리가 사용하는 모바일 애플리케이션이나 웹서비스에는 검색기능이 있습니다. 대부분은 데이터베이스에서 제공하는 기본적인 텍스트 검색이나 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의 한계를 극복하고 데이터의 의미와 유사성을 고려하여 더 나은 검색 결과를 제공하는 강력한 도구입니다. 다양한 데이터 유형과 복잡한 데이터 구조를 다루는 데 효과적이며, 고객이 정보를 더 정확하고 신속하게 찾을 수 있도록 도와주는, 현대 데이터 분석과 검색 시스템에서 필수적인 기술 입니다.
함께 보면 좋을 글
벡터 임베딩 - 모든 데이터를 표현하다
벡터 임베딩은 다양한 형태의 데이터(문서, 이미지, 음성, 영상 등)를 숫자 배열로 변환하여 유사성을 측정하는 개념입니다. 예를 들어, 색깔은 RGB 형식으로 나타내는 3차원 벡터 데이터로 표현될 수 있습니다. 이러한 벡터 임베딩을 통해 데이터 간의 거리를 계산하여 유사성을 판단할 수 있습니다. 이는 자연어 처리, 추천 알고리즘 등에서 중요한 역할을 합니다. Transformer 모델을 통해 다양한 데이터를 벡터로 변환할 수 있으며, 이를 활용해 서로 다른 형태의 데이터 간의 유사성도 측정할 수 있습니다. 예를 들어, "고양이"라는 텍스트와 고양이 사진 사이의 유사성을 벡터 공간에서 측정하는 것이 가능합니다.
By Tim Yang|2023-09-13
Aeca가 검색 개발을 쉽게 하는 방법
웹과 모바일 애플리케이션에서 검색은 긍정적인 사용자 경험을 형성하는 핵심기능 입니다. 특히 커머스 서비스에서 검색은 사용자 경험 향상을 넘어, 회사 매출에 직접적인 영향을 미치는 요소 입니다. 상품정보와 콘텐츠의 양이 폭발적으로 증가하는 상황에서 고객이 입력한 검색어에에 부합되는 정보를 적시에 제공하는 검색품질은 애플리케이션과 웹사이트의 성공과 실패를 가를 중요한 요인이 되었습니다. 일반적으로 커머스 서비스에서 상품을 검색하는 고객은 지불의사가 높은 강력한 잠재고객으로 판단합니다. 사용자들이 검색하는 행위와 검색결과에 반응하는 모든 행동에는 고객 자신들의 구매의도, 니즈, 지불의사가 모두 나타나 있다고 보고 있습니다. 통계상으로도 검색을 수행한 사용자의 구매전환율이 그렇지 않은 고객에 비해 2배 이상이며, Total MAU에서 검색을 사용하는 유저의 비율은 20% 이하지만 검색을 한 번 이상 수행한 사용자들에게서 발생하는 매출이 절반이상인 것으로 알려져 있습니다. 또한 첫 검색에 실패한 사용자의 이탈율이 높게 나타나며, 재검색 고객의 구매전환율은 매우 낮게 나타납니다. 즉, 검색은 고객의 지갑을 열기 위한 강력한 수단일 뿐만 아니라 서비스의 지속가능성에도 큰 영향을 미치는 요소 입니다. 그렇다면 검색은 구체적으로 어떻게 고객리텐션과 매출증대, 서비스 개선에 기여할까요?
By Tim Yang|2023-09-12