FAQ 주제

일반적인 질문

벡터란 무엇인가요?

벡터는 텍스트, 이미지, 오디오 또는 비디오의 수학적인 표현으로서 기본 단어 또는 픽셀과 같은 실제 내용이 아닌 데이터의 특징/의미적 의미를 인코딩합니다. 벡터는 차원으로 불리는 숫자 값 목록으로 구성되어 있으며 인공지능(AI) 작업에 사용할 수 있습니다.

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

벡터는 임베딩 모델로도 불리는 딥 러닝 모델에 의해 다양한 유형의 입력 데이터(예: 텍스트, 이미지, 오디오, 비디오)를 기반으로 생성됩니다. 자체 임베딩 모델 또는 임베딩 서비스를 사용해 데이터베이스 외부에 벡터를 생성할 수도 있고, VECTOR_EMBEDDING() SQL 함수를 통해 ONNX 임베딩 모델을 사용해 데이터베이스 내에 벡터를 생성할 수도 있습니다.

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

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

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

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

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

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

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

AI Vector Search는 희소 벡터를 지원하나요?

Oracle AI 벡터 검색은 희소 벡터를 지원합니다. 희소 벡터란 일반적으로 차원 수는 많지만 0이 아닌 값을 갖는 차원은 소수에 불과한 벡터입니다. 개별 문서의 경우, 희소 벡터 중 0이 아닌 차원의 값은 해당 문서에 등장하는 키워드(및 그 변형)에 해당합니다.

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

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

어떤 임베딩 모델을 사용해야 하고, 해당하는 모델들은 어디에서 찾을 수 있나요?

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

AI Vector Search는 이미지 임베딩 모델을 지원하나요?

AI Vector Search는 모델이 텍스트, 이미지, 오디오, 비디오 또는 기타 데이터용인지 여부와 관계없이 모든 임베딩 모델에서 생성된 벡터를 지원합니다. Oracle AI Database에는 AI Vector Search를 통해 이미지 기반 거리 작업을 수행할 수 있는 ONNX 사전 컴파일 임베딩 모델도 포함되어 있습니다.

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

벡터에서는 여러 수학적 연산이 지원됩니다. 가장 중요한 작업은 VECTOR_DISTANCE() SQL 함수입니다. 해당 함수는 사용자가 선택한 거리 공식을 기반으로 두 벡터 간의 수학적 거리를 찾습니다. Oracle AI Vector Search는 Euclidean, Euclidean Squared, Cosine Similarity, Dot Product, Manhattan, Jaccard, Hamming 등 다양한 거리 공식을 지원합니다. 어떤 거리 함수를 선택할지는 일반적으로 벡터를 생성하는 데 사용되는 임베딩 모델에 따라 결정되지만, Oracle AI Database 26ai의 기본 거리 메트릭은 Cosine Similarity입니다.

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

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

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를 사용하려면 어떻게 해야 하나요?

필터, 조인, 집계, group by 및 기타 다양한 요소가 관련된 정교한 쿼리에 AI Vector Search를 사용할 수 있습니다. 예를 들어, 다음과 같은 쿼리를 사용하면 사용자가 업로드한 사진을 기반으로 캘리포니아에서 제조된 상위 10개 일치 제품을 찾을 수 있습니다.

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

벡터 인덱스란 무엇이고 기존의 데이터베이스 인덱스와는 어떻게 다른가요?

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

인메모리 인접 그래프 벡터 인덱스란 무엇인가요?

인메모리 인접 그래프 벡터 인덱스(in-memory neighbor graph vector indexes)는 그래프 기반 메모리 상주 인덱스입니다. 그래프의 정점은 벡터를 나타내고, 정점들 사이의 모서리는 벡터 간의 유사성을 나타냅니다. Oracle AI Vector Search는 Hierarchical Navigable Small World(HNSW) 유형의 인메모리 인접 그래프 벡터 인덱스를 지원합니다. HNSW 인덱스는 소규모 세계 네트워크(small world networks)의 원리 및 계층적 계층 구조(layered hierarchical organization)를 사용해 구성되어 있으므로 매우 빠르고 정확한 유사성 검색을 수행할 수 있습니다.

인접 분할 벡터 인덱스란 무엇인가요?

Oracle AI Vector Search는 Inverted File Flat(IVF) 형식의 인접 분할 벡터 인덱스(neighbor partitioned vector indexes)를 지원합니다. 인접 분할 벡터 인덱스는 유사성에 따라 벡터가 테이블 분할 영역으로 클러스터화되는 디스크 기반 벡터 인덱스입니다. 빠르고 원활한 트랜잭션 지원을 제공하는 효율적인 수평 확장 인덱스로서 고품질 검색과 합리적인 속도 사이의 균형을 맞출 수 있습니다. 메모리에 의존하지 않으므로 데이터 크기 제한 없이 사용할 수 있도록 설계되었습니다.

하이브리드 벡터 인덱스란 무엇이고 기존의 데이터베이스 인덱스와는 어떻게 다른가요?

하이브리드 벡터 인덱스는 사용자가 전체 텍스트 검색과 의미 벡터 검색의 조합을 사용해 문서를 간단히 인덱스화 및 쿼리하고 고품질의 검색 결과를 얻을 수 있는 새로운 유형의 벡터 인덱스입니다. 사용자가 텍스트 쿼리, 벡터 유사성 쿼리 또는 두 접근 방식을 모두 활용하는 하이브리드 쿼리를 실행할 수 있는 통합 쿼리 API를 지원합니다.

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

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

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

AI Vector Search는 검색 증강 생성(RAG) 워크플로에 포함되는 경우가 많습니다. 생성형 AI 대규모 언어 모델(LLM)의 응답을 미세 조정하는 데 필요한 추가 입력을 제공합니다.

