본문 바로가기

AI 기초

임베딩이란 무엇인가? AI가 의미를 숫자로 표현하는 원리

임베딩(embedding)이란?

임베딩은 단어나 문장 같은 의미를 숫자들의 나열(벡터)로 바꾸는 방법입니다. 사람은 '강아지'와 '개'가 비슷한 뜻이라는 걸 바로 알지만, 컴퓨터는 글자 자체로는 그 의미를 계산하지 못합니다. 그래서 각 단어와 문장을 수백~수천 개의 숫자로 표현해, 의미가 비슷하면 숫자들도 서로 가깝게 놓이도록 만든 것이 임베딩입니다.
비유하자면 지도 위에 도시를 점으로 찍는 것과 비슷합니다. 가까운 도시는 지도에서도 가깝게, 먼 도시는 멀게 찍히죠. 임베딩은 '의미의 지도'를 만들어 비슷한 뜻의 말들을 가까운 좌표에 놓습니다. 다만 이 지도는 2차원이 아니라 수천 차원이라는 점이 다릅니다. 정확히 말하면 임베딩은 텍스트를 고정된 길이의 실수 벡터로 변환한 결과이고, 이 변환을 수행하는 것이 임베딩 모델입니다.


임베딩 모델·API·서비스는 어떻게 다른가

처음 접하면 헷갈리기 쉬운 용어를 먼저 구분하겠습니다.

  • 임베딩 모델: 텍스트를 벡터로 바꾸는 AI 모델 자체입니다. 예를 들어 text-embedding-3-large가 임베딩 모델의 이름입니다.
  • API: 그 모델을 인터넷 너머에서 불러 쓰는 창구입니다. 내 문장을 보내면 벡터를 돌려받습니다.
  • 서비스: 임베딩을 내부에 넣어 만든 검색·추천 같은 완성된 기능입니다.

즉 임베딩은 '개념이자 결과물'이고, 임베딩 모델은 '변환 장치', API는 '그 장치를 부르는 방법'입니다. 이 셋을 섞어 부르면 이해가 꼬이니 구분해두면 좋습니다.


숫자 몇 개로 의미를 표현할까 — 차원(dimensions)

벡터를 이루는 숫자의 개수를 차원(dimensions)이라고 부릅니다. 차원이 많을수록 더 세밀하게 의미를 담을 수 있는 여지가 생깁니다.

OpenAI의 text-embedding-3-large는 공식 차원 수가 3072 dimensions입니다. 즉 문장 하나를 3072개의 숫자로 표현합니다. 흥미로운 점은 이 모델이 차원을 줄여서 받을 수도 있다는 것입니다. API의 dimensions 파라미터에 값을 지정하면 3072차원짜리 임베딩을 더 짧게 줄일 수 있습니다. 공식 문서에는 이 dimensions 옵션이 text-embedding-3 이후 모델에서만 지원된다고 명시돼 있습니다. OpenAI 공식 블로그 (2026-08-20 확인), OpenAI API Reference (2026-08-20 확인). 이 수치는 이후 업데이트로 바뀔 수 있습니다.

차원을 줄이면 벡터를 저장하고 비교하는 부담이 줄지만, 담을 수 있는 정보의 세밀함과의 균형을 봐야 합니다. 어느 쪽이 낫다고 단정할 수는 없고, 다루는 데이터와 저장 환경에 따라 달라집니다.


쉬운 예시: 임베딩으로 비슷한 문장 찾기

가상의 예로 흐름을 그려보겠습니다. '오늘 날씨가 맑다'와 '하늘이 화창하다'라는 두 문장을 임베딩 모델에 넣으면 각각 숫자 벡터가 나옵니다. 두 벡터의 방향이 비슷하면 '의미가 가깝다'고 판단합니다. 반대로 '주식 시장이 하락했다'는 앞의 두 문장과는 벡터 방향이 멀게 나옵니다.
이렇게 벡터 사이의 거리(또는 각도)를 재는 것이 유사도 비교입니다. 사람이 뜻을 하나하나 읽지 않아도, 숫자 계산만으로 '어떤 문장이 서로 비슷한가'를 빠르게 가릴 수 있습니다. 검색창에 질문을 넣으면 그 질문을 벡터로 바꾼 뒤, 미리 벡터로 만들어 둔 문서들 중 가장 가까운 것을 찾아 보여주는 방식이 대표적입니다.


