직접 해보기: 지식

강의 75분
Sign in to save your progressYou can keep reading without an account, but completed lessons won't be saved.
Sign in

1024차원 공간 시각화

다차원 “근접성”이 작동하는 방식

문자열의 문제

“car”를 검색하면 “car”라는 단어가 포함된 모든 문서를 찾을 수 있습니다. “automobile”은 찾을 수 없습니다. “vehicle”도 마찬가지입니다. “내 시빅은 새 브레이크가 필요해요”도 찾을 수 없습니다.

수십 년 동안 검색은 그런 식이었습니다. 의미가 아니라 문자열 유사성을 기반으로 결과를 반환했습니다. Google은 엔지니어링을 통해 지속적으로 점진적인 개선을 이루었습니다. 동의어 사전은 “car”를 “automobile”에 매핑했고, 어간 추출(stemming) 규칙은 “running”을 “run”에 연결했으며, 클릭 패턴 마이닝은 “NYC apartments”를 검색하는 사람들이 “Manhattan rentals”와 같은 결과를 원한다는 것을 드러냈습니다. 일치하지 않는 문자열 간의 연결은 거의 수작업으로 매핑해야 했습니다.

임베딩의미장소가 될 수 있다는 아이디어로 이 모든 것에 도전했습니다. 텍스트를 좌표로 변환함으로써 유사한 개념은 서로 가까이 위치하게 됩니다. 이러한 의미 공간의 매핑은 수작업이 아니라 학습 데이터로부터 창발적으로 나타납니다.

인코딩

단순화된 예시로 시작해 보겠습니다.

지식 코퍼스에 있는 모든 문서를 두 가지 차원, 즉 공룡과 얼마나 관련이 있는지와 롤러코스터와 얼마나 관련이 있는지로 점수를 매긴다고 상상해 보세요. 비슷한 주제에 관한 문서는 서로 가까이 위치하게 될 것입니다.

세 가지 소스로 시작해 보겠습니다. 각각이 속한다고 생각하는 위치에 배치해 보세요.

이것이 롤러코스터와(과) 얼마나 관련이 있나요? →이것이 공룡와(과) 얼마나 관련이 있나요? →

소스

방금 2D 공간에 의미를 매핑했습니다. 항목들이 무엇에 관한 것인지를 기준으로 컬렉션을 플롯한 것입니다.

검색

이제 이 공간을 검색해 보겠습니다.

같은 축을 가진 동일한 그래프에 질문을 플롯해 보세요. 소스를 매핑할 때 사용한 것과 같은 논리로 질문을 매핑하면, 가장 가까운 항목이 가장 관련성이 높다는 것을 확신할 수 있습니다. 보너스 기능: 슬라이더를 사용하여 검색할 항목 수를 조절하세요.

2
이것이 롤러코스터와(과) 얼마나 관련이 있나요? →이것이 공룡와(과) 얼마나 관련이 있나요? →
질문

❓ “가장 좋은 공룡 테마 롤러코스터는 무엇인가요?”

배치하려면 그래프를 클릭하세요

이것이 바로 유사도 검색의 핵심입니다. 질문을 플롯하고 가장 가까운 k개의 항목을 찾습니다. 키워드 매칭이나 동의어 테이블 대신 다차원 근접성을 사용합니다.

두 개의 축은 시작일 뿐입니다. 하지만 두 차원은 두 가지 개념만 포착할 수 있습니다. 실제 세계에는 두 가지 이상의 주제가 있으므로 더 많은 차원이 필요합니다.

더 많은 차원

세 번째 축을 추가하면 어떨까요? 생물학을(를) 사용해 보겠습니다.

어린이 책은 높은 점수를 받습니다(종, 서식지, 식습관). 백과사전은 어느 정도 다룹니다. 벨로시코스터 페이지는 거의 언급하지 않습니다.

드래그하여 회전하세요.

세 개의 차원, 문서당 세 개의 좌표입니다. 벨로시코스터 페이지는 이제 (0.50, 0.90) 대신 (0.50, 0.90, 0.05)입니다.

이제 네 번째 축을 상상해 보세요.