AI Vector Search가 RAG와 통합되면 사용자의 질문이 먼저 벡터로 변환된 뒤 AI Vector Search를 통해 데이터베이스 내에서 가장 관련성이 높은 문서로 매핑됩니다. 다음으로 사용자의 질문 및 관련 지원 문서가 LLM에 전달되고, LLM은 벡터 저장소의 일반 지식과 전문 지식을 기반으로 정보에 근거한 답변을 생성합니다.

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

AI Vector Search는 Llama3 및 Mistral과 같은 오픈 소스 모델, OpenAI 및 Cohere와 같은 제공자의 독점 모델 등 모든 LLM과 관련된 RAG에 사용할 수 있습니다. 또한 특수 PL/SQL API들을 통해 AI Vector Search와 RAG용 LLM 간의 원활한 통합을 지원합니다.

AI Vector Search는 AI 통합 프레임워크 및 체인을 지원하나요?

AI Vector Search는 LangChain 및 LlamaIndex와 통합되어 있습니다. 이러한 프레임워크는 대규모 언어 모델 응용 애플리케이션에 전용 및 공용 데이터를 통합하는 데 도움을 줍니다.

검색 증강 생성(RAG)의 이점은 무엇인가요?

검색 증강 생성(RAG)은 생성형 AI(GenAI)와 관련해 중추적인 역할을 수행하며 생성형 AI 애플리케이션에 큰 이점을 제공합니다. RAG를 GenAI 설정에 통합하는 것이 중요한 3가지 이유는 다음과 같습니다.

  1. 환각 최소화: 대규모 언어 모델(LLM)은 프롬프트에 대한 훈련이 부족한 경우 부정확하거나 관련이 없는 응답을 생성할 수 있습니다. 원하는 응답에 맞춰 LLM을 재훈련할 경우 상당한 비용이 발생하는 경우가 많습니다.
  2. 기밀 보호: LLM은 인터넷에서 공개적으로 이용할 수 있는 정보에 대한 교육을 받습니다. 귀사의 고유한 데이터에 대해서는 알지 못합니다. 귀사의 고유 정보를 인터넷을 통해 전송하고 싶지 않을 수 있습니다. 고유 정보가 서드파티에 제공되기 때문입니다. 그 대신 데이터 센터 또는 클라우드 테넌시 내의 로컬 LLM을 사용해 엔터프라이즈 데이터를 귀사의 영역 내에 유지하는 방식을 고려해 볼 수 있습니다.
  3. 최신 정보: LLM은 특정한 날짜까지 수집된 데이터를 학습하고 해당 날짜 이후의 최신 이벤트 또는 팩트는 알지 못합니다. LLM은 RAG를 사용해 프롬프트를 통해 제공된 벡터 데이터베이스의 최신 정보를 기반으로 응답을 생성할 수 있습니다. 즉, LLM에 귀사의 고유 데이터를 학습시킬 필요 없이 귀사의 최신 데이터를 활용할 수 있다는 장점이 있습니다.

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

Parallel Execution, Partitioning, Real Application Clusters(Oracle RAC), Sharding, Exadata와 같은 Oracle의 광범위한 확장성 메커니즘을 활용해 AI Vector Search를 모든 데이터 크기 및 사용자 수에 맞춰 확장할 수 있습니다.

Oracle Exadata에서 AI Vector Search를 실행하는 경우의 이점은 무엇인가요?

병렬 실행, 파티셔닝, Oracle Real Application Clusters(Oracle RAC), Sharding, Exadata와 같은 Oracle의 광범위한 확장성 메커니즘을 활용해 AI Vector Search를 모든 데이터 크기 및 사용자 수에 맞춰 확장할 수 있습니다. Oracle Exadata에는 AI Vector Search 쿼리 작업을 Exadata Storage Servers로 오프로드해 독보적인 쿼리 성능을 제공하는 AI Smart Scan도 포함되어 있습니다.

Oracle은 벡터와 관련해 어떤 데이터 보안 도구를 제공하나요?

Oracle AI Vector Search는 Oracle의 업계 선도적인 데이터베이스 보안 기능과 원활하게 통합되어 리스크를 최소화하고 규제 준수를 간소화합니다. 기업은 암호화, 데이터 마스킹, 권한이 부여된 사용자 액세스 제어, 활동 모니터링, 감사 등의 강력한 도구를 통해 고급 AI 검색 기능을 최대한 활용하면서도 자사의 벡터 데이터를 보호할 수 있습니다. Database Vault 및 Virtual Private Database 등의 인데이터베이스 기능으로 벡터 데이터를 보호하고 적절한 권한을 가진 사용자만 데이터에 액세스할 수 있도록 합니다.

즉, Oracle AI Vector Search를 활용해 기업의 벡터 인프라 풋프린트를 크게 줄일 수 있습니다. 데이터를 복제해야 하거나 추가 관리 오버헤드를 발생시키는 다른 많은 벡터 데이터베이스와 달리 하나의 Oracle AI Database로 다양한 액세스 권한과 권한을 가진 여러 사용자의 요구 사항을 모두 충족할 수 있습니다.

Oracle은 벡터와 관련해 어떤 고가용성 및 재해 복구 기능을 제공하나요?

Oracle AI Database의 벡터는 최고 수준의 데이터베이스 데이터 유형입니다. 즉, 벡터에는 Oracle Database가 세계 최고의 기업용 데이터베이스로 자리잡는데 기여한 모든 혁신적인 기능이 반영되어 있습니다. Oracle RAC 또는 Oracle Globally Distributed Database(Sharding)에서 유사성 검색을 실행하는 방식으로 High Availability(HA)가 제공됩니다. Data Guard, Active Data Guard, Oracle GoldenGate를 활용한 자동 재해 복구가 제공됩니다.