한 줄 정의

숫자를 한 줄로 늘어놓은 것. 1차원


1. 비유로 이해하기

숫자를 담는 그릇을 아파트로 생각하면, 벡터는 한 층이다. 복도 하나에 방이 여러 개 있다.

숫자를 담는 그릇 네 가지 중 벡터는 한 층에 방이 여러 개 있는 1차원이다
그림 1. 한 층. 방을 찾으려면 몇 번째인지만 대면 된다

방을 찾아가려면 “몇 번째” 하나만 대면 된다. 필요한 정보가 하나라서 1차원이다.

[5, 3, 8, 1]
 ↑
 0번째 방

2. 왜 필요한가

숫자를 한 줄로 묶으면 비교할 수 있다

친구들의 성격을 숫자로 적어 본다고 하자.

            활발함  차분함  운동  독서
민수         [ 9,     2,    8,    1 ]
영희         [ 8,     3,    7,    2 ]
철수         [ 2,     9,    1,    9 ]

민수와 영희의 숫자가 비슷하다. 두 사람은 실제로 성격이 비슷하다. 철수는 숫자가 완전히 다르다.

여기서 벌어진 일이 중요하다. 성격을 안 보고 숫자만 비교해도 누가 누구와 비슷한지 알 수 있게 됐다. 숫자 네 개를 한 줄로 묶어 놨기 때문이다.

컴퓨터는 “사과”라는 글자를 봐도 그게 “배”와 비슷하고 “자동차”와 다르다는 걸 모른다. 벡터로 바꿔 놓으면 계산으로 비교할 수 있게 된다.

사과   → [0.8, 0.2, 0.9, ...]  ┐
배     → [0.7, 0.3, 0.9, ...]  ┘ 가깝다
자동차 → [0.1, 0.9, 0.1, ...]    멀다

이게 의미 검색의 바닥이고, 그걸로 문서를 찾아 답하는 구조가 RAG다.

AI에서 만나는 벡터들

무엇 길이
임베딩 숫자 768개 · 1536개 · 3072개
로짓 사전에 있는 모든 단어의 점수. 10만 개쯤
소프트맥스 결과 로짓과 같은 길이. 다만 값이 확률이고 다 더하면 1
토큰 ID 줄 문장을 토큰으로 쪼갠 번호들

길이가 곧 정보의 세밀함이다

임베딩의 숫자가 768개인지 3072개인지는 뜻을 얼마나 잘게 나눠 담느냐의 차이다. 칸이 많을수록 미묘한 차이를 담을 수 있지만, 저장 공간도 계산량도 늘어난다.

그리고 각 숫자가 무슨 뜻인지는 사람이 정한 게 아니다. AI가 학습으로 알아낸 것이라 아무도 정확히 모른다. 다만 뜻이 담겨 있다는 증거는 있다.

왕 − 남자 + 여자 ≈ 여왕
서울 − 한국 + 일본 ≈ 도쿄

3. 어디서 만났나

이 용어는 수업에서 정식으로 다루기 전에 따로 정리한 것이다.

다만 6회차에 벡터가 왜 필요한지를 보여 주는 자리가 있었다. 데이터베이스에서 WHERE user = '민수' 같은 검색은 글자가 정확히 같아야 찾아진다. “고양이”로 검색하면 “냥이”도 “반려묘”도 안 나온다.

벡터로 바꿔 두면 뜻으로 찾을 수 있다. 6회차에서 배운 검색의 한계가, 곧 벡터가 필요한 이유였다.

6회차 — 데이터베이스, 서비스의 기억을 어디에 어떤 모양으로 둘까


4. 헷갈리는 개념

이 용어 비슷하지만 다른 것 차이
벡터 스칼라 스칼라는 숫자 하나. 벡터는 그걸 한 줄로 여러 개
벡터 행렬 벡터를 여러 줄 쌓으면 행렬. 벡터는 가로 한 줄, 행렬은 표
벡터 배열 · 리스트 담는 모양은 비슷하지만, 벡터는 전부 같은 종류의 숫자이고 길이가 고정이며 통째로 더하고 곱하는 계산이 정의돼 있다
딥러닝의 벡터 수학·물리의 벡터 물리에서는 크기와 방향이 있는 양(바람의 세기와 방향). 딥러닝에서는 대개 그냥 숫자 배열로 읽으면 된다

5. 많이들 오해하는 지점

ㄱ. “벡터니까 화살표와 방향을 떠올려야 한다”

학교에서 배운 벡터(크기 + 방향, 화살표) 때문에 생기는 부담이다. 딥러닝에서 벡터라고 하면 대개 “숫자를 한 줄로 늘어놓은 것”으로 읽으면 된다. 화살표를 그릴 필요도, 방향을 상상할 필요도 없다.

다만 완전히 버리지는 말자. “두 임베딩이 얼마나 가까운가”를 잴 때는 방향 개념이 돌아온다. 두 숫자 뭉치가 같은 방향을 가리키는지 재는 방법을 코사인 유사도라고 하고, 결과는 -1(정반대)에서 1(똑같음) 사이로 나온다. 의미 검색은 이걸로 굴러간다.

ㄴ. “벡터는 그냥 파이썬 리스트다”

비슷해 보이지만 약속이 더 많다. 리스트에는 숫자와 글자를 섞어 넣을 수 있고 길이도 마음대로 바뀐다. 벡터는 전부 같은 종류의 숫자이고 길이가 정해져 있으며, 통째로 더하고 곱하는 연산이 정의돼 있다. 이 약속 덕분에 빠르게 계산할 수 있다.

ㄷ. “벡터 DB에서 말하는 벡터는 다른 뜻인가”

같은 것이다. 임베딩 벡터를 모아 두고 비슷한 걸 빨리 찾아 주는 창고라서 벡터 데이터베이스다. Pinecone, Chroma, Qdrant 같은 것들이고, 확장 기능을 붙이면 SQLite로도 할 수 있다.


6. 관련 용어

스칼라 · 행렬 · 텐서 · 임베딩 · 소프트맥스