텍스트 임베딩이란
텍스트 임베딩이란
문장을 숫자 벡터로 바꾸면 컴퓨터가 의미를 다루기 쉬워져요. watsonx.ai에서 제공하는 임베딩 모델이 하는 일이 바로 그거예요. 이 페이지에서는 임베딩이 뭔지, 왜 유용한지를 개념적으로 정리해요.
임베딩이란
텍스트 임베딩은 문장이나 구절을 실수 값 벡터로 표현한 숫자 표현이에요. 문장을 숫자 벡터로 바꾸면, 문장에 대한 연산이 컴퓨터가 빠르고 정확하게 처리할 수 있는 수식처럼 바뀌어요.
임베딩 모델이 문장의 벡터 표현을 만들 때는 문장의 **의미(semantic meaning)**를 담도록 값을 부여해요. 또 그 값에 따라 벡터를 다차원 공간 위에 배치하죠. 차원 수는 모델마다 달라서 정확한 벡터 값도 달라지지만, 의미가 비슷한 문장일수록 서로 가까이 놓이도록 배치한다는 공통점이 있어요.
대부분의 임베딩 모델은 수백에서 수천 차원의 벡터를 만들어 내서 그림으로 시각화하기 어려워요. 만약 3차원 벡터라면, 키워드나 주제를 공유한 문장끼리 벡터 값이 비슷해서 3차원 공간에서 서로 가까이 위치하게 돼요. 예를 들어 다음 세 문장을 보면,
- The Degras reproduction is hanging in the den
- Jan bought a painting of dogs playing cards
- I took my dogs for a walk
첫 두 문장은 "미술작품"이라는 공통 주제로, 마지막 두 문장은 "dogs"라는 공통 키워드로 서로 가까이 놓여요. 공통 단어나 의미가 없는 첫 문장과 세 번째 문장은 더 멀리 배치되죠.
벡터 DB와 시맨틱 검색
생성된 벡터는 **벡터 데이터베이스(vector database)**에 저장할 수 있어요. 데이터베이스 안의 모든 문장을 같은 임베딩 모델로 변환하면, 벡터 저장소는 문장들 사이에 이미 존재하는 의미적 군집과 관계를 활용해서 관련성이 높은 검색 결과를 빠르게 돌려줘요.
전통적인 인덱스가 텍스트를 저장하고 키워드 검색에 의존하는 것과 달리, 벡터 저장소는 의미상 유사한 정보를 찾는 시맨틱 검색을 지원해요. 키워드 검색이 키워드의 존재 여부만 따지는 반면, 시맨틱 검색은 키워드가 사용된 맥락까지 고려해서 보통 더 나은 검색 결과를 만들어 주죠.