https://youtu.be/vwp-HvPtcJM
1. 벡터 데이터베이스 개요
텍스트, 이미지, 오디오 등 다양한 형태의 데이터를 고차원 벡터 공간에 임베딩하여 저장하고, 이를 기반으로 유사성 검색을 효율적으로 수행할 수 있도록 설계된 특수한 유형의 데이터베이스
| 핵심개념 |
벡터 임베딩 (Vector Embedding) |
- 텍스트나 이미지와 같은 데이터를 의미론적 또는 시각적 특징을 담고 있는 실수 값의 배열(벡터)로 변환하는 과정 |
|
유사성 검색 (Similarity Search) |
- 주어진 벡터와 의미적으로 유사하거나 시각적으로 유사한 벡터들을 데이터베이스에서 찾는 과정임. 이는 벡터 간의 거리(예: 코사인 유사도, 유클리드 거리)를 측정하여 이루어짐 |
| 등장배경 |
추천시스템 요구 증가 |
- 전통적인 키워드 기반 검색 방식의 한계를 극복하고, 의미 기반의 검색 및 추천 시스템 구축에 대한 요구가 증가하면서 주목받기 시작함 |
|
딥러닝 기술 발전 |
- 특히 딥러닝 기술의 발전으로 고품질의 벡터 임베딩 생성이 가능해짐에 따라 그 중요성이 더욱 커지고 있음 |
<aside>
예시
아버지 --> [0.15, -0.23, 0.87, 0.05, -0.51, ..., 0.33]
- 각각의 숫자: 벡터를 구성하는 실수 값. 각 차원은 텍스트의 특정 의미적 특징 표현
예를 들어, 특정 차원은 "가족 관계", 다른 차원은 "남성성", 또 다른 차원은 "보호"와 관련된 의미를 담고 있을 수 있음
- 높은 차원: 실제 임베딩 벡터는 수많은 차원을 가짐 이는 단어의 다양한 의미를 포착하기 위함
다른 단어와의 관계
"아버지"와 의미가 비슷한 단어("아빠", "가장")는 벡터 공간에서 "아버지" 벡터와 가까운 거리에 위치할 가능성이 높습니다. 반대로, 의미가 먼 단어("사과", "자동차")는 더 멀리 떨어져 있을 것입니다.
예를 들어:
아빠 --> [0.18, -0.20, 0.82, 0.08, -0.48, ..., 0.30] (아버지와 유사한 벡터) 사과 --> [-0.75, 0.31, 0.12, -0.63, 0.91, ..., -0.22] (아버지와 거리가 먼 벡터)
</aside>
2. 구조 및 동작 방식

벡터 데이터베이스의 구조와 동작 방식은 다음과 같은 주요 요소들을 중심으로 이루어짐.
- 데이터 저장:
- 각 데이터 객체(텍스트, 이미지 등)는 해당하는 벡터 임베딩과 함께 저장됨.
- 추가적인 메타데이터(예: 원본 텍스트, 이미지 URL 등)를 함께 저장하여 검색 결과에 대한 부가 정보를 제공할 수 있음.
- 인덱싱 (Indexing): 대규모 벡터 데이터에 대한 효율적인 유사성 검색을 위해 다양한 인덱싱 기법이 사용됨. 주요 인덱싱 방식은 다음과 같음.
- Approximate Nearest Neighbors (ANN) 알고리즘: 정확한 최근접 이웃을 찾는 대신, 효율성을 높이기 위해 근사적인 최근접 이웃을 빠르게 검색하는 알고리즘임 (예: HNSW, Faiss, Annoy).
- 트리 기반 인덱싱: 벡터 공간을 분할하는 트리 구조를 활용하여 검색 범위를 좁혀나가는 방식임.
- 그래프 기반 인덱싱: 벡터들을 노드로, 유사한 벡터들을 간선으로 연결한 그래프 구조를 이용하여 탐색하는 방식임.
- 검색 과정:
- 유사성 검색: 생성된 쿼리 벡터와 데이터베이스에 저장된 벡터들 간의 유사도를 계산함. 이때, 미리 구축된 인덱스를 활용하여 검색 속도를 높임.
- 결과 반환: 유사도가 높은 순서대로 상위 N개의 벡터와 해당 벡터에 매핑된 원래 데이터를 반환함.
- 주요 기능:
- 벡터 삽입 (Upsert): 새로운 벡터와 메타데이터를 데이터베이스에 추가하거나 기존 벡터를 업데이트하는 기능임.
- 벡터 검색 (Query): 주어진 쿼리 벡터와 유사한 벡터들을 검색하는 기능임.
- 필터링 (Filtering): 특정 메타데이터 조건을 만족하는 벡터들 중에서 유사성 검색을 수행하는 기능임.
- 삭제 (Delete): 특정 벡터 또는 조건을 만족하는 벡터들을 데이터베이스에서 제거하는 기능임.
3. 활용 사례
벡터 데이터베이스는 다양한 분야에서 혁신적인 활용 사례를 만들어내고 있음.
- 의미 기반 검색 (Semantic Search): 사용자의 검색 의도를 정확히 파악하여 키워드가 아닌 의미적으로 관련된 문서를 검색함 (예: "슬픈 영화 추천" 검색 시, 키워드 '슬픈'과 '영화'가 없더라도 감동적인 영화를 추천).
- 추천 시스템 (Recommendation Systems): 사용자의 과거 행동, 선호도 등을 벡터로 표현하여 유사한 사용자나 아이템을 기반으로 맞춤형 콘텐츠를 추천함 (예: 영화, 음악, 상품 추천).
- 질의응답 시스템 (Question Answering Systems): 질문과 답변을 벡터로 임베딩하여 질문과 가장 유사한 답변을 찾아 제공함.
- 이미지/비디오 검색 (Image/Video Search): 이미지나 비디오의 시각적 특징을 벡터로 추출하여 유사한 이미지나 비디오를 검색함 (예: 특정 스타일의 옷을 찾거나, 특정 장면이 포함된 비디오 검색).
- 표절 검사 (Plagiarism Detection): 문서의 내용을 벡터로 임베딩하여 유사한 내용을 담고 있는 문서를 찾아 표절 여부를 판단함.