본문 바로가기
3. 데이터관리

AI Vector Search Overview

by chosuky 2024. 6. 19.

매뉴얼 기반으로 작성되었습니다.

 

오라클 AI 벡터 검색은 인공 지능(AI) 워크로드를 위해 설계되었으며 다음을 수행할 수 있습니다.

키워드가 아닌 의미론에 기반하여 데이터를 쿼리할 수 있습니다.

벡터 데이터 유형

벡터 데이터 유형은 오라클 데이터베이스 23ai 출시와 함께 도입되어, 벡터 임베딩과 함께

데이터베이스에 비즈니스 데이터와 함께 벡터 임베딩을 저장할 수 있는 기반을 제공합니다. 임베딩 모델을 사용하면 비정형 데이터를 벡터 임베딩으로 변환한 다음 비즈니스 데이터에 대한 시맨틱 쿼리에 사용할 수 있습니다.

테이블 정의에서 벡터 데이터 유형을 사용하는 다음 기본 예제를 참조하세요:

CREATE TABLE docs(doc_id INT, doc_text CLOB, doc_vector VECTOR);

VECTOR 데이터 유형 및 테이블에서 벡터를 사용하는 방법에 대한 자세한 내용은 벡터 데이터 유형을 사용하여 테이블 만들기를 참조하세요.

벡터 임베딩

음성 어시스턴트, 챗봇, 언어 번역기, 추천 시스템, 이상 징후 감지, 동영상 검색 및 인식 등의 애플리케이션을 사용해 본 적이 있다면 암묵적으로 벡터 임베딩 기능을 사용해 보셨을 것입니다.

오라클 AI 벡터 검색은 데이터 요소를 수학적 벡터로 표현한 데이터 포인트의 수학적 벡터 표현인 벡터 임베딩을 저장합니다. 이러한 벡터 임베딩은 단어, 문서와 같은 콘텐츠의 의미론적 의미를 설명합니다.

예를 들어, 텍스트 기반 검색을 할 때, 벡터 검색이 키워드 검색보다 더 나은 것으로 간주되는 경우가 많습니다.

벡터 검색은 실제 단어가 아닌 단어 뒤에 숨겨진 의미와 문맥을 기반으로 하기 때문입니다.

이 벡터 표현은 사람이 인지하는 객체의 의미적 유사성을 수학적 벡터 공간에서의 근접성으로 변환합니다. 이 벡터 공간에는 일반적으로 수천 개는 아니더라도 수백 개의 차원을 가집니다. 다르게 말하면, 벡터 임베딩은 거의 모든 종류의 데이터를 텍스트, 이미지, 동영상, 사용자 또는 음악과 같은 거의 모든 종류의 데이터를 다차원 공간에서 해당 점의 위치 및 다른 점과의 근접성, 의미론적으로 의미가 있습니다.

이 단순화된 다이어그램은 단어가 2차원으로 인코딩된 벡터 공간을 보여줍니다. 벡터로 인코딩된 공간을 보여줍니다.

유사성 검색

이제 데이터 세트에서 의미론적 유사성을 검색하는 것은 기존의 키워드 검색 대신 벡터 공간에서 가장 가까운 이웃을 검색하는 것과 같습니다. 다음 다이어그램에서 볼 수 있듯이, 이 벡터 공간에서 개와 늑대 사이의 거리는 개와 새끼 고양이 사이의 거리보다 짧습니다. 이 공간에서 개는 고양이보다 늑대와 더 유사합니다.

자세한 내용은 정확한 유사도 검색 수행을 참조하세요.

벡터 데이터는 고르지 않게 분포되어 있고 의미적으로 연관성이 있는 그룹으로 클러스터링되는 경향이 있습니다.

주어진 쿼리 벡터를 기반으로 유사도 검색을 수행하는 것은 벡터 공간에서 쿼리 벡터에 가장 가까운 벡터를 검색하는 것과 같습니다. 기본적으로 벡터의 순위를 매겨 목록의 첫 번째 행이 쿼리 벡터와 가장 가깝거나 가장 유사한 벡터인 쿼리 벡터에 가장 가깝거나 가장 유사한 벡터, 목록의 두 번째 행은 쿼리 벡터에 두 번째로 가까운 벡터입니다.

유사도 검색을 수행할 때는 실제 거리보다는 거리의 상대적 순서가 실제 거리보다는 거리의 상대적 순서가 중요합니다.

앞의 벡터 공간을 사용하여 다음은 시맨틱 검색의 예시입니다. 쿼리 벡터가 강아지라는 단어에 대응하는 벡터이고 가장 가까운 네 개를 식별하려는 경우입니다:

