Untitled

1. Embedding

Embedding의 목표: 비슷한 의미를 가진 단어나 문장은 가까운 벡터 공간에 위치하도록 하는 것임. 이렇게 하면, 단어나 문장 간의 유사도를 계산할 수 있고, 이를 바탕으로 다양한 NLP 작업을 수행할 수 있음.

Embeeding의 기본 아이디어는 ‘비슷한 문맥에서 사용되는 단어들은 비슷한 의미를 가진다'는 분포 가설임. 따라서 임베딩 모델은 단어나 문장이 사용되는 문맥을 분석하여 이를 벡터로 변환함.

텍스트를 기준으로 Embedding을 구분하면, 크게 Word Embedding과 Sentence Embedding으로 구분할 수 있음

2. Embedding을 해야 할 때

2.1 여러 문서들을 그 의미를 기반으로 탐색하거나 비교해야 하는 경우

첫 번째 케이스는, 여러 문서들이 존재할 때 이들 중 하나를 탐색하거나, 이들을 서로 비교해야 하는 경우임. 대표적으로 “Semantic Search”(의미 기반 검색), “Recommendation”(추천), “Clustering”(군집화) 등의 기능이 이에 해당함.

Untitled

Semantic Search는 사용자가 제시한 텍스트 형태의 query(검색어)와 의미적으로 연관성이 높은 문서들을 찾아서 제시해 주는 기능입니다. Embeddings를 활용한 Semantic Search 프로세스를 간략하게 정리하면 아래와 같습니다.

  1. 문서 모음집에 포함되어 있는 각각의 문서에 대한 embedding을 계산하여 별도의 저장소(e.g. local drive, vector database 등)에 저장해 놓음.
  2. Query 텍스트에 대한 embedding을 계산함.
  3. Query embedding과 각 문서 embedding 간의 cosine similarity(코사인 유사도)를 계산하고, 그 값을 기준으로 전체 문서들을 내림차순 정렬함.
  4. 정렬 결과 중 상위 k개에 해당하는 문서들의 텍스트를 불러온 뒤 이를 반환함.

Untitled

Recommendation은 사용자가 현재 보고 있는 문서와 의미적으로 연관성이 높은 다른 문서들을 찾아서 제시해 주는 기능임. Recommendation 프로세스는 Semantic Search 프로세스와 거의 동일하나, query embedding이 현재 보고 있는 문서의 embedding으로 그대로 대체된 것이라고 생각하면 됨.