요즘 ChatGPT
나 LLM
을 얘기하면서 항상 같이 등장하는 VectorDB
에 대해 다른 게시글이 있어서 제가 나름대로 정리하고 가져와 보았습니다.
본론으로 들어가기전에 먼저 벡터 데이터베이스(VectorDB)
에 대해 소개를 해드리려고 합니다.
벡터 데이터베이스(VectorDB)는 방대한 양의 고차원 데이터를 벡터 형태로 최적화 하여 보관하고 쿼리하기 위해 특화된 DB입니다.
VectorDB를 통해서 AI에 시맨틱 정보 검색, 장기 메모리 등의 고급 기능들을 구현 가능합니다.
벡터 데이터베이스
는 기술로 생성된 고차원 벡터를 저장하고 인덱싱하는 데 사용됩니다.
이러한 벡터는 임베딩 기술을 통해 중요한 정보를 유지하면서 저차원 공간으로 변환
되는 복잡한 데이터 항목의 수치 표현입니다.
벡터 데이터베이스는 벡터 임베딩의 특정 구조를 수용하도록 구축되었으며 인덱싱 알고리즘을 사용하여 쿼리 벡터와의 유사성을 기반으로 벡터를 효과적으로 검색
합니다.
벡터 데이터베이스는 ANN(Approximate Nearest Neighbor)
검색에 모두 참여하는 서로 다른 알고리즘의 조합을 사용합니다.
이러한 알고리즘은 해싱, 양자화 또는 그래프 기반 검색을 통해 검색을 최적화
합니다.
벡터 데이터베이스는 대략적인 결과를 제공합니다.
주요 트레이드 오프 : 정확도와 속도결과 정확도 - 쿼리 속도 반비례
Indexing: 벡터 데이터베이스는 PQ, LSH 또는 HNSW와 같은 알고리즘을 사용하여 벡터를 인덱싱합니다.
이 단계는 더 빠른 검색을 가능하게 하는 데이터 구조에 벡터를 매핑합니다.Querying: 벡터 데이터베이스는 가장 가까운 이웃을 찾기 위해 인덱스 쿼리 벡터를 데이터 세트의 인덱스 벡터와 비교합니다.
(해당 인덱스에서 사용하는 유사성 메트릭 적용)Post Processing: 경우에 따라 벡터 데이터베이스는 데이터 세트에서 가장 가까운 최종 이웃을 검색하고 사후 처리하여 최종 결과를 반환합니다.
이 단계에는 다른 유사성 척도를 사용하여 가장 가까운 이웃의 순위를 재지정하는 작업이 포함될 수 있습니다.
벡터 공간에서 두 벡터 간의 각도의 코사인을 측정
합니다. 범위는 -1에서 1까지이며,
여기서 1은 동일한 벡터를 나타내고, 0은 직교 벡터를 나타내고, -1은 정반대의 벡터를 나타냅니다.
벡터 공간에서 두 벡터 사이의 직선 거리를 측정
합니다. 범위는 0에서 무한대까지이며,
여기서 0은 동일한 벡터를 나타내고 값이 클수록 점점 더 다른 벡터를 나타냅니다.
두 벡터 크기의 곱과 두 벡터 사이 각도의 코사인 값을 측정
합니다.
범위는 -∞에서 ∞까지이며 양수 값은 같은 방향을 가리키는 벡터를 나타내고 0은 직교 벡터를 나타내고 음수 값은 반대 방향을 가리키는 벡터를 나타냅니다.
벡터 검색 후에 메타데이터 필터링이 수행됩니다.
이렇게 하면 모든 관련 결과를 고려하는 데 도움이 될 수 있지만 검색이 완료된 후 관련 없는 결과를 필터링해야 하므로 추가 오버헤드가 발생하고 쿼리 프로세스 속도가 느려
질 수도 있습니다.
벡터 검색 전에 메타데이터 필터링이 수행됩니다. 이렇게 하면 검색 공간을 줄이는 데 도움이 되지만 시스템에서 메타데이터 필터 기준과 일치하지 않는 관련 결과를 간과할 수도 있습니다.
또한 광범위한 메타데이터 필터링으로 인해 계산 오버헤드가 추가되어 쿼리 프로세스가 느려
질 수 있습니다.
NLP, 컴퓨터 비전 및 다른 AI 어플리케이션에서 벡터 임베딩이 폭발적으로 성장하면서 벡터 데이터베이스가 등장
하게 되었습니다.
프로덕션 시나리오에서 벡터 임베딩을 관리할 때 발생하는 문제점을 해결하기 위해 특수하게 만들어진게 벡터 데이터베이스
입니다.
기존의 스칼라 기반 데이터 베이스 및 스탠드얼론 벡터 인덱스에 비해 상당한 이점을 제공
합니다.
https://hashdork.com/ko/벡터-데이터베이스/
https://news.hada.io/topic?id=9147
https://www.pinecone.io/learn/vector-database/
사실 아직 반복적으로 읽어보아도 모르는 부분이 많아 이해가 완전히 가지는 않았습니다.
처음보는 용어도 있고, 커뮤니티 글의 링크를 타고 들어갔을때에 영어로 되어있는 부분이 많아서 정확히 무슨 의미인지 이해를 하기가 어려워 시간을 두고 천천히 공부를 해 나가고 있습니다.
요즈음 ChatGPT
와 비슷한 AI가 많이 나오고 있습니다.
비슷한 예로는 Writesonic, Supertools, 등 여러 AI사이트 들이 많이 있습니다.
많이 서비스 됨에 따라 앞으로 어떻게 바뀌게 될지 아직 가늠이 되지는 않지만 적어도 뒤쳐지지는 않기 위해 가볍게 상식으로 라도 알아보기 위해 글에 관심을 가지게 되었습니다.