Oracle AI Vector Search FAQ

FAQ 주제

일반적인 질문

벡터란 무엇인가요?

벡터는 텍스트, 이미지, 오디오 또는 동영상의 숫자 표현으로, 기본 단어 또는 픽셀과 같은 실제 내용이 아닌 데이터의 특징/의미적 의미를 인코딩합니다. 벡터는 지정된 형식으로 이루어진 숫자 값(차원)의 목록입니다.

지원되는 벡터 차원 갯수는 몇 개인가요?

Oracle AI Vector Search는 최대 65,535차원의 벡터를 지원합니다.

벡터에 대해 지원되는 숫자 형식은 무엇인가요?

AI Vector Search는 INT8, FLOAT32, FLOAT64 형식을 지원합니다.

벡터의 크기는 어느 정도인가요?

벡터의 크기는 차원 수와 각 차원의 크기를 곱한 값입니다.

예를 들어, 2,048차원과 INT8(1바이트) 형식의 벡터는 크기가 2KB입니다. 1,024차원과 FLOAT32(4바이트) 형식의 벡터는 크기가 4KB입니다.

벡터는 어떻게 생성되나요?

벡터는 임베딩 모델이라고 하는 딥 러닝 모델이 다양한 유형의 입력 데이터(텍스트, 이미지, 오디오, 동영상 등)를 기반으로 생성합니다. 자체 임베딩 모델 또는 임베딩 서비스를 사용하여 데이터베이스 외부에 벡터를 생성하거나 VECTOR_EMBEDDING() SQL 함수를 통해 임포트된 임베딩 모델을 사용하여 데이터베이스 내에 벡터를 생성할 수 있습니다.

AI Vector Search는 어떤 임베딩 모델과 함께 작동하나요?

AI Vector Search는 지원되는 형식 및 65,535차원 이하의 차원을 사용하여 벡터를 생성하는 적절한 임베딩 모델과 함께 실행할 것을 권장합니다.

어떤 임베딩 모델을 사용해야 하며 어디에서 사용할 수 있나요?

임베딩 모델의 선택은 데이터의 특성, 우선순위가 지정된 성과 측정지표, 지불할 의향이 있는 비용 등 여러 요인에 따라 달라집니다. 다양한 문장 변환기와 같은 무료 오픈 소스 임베딩 모델은 Hugging Face 및 유사한 사이트에서 찾을 수 있습니다. 이러한 모델들은 ONNX로 변환할 수 있으며, 변환 후 데이터베이스에서 AI Vector Search와 함께 실행할 수 있습니다. 또한 최고의 텍스트 임베딩 모델로 인기가 많은 소스는 Hugging Face에서 호스팅하는 MTEB Leaderboard입니다. OpenAI 및 Cohere와 같은 기존 모델 제공업체를 이용하실 수도 있습니다.

벡터에서 지원되는 작업은 무엇인가요?

벡터에는 여러 수학적 연산이 지원되지만 가장 중요한 연산은 VECTOR_DISTANCE() SQL 함수입니다. 이 함수는 선택한 거리 공식을 기반으로 두 벡터 사이의 수학적 거리를 찾습니다. Oracle AI Vector Search는 유클리드 거리, 코사인 유사성, 해밍 거리 등의 다양한 거리 공식을 지원합니다. 사용할 거리 함수는 일반적으로 벡터를 생성하는 데 사용되는 임베딩 모델이 결정합니다.

유사성 검색에서 벡터는 어떻게 사용되나요?

모든 유형의 벡터에는 동일한 특성이 있습니다. 바로, 두 엔티티의 유사성이 높을수록 두 엔티티 간의 수학적 거리가 작아진다는 특성입니다. 예를 들어, '사과' 벡터와 '오렌지' 벡터는 '사과' 벡터와 '개' 벡터보다 가깝습니다. 벡터의 이러한 속성을 활용하면 의미적 유사성으로 데이터를 검색할 수 있습니다.

AI Vector Search는 어떻게 SQL을 사용하여 수행되나요?

AI Vector Search를 애플리케이션 내에 손쉽게 통합할 수 있는 간단하고 직관적인 SQL 확장 기능이 있습니다. 벡터 거리는 유사성의 척도이므로, AI Vector Search는 후보 벡터 세트를 검색 벡터로부터의 거리를 기반으로 정렬한 다음 가장 가까운 상위 K 일치 항목을 반환하기만 하면 됩니다. 예를 들어, 아래 쿼리에서는 사용자가 검색한 사진과 가장 일치하는 사진을 가진 상위 10개 제품을 찾습니다.

