Post

01 VectorDB 개념

01 VectorDB 개념

1. Note

  • 대략적으로 이해는 되는데 뭔지는 모르겠네…
  • 실제로 써보면서 이해해야할듯!!

2. 기본 개념

1. 벡터(Vector)

  • 숫자들의 나열로 어떤 데이터를 표현하는 방식
  • 단순한 리스트처럼 보이지만, 실제로는 n차원 공간에서의 좌표를 의미
  • 텍스트, 이미지 같은 다양한 데이터를 수치화해서 컴퓨터가 처리할 수 있게 만듬
  • 벡터 간의 거리나 방향을 통해 데이터 간 관계를 계산할 수 있음
  • “데이터를 계산 가능한 형태로 만든 결과”

2. 임베딩(Embedding)

  • 텍스트나 이미지 같은 비정형 데이터를 벡터로 변환하는 과정
  • 단순 변환이 아니라 “의미를 유지”하는 것이 핵심
  • 비슷한 의미를 가진 데이터는 벡터 공간에서도 가까운 위치에 배치
  • 이 변환은 보통 AI 모델(임베딩 모델)이 수행
  • 임베딩은 “의미를 담은 벡터로 바꾸는 작업”

3. 벡터와 임베딩

  • 사람은 의미 기반으로 이해하는 과정을 가지지만, 컴퓨터는 ‘의미’를 이해하지 못함.
  • 따라서 임베딩 작업을 거쳐서 비슷한 거리로 확인함
    1
    2
    3
    4
    5
    6
    7
    
     ○ 강아지/고양이/자동차
       "강아지" → [0.21, -0.55, 0.91]
       "고양이" → [0.19, -0.60, 0.88]
       "자동차" → [3.2, 10.1, -4.5]
     ○ 비교
       distance(강아지, 고양이) → 작음 → 유사함
       distance(강아지, 자동차) → 큼 → 다름
    
  • 전체 흐름 ```
    1. 문장 입력
    2. 임베딩 모델이 벡터로 변환
    3. DB에 벡터 저장
    4. 검색할 때도 벡터로 변환
    5. 가장 가까운 벡터 찾기 ```

3. 고차원 벡터와 수학적 거리

1. 다차원 특징 (Dimensions)

  • 우리가 사는 세상은 3차원(가로, 세로, 높이)이지만, AI가 사용하는 임베딩 공간은 보통 768차원~1536차원에 달함.
  • 차원이 높다는 것은 하나의 단어를 설명하는 ‘기준(특징)’이 그만큼 많다는 뜻
    • 1차원: [크기] → (개미는 작고, 코끼리는 크다)
    • 2차원: [크기, 공격성] → (개미는 작고 순하지만, 벌은 작고 공격적이다)
    • 1536차원: [크기, 공격성, 서식지, 포유류여부, 색상, 수명, 식성, …]
  • 수많은 기준(차원)을 통해 단어를 정의하면,
    • “강아지”와 “개”가 단순히 글자가 달라도 수천 개의 특징 값이 거의 일치함
    • 때문에 AI는 두 단어가 매우 유사하다고 판단할 수 있음
  • 차원을 많이 다룰수록
    • 무거워지기는 하지만, 정확한 비교가 가능하기도 함.
    • 너무 많을 경우 불필요한 차원이 생길 수도 있음을 경계해야함

2. 거리 계산법 (Similarity Metrics)

  • 거리 계산 방식
방식설명특징
코사인 유사도두 벡터 사이의 각도를 측정가장 대중적. 데이터의 크기보다 방향성(의미)이 중요할 때 사용
유클리드 거리두 점 사이의 직선 거리를 측정값이 작을수록 유사함. 물리적인 값의 차이가 중요할 때 사용
내적 (Dot Product)두 벡터의 방향과 크기를 모두 고려검색 속도가 빠르며, 추천 시스템에서 자주 활용
  • 임베딩 공간에서 두 데이터가 얼마나 유사한지는 두 벡터 사이의 거리를 계산하여 유사도를 측정함.
    • A와 B의 거리: “먹는 것”, “과일”, “단맛” 등의 수많은 차원에서 값이 비슷합니다. 따라서 거리가 매우 가까움
    • A와 C의 거리: “전자제품”, “금속성”, “통신” 등의 차원에서 값이 완전히 다릅니다. 따라서 거리가 매우 멈

4. 일반 DB vs VectorDB

1. 비교

구분일반 관계형 DB (RDB)벡터 데이터베이스 (Vector DB)
핵심 기술SQL (B-Tree 인덱스)임베딩 & ANN (근사 최근접 이웃)
검색 방식키워드 일치 (Exact Match)의미적 유사도 (Semantic Search)
데이터 형태텍스트, 숫자, 날짜 (정형)고차원 수치 배열 (비정형 벡터)
검색 결과단어가 포함되어야만 나옴단어가 달라도 의미가 같으면 나옴