유사도 검색은 쿼리 벡터의 값과 가져오기 크기에 따라 하나 이상의 클러스터에서 데이터를 가져오는 경향이 있습니다.

벡터 인덱스를 사용하는 대략적인 검색은 검색을 특정 클러스터로 제한할 수 있습니다, 반면, 정확한 검색은 모든 클러스터의 벡터를 방문합니다.

자세한 내용은 벡터 인덱스 사용을 참조하세요.

벡터 임베딩 모델

이러한 벡터 임베딩을 만드는 한 가지 방법은 누군가의 도메인 전문 지식을 사용하여 다음과 같이 하는 것입니다.

모양, 질감, 색상, 감정 등 미리 정의된 특징 또는 차원 집합을 정량화하는 것입니다, 그리고 다루는 객체 유형에 따라 다른 많은 것들을 정량화하는 것입니다. 하지만 이 방법의 효율성은 사용 사례에 따라 다르며 항상 비용 효율적인 것은 아닙니다.

대신, 벡터 임베딩은 신경망을 통해 만들어집니다. 대부분의 최신 벡터 임베딩은 다음 다이어그램과 같이 트랜스포머 모델을 사용하지만, 컨볼루션 신경 네트워크도 사용할 수 있습니다.

Figure 1-1 Vector Embedding Model

데이터 유형에 따라 사전 학습된 다양한 오픈 소스 모델을 사용하여 다음을 수행할 수 있습니다.

벡터 임베딩을 만들 수 있습니다. 예를 들어

  • 텍스트 데이터의 경우, 문장 트랜스포머는 단어, 문장 또는 단락을 벡터 임베딩으로 변환합니다.
  • 시각적 데이터의 경우, 잔여 네트워크(ResNet)를 사용하여 벡터 임베딩을 생성할 수 있습니다.
  • 오디오 데이터의 경우 오디오 데이터의 시각적 스펙트로그램 표현을 사용하여 시각적 데이터의 경우로 돌아갑니다.

각 모델에 따라 벡터의 차원 수도 결정됩니다. 예를 들어

  • Cohere의 임베딩 모델 embed-english-v3.0은 1024개의 차원을 가지고 있습니다.
  • OpenAI의 임베딩 모델 text-embedding-3-large는 3072개의 차원을 가지고 있습니다.
  • Hugging Face의 임베딩 모델 all-MiniLM-L6-v2의 치수는 384개입니다.

물론 자체 데이터 세트로 학습된 자체 모델을 언제든지 만들 수 있습니다.

임베딩 모델을 오라클 데이터베이스로 가져오기

사전 학습된 오픈 소스 임베딩 모델을 사용하여 Oracle 데이터베이스 외부에서 벡터 임베딩을 생성할 수 있지만,

다음과 같은 옵션도 있습니다.

해당 모델이 개방형 신경망 교환 (ONNX) 표준과 호환되는 경우 해당 모델을 Oracle 데이터베이스에 직접 가져올 수도 있습니다. Oracle 데이터베이스는 데이터베이스 내에서 직접 ONNX 런타임을 구현합니다. 이를 통해 데이터베이스 내에서 직접 벡터 임베딩을 생성할 수 있습니다. 자세한 내용은 벡터 임베딩 생성을 참조하세요.

왜 오라클 AI 벡터 검색을 사용해야 할까요?

오라클 AI 벡터 검색의 가장 큰 장점 중 하나는 비정형 데이터에 대한 시맨틱 검색을 단일 시스템에서 비즈니스 데이터에 대한 관계형 검색과 결합할 수 있다는 것입니다.

전문화된 벡터 데이터베이스를 추가할 필요가 없기 때문에 강력할 뿐만 아니라 훨씬 더 효과적입니다.

예를 들어, 원하는 예산에 원하는 지역에 위치한 비슷한 집을 찾을 수 있는 애플리케이션을 사용한다고 가정해 보겠습니다. 이 경우 좋은 매물을 찾으려면 시맨틱 사진 검색과 비즈니스 데이터에 대한 검색을 결합해야 합니다.

오라클 AI 벡터 검색을 사용하면 다음 표를 만들 수 있습니다:

CREATE TABLE house_for_sale (house_id NUMBER, price NUMBER, city VARCHAR2(400), house_photo BLOB, house_vector VECTOR);

이 가이드의 다음 섹션에서는 VECTOR 데이터 유형의 의미와 이 열 데이터 유형으로 데이터를 로드하는 방법에 대해 자세히 설명합니다.

해당 테이블을 사용하여 다음 쿼리를 실행하여 기본적인 질문에 대한 답을 얻을 수 있습니다:

