오늘 끝나면
벡터 DB·임베딩
- ✓벡터 DB·임베딩의 핵심 문제를 한 문장으로 설명한다
- ✓오른쪽 실습에서 벡터이 어떻게 움직이는지 관찰한다
- ✓다음 강의와 이어지는 한계를 말할 수 있다
실습 미션
사내 지식을 의미로 인덱싱 이 문장이 실제로 무슨 뜻인지 실습에서 한 번 손으로 확인한다.
성공 조건
- □실습의 기본값을 먼저 관찰
- □입력값이나 모드를 한 번 이상 바꿔 결과 비교
- □왜 결과가 바뀌었는지 한 문장으로 설명
Enterprise LLM · 07
벡터 DB·
임베딩
문서를 의미 벡터로 바꿔 저장한다.
질문도 벡터로 바꿔 의미가 가까운 문서를 찾는다.
단어가 달라도 뜻이 닿으면 검색된다.
임베딩 = 의미를 좌표로 바꾸기
6강 RAG의 검색은 임베딩 위에서 돈다. 임베딩이 뭔지부터 정확히 잡고 간다.
임베딩은 단어와 문장과 문서를 고정 길이 숫자 배열로 바꾸는 일이다.
“연차 신청” → [0.12, -0.84, 0.05, …] 같은 벡터가 된다.
OpenAI text-embedding-3는 1536차원이나 3072차원, 오픈소스 BGE-M3는 1024차원처럼 모델마다 길이가 정해져 있다.
핵심은 의미가 비슷하면 벡터가 가까이 놓인다는 점이다.
“휴가 내는 법”과 “연차 신청 절차”는 단어가 달라도 좌표가 붙는다.
반대로 “연차 결산”처럼 글자는 비슷해도 뜻이 다르면 멀어진다.
벡터 DB, 가까운 점을 빨리 찾는 창고
벡터를 그냥 배열에 쌓아두면 질문 하나에 전 문서를 다 비교해야 한다. 수백만 건이면 못 버틴다.
벡터 DB는 벡터에 특화된 저장소다.
HNSW나 IVF 같은 인덱스로 비슷한 점끼리 미리 그래프를 엮어둔다.
그래서 전수 비교(brute force) 대신 근사 최근접(ANN)으로 상위 K개를 밀리초 안에 뽑는다.
선택지는 크게 두 갈래다.
전용 엔진으로는 관리형인 Pinecone, 그리고 Weaviate, Qdrant, Milvus가 있다.
기존 DB를 확장하는 쪽은 Postgres의 pgvector, OpenSearch, Elastic이다.
이미 Postgres를 쓰는 사내라면 pgvector로 시작해 운영 부담을 줄이는 게 현실적이다.
pgvector · Pinecone · Qdrant · Weaviate · Milvus
의미 검색을 손으로 굴려보기
문서들이 2D 공간의 점으로 흩어져 있다. 슬라이더로 질문 점을 옮기면 각 문서까지의 거리를 재서 가까운 순으로 정렬한다.
실제 시스템도 똑같다. 차원만 2개가 아니라 1024개나 1536개일 뿐, 거리를 재서 상위 K개를 뽑는 원리는 동일하다.
질문을 “휴가” 쪽으로 옮기면 단어가 다른 “연차 신청 문서”가 위로 올라온다. 임베딩 검색이 키워드 매칭보다 똑똑한 이유다.
실제 시스템은 차원이 1024·1536개일 뿐, 거리를 재서 상위 K개를 뽑는 원리는 똑같다.
키워드 검색 vs 의미 검색
기존 사내 검색은 대부분 키워드 매칭이다. 글자가 겹쳐야 걸린다.
“노트북 반납 어디서 함”이라 물으면 키워드 검색은 ‘노트북’과 ‘반납’ 글자를 가진 문서만 찾는다.
정작 답이 든 ‘IT 자산 회수 절차’ 문서는 단어가 안 겹쳐서 놓친다.
의미 검색은 뜻이 가까운 문서를 잡는다. ‘자산 회수’가 ‘반납’과 의미상 붙어 있으니 찾아낸다.
실무에선 둘을 섞은 하이브리드 검색이 정석이다. 키워드(BM25)로 정확한 용어를 잡고, 벡터로 의미를 보강한 뒤 re-ranking으로 최종 순위를 매긴다.
글자 안 겹치면 놓친다
뜻이 가까우면 잡는다
사내 도입에서 챙길 것
개념은 단순한데, 운영에서 갈리는 디테일이 몇 개 있다.
첫째는 청킹이다. 긴 문서는 통째로 임베딩하지 않고 문단이나 페이지 단위로 잘라 넣는다. 너무 크면 핵심이 희석되고, 너무 잘면 맥락이 끊긴다.
둘째는 모델 일관성이다. 저장할 때와 검색할 때는 반드시 같은 임베딩 모델을 써야 한다. 모델을 바꾸면 전체 문서를 다시 임베딩(re-index)해야 한다.
셋째는 보안과 비용이다. 사내 기밀이면 임베딩 API로 외부에 텍스트가 나가도 되는지 따져야 한다. 민감 데이터는 오픈소스 임베딩을 VPC 안에서 돌리거나 Bedrock·Azure 내부 엔드포인트를 쓴다.
비용은 임베딩 1회와 저장과 검색으로 나뉘는데, 큰 부담은 보통 최초 대량 인덱싱과 벡터 DB 호스팅이다.
Q. 임베딩 검색이 키워드 검색보다 나은 점은? (글자가 겹쳐야 한다 · 뜻이 가까우면 찾는다 · 항상 빠르다 · 모델이 필요 없다)
정답은 뜻이 가까우면 찾는다이다.단어가 달라도 의미가 가까운 벡터로 놓이면 검색된다. ‘반납’을 물어도 ‘자산 회수’ 문서를 잡는 식이다.
키워드 검색은 글자가 겹쳐야만 걸리고, 의미가 같아도 표현이 다르면 놓친다.
| 청킹 | 문단·페이지 단위로 자른다크면 희석, 잘면 맥락 끊김 |
| 모델 일관성 | 저장과 검색에 같은 모델바꾸면 전체 재색인 |
| 보안 | 민감 데이터는 내부 임베딩VPC · Bedrock · Azure |
| 비용 | 최초 인덱싱 + 호스팅검색 비용은 소액 |