포스트

[수업노트] 임베딩 & 벡터 DB — RAG를 돌리는 '의미 검색' 엔진

RAG의 '검색'은 어떻게 관련 문서를 찾을까? 임베딩과 벡터 DB의 원리를 비개발자도 이해하게 정리.

[수업노트] 임베딩 & 벡터 DB — RAG를 돌리는 '의미 검색' 엔진

RAG는 “관련 문서를 찾아 근거로 답한다”고 했죠. 그런데 “관련 있는 문서”를 어떻게 찾을까요? 그 비밀이 임베딩과 벡터 DB입니다.

🔑 문제: 키워드 검색의 한계

옛날 검색은 단어가 똑같이 겹쳐야 찾았습니다.

  • 질문: “환불 어떻게 해요?”
  • 문서: “결제 취소 절차 안내” → 단어가 안 겹쳐서 놓침

하지만 둘은 의미가 같습니다. 이걸 잡아내는 게 임베딩이에요.

🧭 임베딩(Embedding)이란

글의 의미를 숫자 좌표(벡터)로 바꾸는 것. 의미가 비슷한 글은 좌표상 가까이 놓입니다.

1
2
3
"환불"        → [0.81, 0.12, ...]  ┐  가까움 (의미 유사)
"결제 취소"   → [0.79, 0.15, ...]  ┘
"점심 메뉴"   → [0.03, 0.94, ...]     멀리 떨어짐

즉, 단어가 달라도 의미가 가까우면 가까운 숫자가 됩니다. 이게 “의미 검색(Semantic Search)”의 핵심.

🗄️ 벡터 DB(Vector Database)

이 숫자 좌표들을 저장하고, “가장 가까운 것들”을 빠르게 찾아주는 특수 데이터베이스입니다.

flowchart LR
    D[내 문서들] --> E[임베딩으로 벡터화]
    E --> V[(벡터 DB에 저장)]
    Q[질문] --> QE[질문도 벡터화]
    QE --> S[벡터 DB에서 가까운 문서 검색]
    V --> S
    S --> A[찾은 문서를 근거로 LLM이 답변]

이 전체가 곧 RAG의 ‘검색’ 부분입니다.

🏢 내 프로젝트에 대입

운영 리포트 에이전트의 VOC 분류에 적용하면:

  • 과거 문의들을 임베딩해서 벡터 DB에 저장
  • 새 문의가 오면 의미가 가장 가까운 과거 사례를 찾아
  • “이건 예전에 ‘버그’로 분류했었다”는 근거와 함께 분류

단어가 아니라 의미로 찾으니, “앱이 먹통이에요” = “실행이 안 돼요” = “튕겨요”를 같은 이슈로 묶을 수 있습니다.

⚠️ 알아둘 점

  • 임베딩 품질(어떤 모델을 쓰나)에 따라 검색 정확도가 갈림
  • 문서를 어떻게 잘게 쪼개 저장하나(chunking) 가 실전 난관
  • 벡터 DB도 저장·조회 비용이 든다 → 규모에 맞게 선택

🔗 함께 보기

요약: 임베딩 = 의미를 숫자로, 벡터 DB = 가까운 의미를 빠르게 검색. 둘이 RAG의 ‘똑똑한 검색’을 만든다.

이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.