임베딩은 어디에 쓰이나 — 검색·분류·추천

임베딩이 자주 쓰이는 이유는 '의미를 숫자로 다룰 수 있게' 해주기 때문입니다.

  • 의미 기반 검색: 정확히 같은 단어가 없어도 뜻이 비슷한 문서를 찾습니다. '자동차 고장'으로 검색해도 '차량 결함' 문서를 찾아낼 수 있습니다.
  • 분류: 문장을 벡터로 바꾼 뒤 어떤 그룹의 벡터와 가까운지를 보고 카테고리를 나눕니다.
  • 추천·중복 탐지: 비슷한 글, 비슷한 상품, 중복된 문의를 벡터 거리로 묶습니다.

최근 많이 언급되는 RAG(검색 증강 생성)도 이 임베딩 검색을 바탕으로, 관련 문서를 먼저 찾아 생성 모델에 넘겨주는 구조입니다.


임베딩 API를 쓸 때 알아둘 제한

실제로 임베딩을 API로 부를 때는 공식 문서에 적힌 제한을 지켜야 합니다. 아래는 OpenAI API Reference (2026-08-20 확인) 기준입니다. 이 값들은 이후 바뀔 수 있습니다.

한 입력의 최대 토큰 수8192 tokens (모든 임베딩 모델 공통)
빈 문자열 입력허용되지 않음
한 요청의 전체 입력 토큰 합계300,000 tokens 초과 불가
dimensions 파라미터text-embedding-3 이후 모델에서만 지원

여기서 토큰(token)은 모델이 글을 처리할 때 나누는 조각 단위입니다. 영어 단어 하나가 대략 한두 토큰, 한국어는 조금 더 잘게 쪼개지는 경향이 있습니다.
초보자용 체크리스트

  • 보낼 텍스트 한 덩어리가 8192 tokens을 넘지 않는지 확인한다.
  • 빈 문자열(내용이 없는 입력)을 보내지 않는다.
  • 여러 문장을 한 번에 보낼 때 전체 토큰 합이 300,000 tokens를 넘지 않게 나눠 보낸다.
  • 차원을 줄이려면 text-embedding-3 이후 모델인지 먼저 확인하고 dimensions 값을 지정한다.

초보자가 임베딩을 시작하는 기준과 다음 단계

처음이라면 다음 순서로 접근하면 좋습니다. 먼저 '내가 풀려는 문제가 의미 비교인가'를 확인합니다. 정확한 키워드 일치가 필요하면 일반 검색으로 충분하고, 표현이 달라도 뜻이 비슷한 것을 찾아야 하면 임베딩이 어울립니다.
다음으로 다룰 데이터 양과 문장 길이를 봅니다. 긴 문서는 8192 tokens 제한에 맞춰 잘게 나눈 뒤 임베딩합니다. 차원은 기본값으로 시작해보고, 저장 공간이나 속도가 부담되면 dimensions로 줄이는 실험을 해보는 순서가 무난합니다.
다음 글에서는 이렇게 만든 벡터를 어디에 저장하고 어떻게 빠르게 비교하는지(벡터 데이터베이스), 그리고 임베딩 검색을 생성 모델과 연결하는 RAG 구조를 초보자 눈높이로 이어서 다루겠습니다. 이 글에서는 '임베딩=의미를 숫자 벡터로 바꾸는 것'이라는 핵심과 공식 제한값을 손에 쥐고 넘어가면 충분합니다.
이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.

반응형