SELECT product_name, product_photo
FROM Product
ORDER BY VECTOR_DISTANCE(product_photo_vector, :search_photo_vector)
FETCH FIRST 10 ROWS ONLY;

비즈니스 데이터가 포함된 복잡한 쿼리에서 AI Vector Search를 사용하려면 어떻게 해야 하나요?

AI Vector Search를 필터, 조인, 집계, 그룹화 기준 등이 포함된 정교한 쿼리에 사용할 수 있습니다. 예를 들어, 다음 쿼리를 사용하면 캘리포니아주에서 제조된 제품의 사진과 일치하는 사진을 가진 상위 10개 제품을 찾을 수 있습니다.

SELECT Product.name, Product.photo, Manufacturer.name
FROM Product p JOIN Manufacturer m ON (p.mfr_id = m.id)
WHERE Manufacturer.state = ‘CA’
ORDER BY VECTOR_DISTANCE(product_photo_vector, :search_photo_vector)
FETCH FIRST 10 ROWS ONLY;

벡터 인덱스는 무엇이며 기존의 데이터베이스 인덱스와는 무엇이 다릅니까?

기존 데이터베이스 인덱스는 일치하는 값을 기준으로 검색 속도를 높이는 데 사용됩니다. 예를 들어, B 트리 인덱스는 값 기반 조회와 값 기반 범위 스캔을 가속화합니다. 반면 벡터 인덱스는 정확히 일치하는 값 대신 의미 유사성을 기준으로 가장 유사한 상위 K 일치 항목을 찾도록 설계되었습니다. 예를 들어, 벡터 인덱스를 기존 단어 모음에서 '사과'와 가장 유사한 상위 K 단어를 찾는 데 사용할 수 있습니다. 벡터 인덱스를 사용하면 검색의 정확도는 일부 양보하고 대락적으로 검색하므로, 성능이 최대 100배로 좋습니다. 열에 있는 단일 벡터들을 모조리 검사하지 않기 때문입니다.

AI Vector Search 애플리케이션을 개발하는 데 사용할 수 있는 프로그래밍 언어는 무엇인가요?

AI Vector Search 애플리케이션은 SQL 및 PL/SQL 외에도 다양한 프로그래밍 언어로 구축할 수 있습니다. AI Vector Search에는 Java, Python, JavaScript, C#과 같은 인기 언어로 구성된 벡터에 대한 기본 드라이버 지원이 포함됩니다.

생성형 AI에서는 AI Vector Search가 어떤 역할을 수행하나요?

AI Vector Search를 유명한 검색 증강 생성(RAG) 워크플로에 사용하여, GenAI 대규모 언어 모델(LLM)을 통해 자연어 대화의 정확성과 상황별 관련성을 개선할 수 있습니다. RAG를 사용하면 사용자의 질문이 먼저 벡터로 변환된 후 AI Vector Search를 통해 데이터베이스 내에서 가장 관련성이 높은 문서로 매핑됩니다. 그런 다음 사용자의 질문 및 지원 관련 문서가 LLM에 전달되어 벡터 저장소의 일반 지식과 전문 지식을 기반으로 정보에 근거한 답변을 생성할 수 있습니다.

AI Vector Search는 어떤 LLM과 함께 작동하나요?

AI Vector Search는 Llama2나 Llama3과 같은 오픈 소스 LLM뿐만 아니라 OpenAI 및 Cohere와 같은 제공업체의 LLM 기반의 RAG에도 사용할 수 있습니다.

AI Vector Search는 LangChain을 지원하나요?

AI Vector Search는 RAG 기반 솔루션을 구축하기 위한 매우 인기 있는 오픈 소스 프레임워크인 LangChain과 통합되어 있습니다.

애플리케이션의 요구 사항이 점점 늘고 있는데, 이를 충족하기 위해 AI Vector Search를 확장하려면 어떻게 해야 하나요?

Oracle의 Parallel Execution, Partitioning, RAC, Sharding, Exadata와 같은 광범위한 확장성 메커니즘을 사용하면 AI Vector Search를 사실상 어떤 데이터 크기와 사용자 수로도 확장할 수 있습니다.