iNote

생각을 기록하면 오래 남습니다.

AI 어시스턴트

게스트님, 안녕하세요

무엇을 도와드릴까요?

  • 대화 기록이 없어요.

AI 어시스턴트

게스트님, 안녕하세요

무엇을 도와드릴까요?

  • 대화 기록이 없어요.
iNote
iNote
홈할 일일지독서나의 글글쓰기dev-guide

iNote

생각을 기록하면 오래 남습니다.

학습AI

AI - 임베딩

서동찬 (sdc337dc@gmail.com)

생성일 : 2026.10.07 10:21 / 수정일 : 2026.10.07 12:23

  • 임베딩은 텍스트를 의미의 좌표(벡터)로 변환해, 비슷한 의미를 가진 문장은 수치적으로도 비슷하게 만든다.
  • 키워드 검색이 단어 일치에 의존하는 반면, 임베딩 검색은 의미 유사도 기반으로 단어가 겹치지 않아도 관련 문서를 찾아낼 수 있다.
  • LLM(예: GPT, Claude)이 방대한 텍스트를 학습해 단어/문장 관계를 벡터에 압축하고, 두 벡터의 유사도는 코사인 유사도로 계산된다.
  • 벡터는 벡터 DB(예: pgvector, Pinecone, Weaviate, Chroma)에 저장되며, Supabase는 pgvector를 지원해 프로젝트에 활용된다.

KURE 임베딩 모델을 활용한 작업 준비전 학습


1. 임베딩이란?

  • 텍스트를 "의미의 좌표"로 바꾸는 것을 의미한다.

  • 컴퓨터는 글자 자체의 의미를 모른다. "점심"과 "식사"가 비슷한 말이라는 것도 모르고, 문자열로는 완전히 다른 값일 뿐이다.

  • 그래서 글자를 숫자 배열(벡터)로 바꿔서, 의미가 비슷하면 숫자도 비슷하게 만든다.

"커피 한 잔"   → [0.12, -0.80, 0.33, ...]   (1024개 숫자)
"아메리카노"   → [0.10, -0.77, 0.30, ...]   ← 비슷함
"주식 매수"    → [-0.65, 0.21, 0.58, ...]   ← 많이 다름

2. 키워드 검색과의 차이

질문

키워드 검색

임베딩 검색

"월급 모으는 법"

"월급", "모으는"이 글자로 들어간 문서만 찾음

"적금", "저축 습관"처럼 뜻이 가까운 문서도 찾음

즉, 단어가 겹치지 않아도 찾아낼 수 있다.

3. 왜 필요한가?

  • 기존 검색은 단어 일치 방식임

"강아지"  → [0.82, 0.15, -0.43, 0.91, ...]  (1536개 숫자)
"멍멍이"  → [0.80, 0.14, -0.41, 0.89, ...]  (비슷!)
"자동차"  → [-0.23, 0.67, 0.91, -0.12, ...]  (다름)
  • 임베딩은 의미 유사도 기반.

"강아지 사료" 검색 시
→ "멍멍이 밥"도 나옴 (벡터가 비슷하니까)
→ "반려견 영양식"도 나옴
→ "고양이 사료"는 덜 유사하게 나옴

4. 어떻게 만들어지는가

  • LLM(GPT, Claude 등)이 방대한 텍스트를 학습하면서 단어/문장의 관계를 파악한다. 그 관계 정보가 벡터에 압축된다.

학습 데이터에서 "강아지"와 "멍멍이"가 
항상 비슷한 문맥에 등장 
→ 둘의 벡터가 가깝게 학습됨

5. 벡터 유사도 계산

  • 두 벡터가 얼마나 비슷한지는 코사인 유사도로 계산

// 파이썬
import numpy as np

def cosine_similarity(a, b):
    return np.dot(a, b) / (np.linalg.norm(a) * np.linalg.norm(b))

# 결과: -1 (완전 반대) ~ 0 (무관) ~ 1 (완전 동일)
similarity("강아지", "멍멍이")  # → 0.95 (매우 유사)
similarity("강아지", "자동차")  # → 0.12 (거의 무관)

6. 어디에 저장하는가 -> 벡터 DB (pgvector)

  • 일반 DB는 벡터 유사도 검색에 최적화되어 있지 않아서, 전용 벡터 데이터베이스를 사용한다.

벡터 DB

특징

pgvector

PostgreSQL 확장 (Supabase 지원)

Pinecone

클라우드 전용, 쉬움

Weaviate

오픈소스

Chroma

로컬, 개발용

  • Supabasae가 pgvector를 지원하기 때문에 현재 프로젝트(개인사이드 플젝)에서는 사용이 가능


핵심 정리

텍스트 → 임베딩 모델 → 숫자 벡터 → 벡터 DB 저장
                                          ↓
검색 시: 질문 벡터와 가장 유사한 벡터 찾기 → 관련 텍스트 반환

목차

  • KURE 임베딩 모델을 활용한 작업 준비전 학습
  • 1. 임베딩이란?
  • 2. 키워드 검색과의 차이
  • 3. 왜 필요한가?
  • 4. 어떻게 만들어지는가
  • 5. 벡터 유사도 계산
  • 6. 어디에 저장하는가 -> 벡터 DB (pgvector)
  • 핵심 정리