저는 3차원에만 존재하기 때문에 개인적으로는 상상할 수 없습니다 😔 하지만 사실 그건 중요하지 않습니다! 새로운 차원이 추가될 때마다 각 점에 좌표가 하나씩 더해지고, 거리 공식에 제곱항이 하나씩 더해질 뿐입니다. 공간적 표현은 4차원에서 작동을 멈추지만, 수학은 계속 작동합니다.

실제 임베딩 모델은(는) 약 천 개의 차원을 사용하기 때문에 4차원을 훨씬 넘어서야 합니다. 각 문서와 각 쿼리는 그 천 차원 공간 속의 한 점이 됩니다. “가장 가까운 문서 찾기”는 2D 그래프에서와 여전히 같은 의미를 가집니다. 단지 더 긴 거리 계산일 뿐입니다.

레이블 없는 축

우리는 공룡, 롤러코스터, 생물학이라는 축을 선택했습니다. 하지만 실제 임베딩 모델에 어떤 1,024개의 주제가 포함될지는 누가 결정할까요?

사실, 아무도 결정하지 않습니다. 각 축의 의미는 창발적이며(즉, 학습 과정에서 그냥 나타나며), 일종의 블랙박스에 가깝습니다. 847번 차원을 보고 “저게 공룡 축이다”라고 말할 수는 없습니다. 차원들은 인간이 이름 붙일 수 있는 어떤 것과도 대응되지 않습니다.

이로 인해 이 공간은 추론하기가 더 어려워집니다. 두 텍스트가 왜 서로 가까이 위치하게 되었는지, 또는 가까울 것으로 예상했던 것이 왜 멀리 떨어지게 되었는지를 이해하기 위해 847번 차원을 조사할 수는 없습니다.

좌표로서의 텍스트

그렇다면 누가 좌표를 할당할까요? 바로 임베딩 모델입니다. 어떤 문자열이든 입력하면, 고정된 길이의 숫자 목록이 출력됩니다.

텍스트
“재택근무”
임베딩
[0.23, -0.87, 0.41, ...]
1,024개 값
텍스트
“직원은 관리자의 승인을 받아 주당 최대 2일까지 원격으로 근무할 수 있습니다.”
임베딩
[0.71, 0.09, -0.33, ...]
1,024개 값

출력은 항상 같은 길이입니다(저희의 경우 VoyageAI의 임베딩 모델을 사용하므로 1,024개의 값입니다). 이는 입력이 세 단어든 세 문단이든 마찬가지입니다. 하나의 텍스트 청크는 공간상의 한 점에 대응합니다. 임베딩 모델은 텍스트를 읽고 하나의 벡터을(를) 출력합니다.

수학에 밝은 분들은 “벡터”와 “좌표 집합”이 실제로는 서로 바꿔 쓸 수 있는 개념이 아니라는 것을 알아차리실 것입니다. 하지만 우리의 목적상, 벡터를 이 텍스트가 다른 모든 것에 대해 상대적으로 위치하는 주소라고 생각하는 것이 적절합니다.

유사도

2D 그래프에서 “가장 가까운”은 직선 거리를 의미했습니다. 실제로 유사도 검색은 대신 코사인 유사도을(를) 사용합니다. 코사인 유사도는 두 텍스트가 얼마나 떨어져 있는지가 아니라 벡터가 가리키는 방향을 기준으로, 두 텍스트가 얼마나 유사한지를 측정하는 또 다른 방법일 뿐입니다.

직접 시도해 보세요! 두 소스를 선택하여 코사인 유사도를 확인해 보세요.

소스 A

❓ 가장 좋은 공룡 롤러코스터는?

0.420.81-0.120.330.67-0.050.28...0.59
소스 B

🦕 어린이 공룡 책

0.850.110.63-0.220.140.71-0.08...0.33
코사인 유사도0.2894
-1 반대0 무관1 동일

벨로시코스터 페이지와 공룡 책을 비교해 보세요 — 두 벡터는 매우 다른 방향을 가리킵니다. 백과사전은 모든 것의 중간 어딘가에 위치하는데, 이는 백과사전이 다재다능하지만 특출난 전문성은 없다는 점과 잘 맞아떨어집니다.