노트

텍스트 임베딩

Text Embedding

CS#ai · 연결된 개념 5개

쉽게 말하면

텍스트 임베딩은 문장마다 '뜻의 지도' 위 좌표를 찍어 주는 거예요. 뜻이 비슷한 문장끼리 가까이 놓이니까, 겹치는 단어가 없어도 비슷한 글을 찾아낼 수 있어요.

비유가 깨지는 곳 지도는 하나지만 임베딩 좌표계는 모델마다 달라요. 문서와 질문을 다른 모델로 임베딩하면 오류 없이 엉뚱한 결과만 나오고, 유사도 점수도 고정 기준보다 순위로 써야 해요.

텍스트 임베딩(Text Embedding)은 문장이나 문단을 고정 길이의 숫자 배열(벡터)로 바꾸는 것이다. 잘 학습된 임베딩 모델은 뜻이 비슷한 글을 가까운 좌표에 놓는다. "같은 클래스 안에서 부르면 트랜잭션이 안 먹는 이유"와 자기 호출 문제 노트는 겹치는 단어가 거의 없어도 가깝게 놓인다. 그래서 키워드 검색이 놓치는 글도 찾을 수 있다. RAG (검색 증강 생성)의 검색 단계가 이 원리를 쓴다.

가까움을 재는 법

  • 보통 코사인 유사도(Cosine Similarity)로 잰다. 두 벡터가 같은 방향이면 1, 직각이면 0, 반대 방향이면 -1이다
  • 벡터 길이를 1로 맞춰 두면(L2 정규화) 코사인 유사도는 내적(같은 자리끼리 곱해 더한 값)과 같다. 그래서 검색은 곱셈과 덧셈의 반복이 된다
  • 점수는 상대적이다. 모델에 따라 관련 없는 글도 0.5~0.6이 나오므로 "0.7 이상이면 관련 있음" 같은 고정 기준보다 순위로 쓴다

지켜야 할 것

  • 문서와 질문은 같은 모델, 같은 버전으로 임베딩한다. 모델마다 좌표계가 달라서 섞으면 오류 없이 엉뚱한 결과만 나온다. 문서 벡터를 저장해 둔다면 모델 버전도 함께 고정한다
  • 여러 모델이 용도를 알려 주는 접두사(prefix)를 붙이도록 학습된다. EmbeddingGemma 2는 검색 질문에 task: search result | query: , 문서에 title: … | text: 를 붙인다(제목이 없으면 title: none). 접두사를 빼도 동작은 하지만 품질이 떨어지므로 모델 카드의 형식을 따른다
  • 임베딩 모델은 문장을 만들지 못한다. 텍스트를 넣으면 숫자가 나올 뿐이다. 답을 문장으로 쓰려면 생성 모델이 따로 필요하다

차원 줄이기 (MRL)

MRL(Matryoshka Representation Learning)로 학습한 모델은 벡터의 앞쪽 일부만 잘라 써도 품질이 크게 떨어지지 않는다. 러시아 인형처럼 큰 벡터 안에 작은 벡터가 들어 있는 셈이다. EmbeddingGemma 2는 768차원 벡터를 낸다. 모델 카드에 따르면 256차원으로 잘라도 MTEB(Massive Text Embedding Benchmark) 다국어 점수는 61.36에서 60.41로 1점 가까이 떨어진다(코드 점수는 약 2.5점). 저장 공간은 3분의 1이 된다.

잘라 낸 벡터는 길이가 1이 아니므로 다시 정규화해야 한다. 이를 빠뜨리면 에러 없이 순위만 틀어진다. 숫자 하나하나를 더 작은 타입으로 줄이는 방법은 모델 양자화에서 다룬다.

직접 구현한 사례는 브라우저 안에서 도는 RAG 구현기에 있다.

출처: Matryoshka Representation Learning Kusupati et al.(2022) · EmbeddingGemma 2 모델 카드 Google DeepMind

연결된 개념

이 노트를 가리키는 문서

뜻이 가까운 노트

  • LLM 사용 습관

    LLM이 어떻게 만들어지는지 알고, 컨텍스트를 깨끗하게 관리하고, 모델과 도구를 골라 쓰고, 답은 초안으로 보고 검증하는 습관.

  • AI·머신러닝·딥러닝·LLM의 관계

    AI ⊃ 머신러닝 ⊃ 딥러닝 ⊃ LLM. 규칙을 직접 짜는 대신 데이터에서 패턴을 배우는 방법들이 겹겹이 포함 관계를 이룬다.

  • 역색인과 검색 엔진

    역색인(inverted index)은 "각 문서에 어떤 단어가 있나" 대신 거꾸로 "이 단어가 어느 문서들에 있나"를 미리 만들어 둔 자료구조다. 책 뒤의 찾아보기와 같다. OpenSearch·Elasticsearch 같은 검색 엔진은 이 구조로 전문 검색(full-text search)을 빠르게 한다.

  • llms.txt

    사이트 루트에 두는 마크다운 파일로, LLM 에이전트에게 사이트가 무엇이고 어떤 원문을 읽으면 되는지 알려 주는 제안 규약. 공식 표준은 아니고 검색 노출과는 무관하다.

  • SEO

    SEO(Search Engine Optimization)는 검색 엔진이 페이지를 잘 찾고(크롤링, crawling), 이해해서 저장하고(색인, indexing), 알맞은 검색어로 노출하도록(순위, ranking) 사이트를 다듬는 일이다. 개발자가 맡는 부분은 대부분 앞의 두 단계, 즉 "검색 엔진이 읽을 수 있게 만드는 것"이다.

보기 옵션