데보션앱 소개페이지 바로가기
로그인 선택

신고하기

CLOSE
신고사유 (대표 사유 1개)
상세내용 (선택)
0/200
  • 신고한 게시글은 더 이상 보이지 않습니다.
  • 이용약관과 운영정책에 따라 신고사유에 해당하는지 검토 후 조치됩니다.
  • 허위 신고인 경우, 신고자의 서비스 이용이 제한될 수 있으니 유의하시어 신중하게 신고해 주세요.
(이 회원이 작성한 모든 댓글과 커뮤니티 게시물이 보이지 않고, 알림도 오지 않습니다.)

미리보기

커뮤니티

      1,234

      badge 23.06.15

      글 등록

      카테고리를 선택해주세요.

      DEVOTEE를 활성화 시키면
      지금 작성한 커뮤니티 글에 대해 1개의 댓글을 달아줍니다.

      버튼을 누르면 글 수정 시 ChatGPT가 작성한 댓글이 수정됩니다.

      임시저장함에 저장되었습니다. 저장일시 : 2022.5.17 14:29:08

      임시저장함

      제목을 선택하시면 이어서 작성이 가능하며,
      최대 20건까지 저장합니다.
      컨텐츠 유형, 제목, 저장일시, 삭제로 이뤄진 임시저장 목록
      컨텐츠 유형 제목 저장일 삭제

      데보션 블로그 게재 요청

      CLOSE
      • *
      • *

      본인인증

      효율적인 데보션 서비스 이용 및
      고객님의 소중한 개인정보보호를 위해
      본인인증을 진행해주세요. 본인인증 미 진행 시 로그인이 제한됩니다.
      본인인증 실패

      본인인증 로그인에 실패하였습니다.
      회원이 아니시거나 본인인증 등록이
      완료되지 않은 사용자입니다.

      회원정보 연결

      ChatGPT의 전두엽(장기기억 저장소)으로 각광받고 있는 Vector DB에 대해 알아보자

      supecialkim 23.06.07
      28,343 18 5

      벡터 데이터베이스란?

      • 벡터 데이터베이스는 방대한 양의 고차원 데이터를 벡터 형태로 최적화 하여 보관하고 쿼리하기 위해 특화된 DB

        • 벡터는 서로 다른 특성이나 품질을 기반으로 개체를 설명하는 수학적 데이터 표현입니다.

          • 각 벡터는 단어나 그림과 같은 단일 데이터 요소를 나타내며 여러 특성을 설명하는 값 모음으로 구성됩니다. 이러한 변수를 "기능" 또는 "치수"라고도 합니다.

          • 예를 들어, 그림은 픽셀 값의 벡터로 표현될 수 있지만 전체 문장은 단어 임베딩의 벡터로 표현될 수 있습니다.

          • 벡터 데이터베이스는 인덱싱 전략을 사용하여 특정 쿼리 벡터와 유사한 벡터를 쉽게 찾을 수 있습니다. 이는 기계 학습 과 같은 경우에 특히 유익합니다. 

            유사한 데이터 포인트를 발견하거나 제안을 생성하기 위해 유사성 검색이 자주 사용되기 때문입니다.

      • AI 어플리케이션들은 Vector Embeddings에 의존

        • 임베딩은 AI 모델에 의해 생성되며, 많은 수의 속성/피쳐가 있어서 관리하기가 어려움

          • AI 및 ML에서 이 피쳐들은 패턴, 관계 및 기본 구조를 이해하는데 필수적인 데이터의 다양한 디멘젼들을 표현

      • 벡터DB를 통해서 AI에 시맨틱 정보 검색, 장기 메모리 등의 고급 기능들을 구현 가능

        • 임베딩 모델을 통해서 인덱싱할 콘텐츠의 벡터 임베딩을 생성

        • 벡터 임베딩들을 벡터DB에 삽입.

          임베딩이 어디에서 생성되었는지 오리지널 콘텐츠에 대한 레퍼런스를 포함

        • 어플리케이션이 쿼리를 하면, 같은 임베딩 모델을 이용하여 쿼리에 대한 임베딩을 생성하고, 이 임베딩으로 DB를 검색해서 비슷한 벡터 임베딩을 찾음

        • 이 임베딩들은 오리지널 콘텐츠에 연결되어 있음



      벡터 데이터베이스의 내부 작동

      • 벡터 데이터베이스는 다음과 같은 기술로 생성된 고차원 벡터를 저장하고 인덱싱하는 데 사용됩니다.

        이러한 벡터는 임베딩 기술을 통해 중요한 정보를 유지하면서 저차원 공간으로 변환되는 복잡한 데이터 항목의 수치 표현입니다.


        따라서 벡터 데이터베이스는 벡터 임베딩의 특정 구조를 수용하도록 구축되었으며 인덱싱 알고리즘을 사용하여 쿼리 벡터와의 유사성을 기반으로 벡터를 효과적으로 검색하고 검색합니다.




      어떻게 작동하는가?

      • 벡터 데이터베이스는 ANN(Approximate Nearest Neighbor) 검색에 모두 참여하는 서로 다른 알고리즘의 조합을 사용합니다. 

        이러한 알고리즘은 해싱, 양자화 또는 그래프 기반 검색을 통해 검색을 최적화합니다.

        • 벡터 데이터베이스는 대략적인 결과를 제공

          • 주요 트레이드 오프 : 정확도와 속도결과 정확도 - 쿼리 속도 반비례

      벡터 데이터베이스에 대한 일반적인 파이프라인

      Untitled

      1. Indexing: 벡터 데이터베이스는 PQ, LSH 또는 HNSW와 같은 알고리즘을 사용하여 벡터를 인덱싱합니다.

        이 단계는 더 빠른 검색을 가능하게 하는 데이터 구조에 벡터를 매핑합니다.

      2. Querying: 벡터 데이터베이스는 가장 가까운 이웃을 찾기 위해 인덱스 쿼리 벡터를 데이터 세트의 인덱스 벡터와 비교합니다.

        (해당 인덱스에서 사용하는 유사성 메트릭 적용).

      3. Post Processing: 경우에 따라 벡터 데이터베이스는 데이터 세트에서 가장 가까운 최종 이웃을 검색하고 사후 처리하여 최종 결과를 반환합니다. 

        이 단계에는 다른 유사성 척도를 사용하여 가장 가까운 이웃의 순위를 재지정하는 작업이 포함될 수 있음


      벡터 인덱스 생성에서 사용하는 알고리즘

      • Random Projection

        • 무작위 투영의 기본 아이디어는 무작위 투영 행렬을 사용하여 고차원 벡터를 저차원 공간에 투영하는 것입니다.

          난수 행렬을 만듭니다. 행렬의 크기는 우리가 원하는 목표 저차원 값이 될 것입니다.

          그런 다음 입력 벡터와 행렬의 내적을 계산하여 원래 벡터보다 차원이 적지만 유사성을 유지하는 투영 행렬을 생성합니다.

        Untitled

      • Product Quantization

        • 벡터 임베딩과 같은 고차원 벡터에 대한 손실 압축 기술인 제품 양자화(PQ)입니다. 

          원본 벡터를 가져와서 더 작은 청크로 나누고 각 청크에 대한 대표 "코드"를 생성하여 각 청크의 표현을 단순화한 다음 유사성 작업에 중요한 정보를 잃지 않고 모든 청크를 다시 결합하는 것

        Untitled

      • Loclity-sensitive hashing

        • LSH(Locality-Sensitive Hashing)는 근사 최근접 이웃 검색 컨텍스트에서 인덱싱하는 기술입니다. 속도에 최적화되어 있으면서도 대략적이고 포괄적이지 않은 결과를 제공합니다.

        Untitled

      • Hierarchical Navigable Small World (HSNW)

        • HSNW는 트리의 각 노드가 벡터 세트를 나타내는 계층적 트리와 같은 구조를 생성합니다. 노드 사이의 모서리는 벡터 간의 유사성을 나타냅니다

        Untitled


      유사성 측정

      • 코사인 유사성

        • 벡터 공간에서 두 벡터 간의 각도의 코사인을 측정합니다. 범위는 -1에서 1까지이며,

          여기서 1은 동일한 벡터를 나타내고, 0은 직교 벡터를 나타내고, -1은 정반대의 벡터를 나타냅니다.

      • 유클리드 거리

        • 벡터 공간에서 두 벡터 사이의 직선 거리를 측정합니다. 범위는 0에서 무한대까지이며,

          여기서 0은 동일한 벡터를 나타내고 값이 클수록 점점 더 다른 벡터를 나타냅니다.

      • 내적

        • 두 벡터 크기의 곱과 두 벡터 사이 각도의 코사인 값을 측정합니다. 

          범위는 -∞에서 ∞까지이며 양수 값은 같은 방향을 가리키는 벡터를 나타내고 0은 직교 벡터를 나타내고 음수 값은 반대 방향을 가리키는 벡터를 나타냅니다.


      메타데이터를 통한 필터링

      Untitled

      • Post-filtering:

        • 벡터 검색 후에 메타데이터 필터링이 수행됩니다. 

          이렇게 하면 모든 관련 결과를 고려하는 데 도움이 될 수 있지만 검색이 완료된 후 관련 없는 결과를 필터링해야 하므로 추가 오버헤드가 발생하고 쿼리 프로세스 속도가 느려질 수도 있습니다.

      • Pre-filtering:

        • 벡터 검색 전에 메타데이터 필터링이 수행됩니다. 이렇게 하면 검색 공간을 줄이는 데 도움이 되지만 시스템에서 메타데이터 필터 기준과 일치하지 않는 관련 결과를 간과할 수도 있습니다. 

          또한 광범위한 메타데이터 필터링으로 인해 계산 오버헤드가 추가되어 쿼리 프로세스가 느려질 수 있습니다.



      데이터베이스 관련

      Untitled

      • 성능 및 내결함성

        • 샤딩

        • Replication

      • 모니터링

      • 액세스 제어

      • 백업 및 컬렉션

      • API 및 SDK


      Vector Index 와 Vector DB의 차이점

      • FAISS(Facebook AI Similarity Search) 같은 벡터 인덱스도 벡터 임베딩 검색을 개선하지만, DB의 기능을 가지고 있지는 않음

      • Vector DB는 여러가지 장점을 가짐

        • 데이터 관리 기능: 데이터의 삽입, 삭제, 갱신이 쉬움

        • 메타데이터 저장 및 필터링: 각 벡터에 대한 메타데이터 저장이 가능

        • 확장성: 분산 및 병렬처리 기능을 제공

        • 실시간 업데이트 지원

        • 백업 및 컬렉션 기능(일부 인덱스만 골라서 백업)

        • 에코시스템 연동: ETL(Spark), 분석도구(Tableau, Segment), 시각화(Grafana) 등과 연동. AI 도구와의 연동(LangChain, LlamaIndex, ChatGPT Plugins)

        • 데이터 보안 및 접근 권한 관리


      요약

      • NLP, 컴퓨터 비전 및 다른 AI 어플리케이션에서 벡터 임베딩이 폭발적으로 성장하면서 벡터 데이터베이스가 등장

      • 프로덕션 시나리오에서 벡터 임베딩을 관리할 때 발생하는 문제점을 해결하기 위해 특수하게 만들어진게 벡터 데이터베이스

      • 기존의 스칼라 기반 데이터 베이스 및 스탠드얼론 벡터 인덱스에 비해 상당한 이점을 제공


      Colab 실습 코드


      참고자료

      댓글 0

      DEVOTEE를 활성화 시키면
      지금 작성한 댓글에 AI가 댓글을 달아줍니다.

      supecialkim 님의 최신 블로그

      더보기