Embedding(문자를 숫자로...)

Mujung Kim·2025년 12월 17일

LLM + RAG 시스템

목록 보기
4/11

1. 왜 임베딩을 하는가?

임베딩은 "사람의 언어(문자)" 를 "기계가 거리 계산을 할 수 있는 의미공간(벡터)"으로 변환하는 과정

Chunking이 정보를 다루기 좋은 단위로 쪼개는 과정이라면,
Embedding은 그 단위들 사이의 의미적 관계를 수학적으로 정의하는 과정


2. Chunking 다음에 Embedding을 하는 이유

①  원문 그대로는 “의미 비교”가 불가능함

  • 문자열은 기계 입장에서 동일/비동일 비교만 가능
  • 예시: "반값습니다." .vs. "만나서 반가워요."
     - 문자차원 → 다름
     - 의미차원 → 거의 동일

➡ 의미 기반 검색·비교를 하려면 벡터 공간으로 변환 필요

②  Chunk 단위가 곧 “검색의 최소 의미 단위”가 됨

  • 임베딩은 하나의 의미 덩어리에 대해 수행할 때 가장 효과정
  • 너무 크면, 여러 주제가 섞여 의미가 흐려짐.
  • 너무 작으면, 의미 정보가 부족

➡ Chunk는 임베딩 품질을 결정하는 입력 단위

③  Query와 Document를 “같은 공간”에 올리기 위함

Query 임베딩 벡터와 Document 임베딩 벡터는 동일한 의미 공간에 존재해야 한다Query 임베딩 벡터와 Document 임베딩 벡터는 동일한 의미 공간에 존재해야 한다

  • Query: 사용자의 질문
  • Document: 저장된 지식

이 둘을 같은 임베딩 모델로 변환해야
→ 벡터 거리(코사인 유사도 등) 계산 가능


3. 임베딩을 하면 무엇이 가능해지는가?

  • 키워드 일치 ❌
  • 의미 유사도 ✅
Query: "임베딩은 왜 필요한가?"
Document chunk:
- "문장을 벡터로 변환하여 의미 비교를 가능하게 한다"

➡ 단어가 정확히 일치하지 않아도 높은 유사도

② Top-K 검색 구조 가능

임베딩 후에는 다음이 가능해짐:

query_embedding
    ↓
vector similarity 계산
    ↓
가장 가까운 chunk Top-K 선택

➡ LLM에게 “관련 있는 정보만” 전달 가능

③ LLM hallucination 감소

  • LLM은 기억이 아니라 추론 머신
  • 근거 문서 없이 질문하면: 그럴듯한 거짓말 생성 가능
  • 임베딩 기반 검색은:
    • “모른다” → “관련 문서를 찾아온다”
    • 생성 이전에 근거를 강제

4. HuggingFace / OpenAI Embedding을 사용하는 이유?

공통목적

자연어 의미를 고정 차원의 벡터로 투영

HuggingFace Embeddins

  • 장점
    • 오프라인 가능
    • 도메인 특화 모델 사용 가능
    • 비용 제어 가능
  • 단점
    • 모델 선택 성능 튜닝 부담
    • 다국어/최신 지식은 모델에 따라 편차

OpenAI Embeddings

  • 장점
    • 의미 정렬 품질이 매우 안정적
    • Query ↔ Document 매칭 성능 우수
    • 최신 언어 표현 반영
  • 단점
    • 외부 API 의존
    • 비용 발생

➡ “임베딩 단계”는 구현체(OpenAI / HF)가 바뀌어도 철학은 동일

5. Chunk → Embedding → Retrieval 구조의 본질

[Raw Document][Chunking]        ← 정보 구조화
      ↓
[Embedding]       ← 의미 수치화
      ↓
[Vector Store]    ← 의미 공간 저장
      ↓
[Query Embedding][Similarity Search][Relevant Context][LLM Answer]

6. 정리

본 시스템에서 임베딩 단계는 Chunk 단위로 분할된 문서와 사용자 질의를 동일한 의미 공간의 벡터로 변환하기 위한 과정이다. 이를 통해 키워드 일치 기반 검색의 한계를 극복하고, 의미 유사도 기반의 문서 검색 및 근거 중심 응답 생성을 가능하게 한다. HuggingFaceEmbeddings와 OpenAIEmbeddings는 이러한 목적을 달성하기 위한 임베딩 제공자 구현체로 사용된다.

profile
천천히 고민하면서 걷는 개발자

0개의 댓글