1. 키워드 기반 검색 방식

  • 일반적인 데이터베이스는 사용자가 입력한 문자열을 기준으로 데이터를 조회
  • 대표적으로 SQL의 LIKE, FULLTEXT 검색 등이 있으며, 입력한 키워드와 동일하거나 포함된 데이터를 찾는 방식
  • 이 구조는 단순하고 빠르며 구현이 쉽다는 장점

2. 의미를 이해하지 못하는 구조

  • 이 방식은 “문자열 비교”에만 의존하기 때문에 의미를 전혀 고려하지 못함.
  • 예를 들어 “강아지”를 검색하면 “반려견”이나 “애완동물”과 같이 의미적으로 유사한 데이터는 검색되지 않음
  • 단어가 다르면 전혀 다른 데이터로 인식하기 때문

3. 표현 차이에 따른 검색 품질 저하

  • 사용자의 표현 방식이 조금만 달라져도 검색 결과가 크게 달라지는 문제가 있음
  • 같은 의미라도 표현이 다르면 검색이 실패하는 경우가 많음
    1
    2
    
    “맛집 추천” → 검색됨
    “맛있는 식당 알려줘” → 검색 안됨
    

1. 벡터 기반 검색 방식

  • 벡터 DB는 데이터를 임베딩 과정을 통해 벡터(숫자 배열)로 변환한 뒤 저장
  • 검색 시에도 동일하게 입력값을 벡터로 변환하고, 기존 데이터와의 유사도를 계산하여 결과를 찾음
  • 문자열이 아니라 “벡터 간 거리”를 기준으로 검색

2. 의미 기반 검색 가능

  • 벡터 검색의 핵심은 의미를 반영할 수 있다는 점
  • “강아지”를 검색하면 “반려견”,”고양이”, “동물” 처럼 의미적으로 유사한 데이터도 함께 검색
  • 임베딩 과정에서 의미가 벡터 공간에 반영되기 때문

3. 유사도 계산 방식

  • 벡터 간의 유사도는 주로 코사인 유사도(Cosine Similarity)를 사용하여 계산
  • 이 방식은 벡터의 크기가 아니라 방향(패턴)을 기준으로 유사성을 판단
  • 표현의 강도나 길이에 영향을 받지 않고 의미 자체의 유사도를 비교할 수 있음

4. 검색 경험의 변화

  • 벡터 검색을 사용하면 사용자의 자연어 표현을 그대로 이해하는 것처럼 동작
  • 키워드를 정확히 맞추지 않아도 의도를 기반으로 결과를 찾을 수 있기 때문에 검색 품질이 크게 향상
  • 특히 챗봇, 추천 시스템, RAG 구조에서 필수적으로 사용됨

6. 벡터디비 종류(2026.03.30)

1. 전용 벡터 DB (Vector-Native)

DB특징장점단점
Pinecone완전 관리형 SaaS인프라 관리 필요 없음, 빠른 시작비용 발생, 커스터마이징 제한
Weaviate오픈소스 + GraphQL 지원메타데이터 필터링 강력, AI 기능 내장설정 다소 복잡
Milvus고성능 벡터 엔진대규모 데이터 처리에 강함운영 난이도 있음
QdrantRust 기반 벡터 DB빠르고 가벼움, 필터 기능 우수생태계 상대적으로 작음

2. 기존 DB + 벡터 확장

DB특징장점단점
PostgreSQL + pgvectorRDB에 벡터 기능 추가기존 시스템과 통합 쉬움성능은 전용 DB보다 제한적
Elasticsearch검색 엔진 + 벡터 검색텍스트 + 벡터 검색 동시 가능설정 복잡, 리소스 사용 큼
Redis (Vector)인메모리 기반매우 빠름, 실시간 처리에 적합메모리 비용 부담

7. 주요 임베딩 모델 차원

제공 주체모델차원 (Dimension)특징
OpenAItext-embedding-3-small1,536가볍고 빠름, 비용 효율
OpenAItext-embedding-3-large3,072높은 정확도, 검색/추천에 강함
OpenAItext-embedding-ada-002 (legacy)1,536과거 표준 모델
Googleembedding-gecko-001768Vertex AI 기반
Googletextembedding-gecko@latest768최신 gecko 계열
Sentence Transformersall-MiniLM-L6-v2384매우 가벼움, 로컬용
Sentence Transformersall-mpnet-base-v2768성능 vs 속도 균형
Microsofte5-small / base / large384 / 768 / 1024검색 특화 (E5 계열)
BAAIbge-small / base / large384 / 768 / 1024최신 성능 좋은 오픈모델
HKUNLPInstructor-xl768instruction 기반 임베딩
This post is licensed under CC BY 4.0 by the author.