SELECT house_photo, city, price

FROM house_for_sale

WHERE price <= :input_price

AND city = :input_city

ORDER BY VECTOR_DISTANCE(house_vector, :input_vector);

이 가이드의 뒷부분에서 VECTOR_DISTANCE 함수의 의미에 대해 자세히 설명합니다.

이 쿼리는 벡터 임베딩 유사도 검색을 관계 술어와 결합하는 것이 얼마나 간단한지 보여주기 위한 것입니다.

오라클 데이터베이스 23ai와 함께, 오라클 엑사데이터 시스템 소프트웨어 릴리스 24.1.0은 다양한 AI 벡터 쿼리의 성능을 개선할 수 있는 엑사데이터 전용 최적화 모음인 AI 스마트 스캔을 도입합니다. 다양한 AI 벡터 쿼리 작업의 성능을 대폭 향상시킬 수 있습니다. AI 스마트 스캔은 오라클 데이터베이스 23ai AI 벡터 검색을 자동으로 가속화하여 대량의 벡터 데이터에 대해 지연 시간이 짧은 병렬화된 스캔을 제공합니다.

AI 스마트 스캔은 메모리 속도로 벡터 데이터를 처리하며, 초고속 엑사데이타 스토리지 서버의 초고속 엑사데이타 RDMA 메모리(XRMEM) 및 엑사데이타 스마트 플래시 캐시를 활용합니다, 데이터 소스에서 벡터 거리 계산 및 탑-K 필터링을 수행하여 불필요한 네트워크 데이터 전송을 방지합니다. 불필요한 네트워크 데이터 전송 및 데이터베이스 서버 처리를 피합니다.

오라클 AI 벡터 검색 워크플로

일반적인 Oracle AI Vector Search 워크플로는 포함된 기본 단계를 따릅니다.

이는 다음 다이어그램에 설명되어 있습니다:

Figure 1-2 Oracle AI Vector Search Use Case Flowchart

다이어그램을 이해하려면 이 높은 수준의 워크플로 설명을 참조하세요. 벡터 임베딩은 임베딩 모델을 통해 비정형 데이터를 전달하여 생성됩니다. 벡터 임베딩은 비즈니스 데이터와 함께 관계형 테이블에 저장될 수 있으며, 벡터 인덱스는 선택적으로 생성할 수 있습니다. 비정형 데이터의 벡터 표현이 데이터베이스 테이블에 저장되면, 비정형 데이터 샘플을 임베딩 모델을 통해 쿼리 벡터를 만들 수 있습니다. 쿼리 벡터를 사용하면 임베딩 모델에 포함된 벡터에 대해 유사성 검색을 수행할 수 있으며, 원하는 경우 관계형 쿼리와 함께 유사도 검색을 수행할 수 있습니다. 완전한 검색 증강 생성(RAG) 파이프라인을 구성하려면 파이프라인을 구성하기 위해 쿼리 단계의 일부로 생성형 대규모 언어 모델(LLM)을 호출할 수도 있습니다.

기본 워크플로 단계:

1. 비정형 데이터에서 벡터 임베딩 생성하기

이 단계는 Oracle 데이터베이스 외부 또는 내부에서 수행할 수 있습니다. 자세한 내용은 벡터 임베딩 생성을 참조하세요.

2. 오라클 데이터베이스에 벡터 임베딩, 비정형 데이터 및 관계형 비즈니스 데이터 저장

결과 벡터 임베딩 및 관련 비정형 데이터와 함께관계형 비즈니스 데이터와 함께 저장합니다. 자세한 내용은 벡터

임베딩 저장하기를 참조하십시오.

3. 벡터 인덱스 만들기

벡터 임베딩에 벡터 인덱스를 생성할 수 있습니다. 이는 다음과 같은 경우에 유용합니다. 거대한 벡터 공간에서 유사성 검색을 실행할 때 유용합니다. 자세한 내용은 벡터 인덱스 만들기를 참조하세요.

4. 유사도 검색으로 데이터 쿼리

그런 다음 Oracle AI Vector Search 기본 SQL 작업을 사용하여 유사도 검색을 관계형 검색과 결합하여 관련 데이터를 검색할 수 있습니다. 자세한 내용은 유사도 검색으로 데이터 쿼리를 참조하십시오.

5. 프롬프트 생성 및 전체 RAG 추론을 위해 LLM으로 보내기

유사도 검색 결과를 사용하여 프롬프트를 생성하고 이를 원하는 생성 LLM으로 전송하여 완전한 RAG 파이프라인을 구축할 수 있습니다. 자세한 내용은 검색 증강 생성 기능을 사용한 작업 참조하세요.

댓글