전통적인 데이터베이스의 한계
- 기존 데이터베이스는 행(Row)과 열(Column) 로 구성된 정형 데이터 저장에 최적화
- 하지만 오늘날 다루는 데이터는?
-> 텍스트, 이미지, 오디오, 영상 등 비정형 데이터 - 이러한 데이터는 기존 방식으로는 검색과 분석이 어렵고 정확성이 떨어짐
벡터 데이터베이스란?
데이터를 숫자 벡터(Vector)로 변환해 의미를 보존한 채 저장하고, AI가 의미 기반으로 검색할 수 있도록 하는 데이터베이스
벡터란?
벡터는 데이터의 의미를 수치로 표현한 것입니다. 예를 들어, 특정 단어, 이미지, 문서 등의 개념을 숫자 리스트로 변환합니다.
→ 이렇게 변환된 벡터는 단순한 값이 아니라, 해당 데이터의 의미나 문맥까지 담고 있어
유사한 의미를 가진 정보 검색(semantic search)이나 유사도 비교가 가능합니다.
- 단어, 이미지, 문장 등 하나의 정보를 수치 리스트로 표현한 것
- 예: "king" → [4, 5], "banana" → [2.5, -3]
- 이 벡터는 단순 숫자가 아니라 의미(semantics)를 담고 있음
실제 사례
“웃고 있는 사람 사진 보여줘”라고 요청
- 전통 DB는 ‘happy’라는 태그가 있어야 검색 가능
- 벡터 DB는 ‘행복’이라는 개념 자체를 이해해 유사한 이미지를 찾아줌
핵심
- 벡터 DB는 단순히 문자를 비교하는 것이 아니라, 문장 속 의미와 개념을 이해합니다.
- 사용자가 명확한 구조 없이 자유롭게 질문해도, AI는 이를 해석하고 의미 기반의 빠른 정보 검색을 수행할 수 있습니다.
이처럼 벡터 DB는 기존 검색 방식보다 훨씬 똑똑하고 직관적인 AI 기반 검색을 가능하게 하며,
특히 비정형 데이터가 많은 업무에서 탁월한 성능을 발휘합니다.
Vector database 작동방식
원본 데이터 → 벡터로 변환 (Embedding)
- 텍스트, 이미지, 오디오, 문서, 이메일 등 다양한 형태의 원본 데이터를 벡터로 변환합니다.
- 이 벡터는 단순한 숫자 배열로, 예를 들어 'king'은 [4, 5], 'woman'은 [5, 3], 'banana'는 [2.5, -3]처럼 표현됩니다.
- 이 숫자들이 우리에게 어떤 의미인지는 알기 어렵지만, AI는 이 벡터들의 상호 간 의미적 관계를 파악합니다.
임베딩 모델 사용
- OpenAI Embedding API, Hugging Face 모델, 또는 직접 학습한 커스텀 모델을 통해 데이터를 벡터로 임베딩합니다.
벡터 DB에 저장
- 임베딩된 벡터들은 Pinecone, Chroma, FAISS 같은 전용 벡터 데이터베이스에 저장됩니다.
- 이러한 데이터베이스는 전통적인 행/열 방식이 아닌, 의미 기반 검색이 가능하도록 최적화된 방식으로 데이터를 저장합니다.
유사도 기반 검색
- 사용자가 질문(쿼리)을 입력하면, 그 질문도 벡터로 변환되어 기존에 저장된 벡터들과 **의미 기반 비교(cosine similarity 등)**를 통해 가장 유사한 결과를 찾아냅니다.
- 예시로 'king', 'man', 'woman'은 하나의 의미 그룹, 'apple', 'banana', 'orange'는 또 다른 그룹,
- 'football', 'golf', 'tennis'는 스포츠라는 그룹으로 벡터 공간 상에서 자연스럽게 분리됩니다.
Vector database 에서 사용되는 검색 방식
유클리드 거리 (Euclidean Distance, L2 Norm)
- 두 벡터 간의 직선 거리를 측정합니다.
- 공간 상에서 두 점 사이의 최단 경로를 찾는 것과 같다고 생각하면 됩니다.
- 사용 사례: 이미지 검색, 추천 시스템
- 예를 들어, 이미지를 업로드했을 때 유사한 이미지를 찾아주는 기능은 이 유클리드 거리를 활용합니다. ChatGPT나 Bing에서도 유사 이미지 검색 시 이 방식이 사용됩니다.
코사인 유사도 (Cosine Similarity)
- 거리 대신, 두 벡터 사이의 각도를 측정합니다.
- 벡터의 크기는 다르더라도 같은 방향을 가리킨다면 유사한 것으로 간주합니다.
- 사용 사례: 텍스트 및 문서 검색
- 예를 들어 "비용 최적화"에 대한 문서를 검색할 때, 해당 단어가 명시되지 않더라도 관련된 내용을 찾을 수 있습니다.
맨해튼 거리 (Manhattan Distance, L1 Norm)
- 격자(grid) 기반의 블록 거리를 측정합니다.
- 직선이 아닌, 도시의 블록을 따라 이동하는 방식이라고 생각하면 됩니다.
- 사용 사례: 경로 최적화, 물류, 배송 추천 시스템
- 예: Zomato, Swiggy, Amazon 등 배달 최적화 시스템에서 활용 가능
해밍 거리 (Hamming Distance)
- 두 이진 벡터 간의 차이 개수를 계산합니다.
- 사용 사례: 오류 탐지, DNA 서열 비교
- 예: 유전체 분석에서 유사한 DNA 패턴을 비교하는 데 활용됨
Vector Database가 필요한 이유
기업의 80~90%는 비정형 데이터
- 예: 이메일, 채팅, 콜센터 기록, 영상, 음성
전통적인 키워드 기반 검색의 한계
- 입력한 정확한 단어만 검색합니다.
- 예: hello world를 입력하면 정확히 "hello world"만 찾습니다.
- ‘비용 절감’ 입력 시 ‘운영 효율성’ 같은 관련 문서는 누락
벡터 데이터베이스가 필요한 이유
- 의미 기반 검색 (Semantic Search)
- 키워드가 아닌 의미를 이해합니다.
- 확장성 (Scalability)
- 수백만~수십억 건의 문서도 효율적으로 처리할 수 있습니다.
- 속도 (Speed)
- 유사도 기반 검색으로 수 밀리초 내에 가장 관련성 높은 결과를 찾아냅니다.
이처럼 벡터 데이터베이스는 단순한 단어 일치가 아닌 의미 기반 검색을 통해
백그라운드에서 빠르고 정확하게 검색을 수행합니다.
'Study > Database' 카테고리의 다른 글
[Linux] DB 계정생성 및 db 생성 (0) | 2024.12.23 |
---|---|
[DB] 데이터베이스의 기초 (0) | 2024.12.21 |
[SQL] SQL 기초 (0) | 2024.12.21 |
[SQL] SQL 함수 (0) | 2024.12.21 |
[SQL] 데이터정의어(DDL)1 (0) | 2024.12.21 |