Un vecteur est une représentation mathématique de texte, d'images, d'audio ou d'une vidéo qui encode les caractéristiques ou la signification sémantique des données, plutôt que le contenu réel comme les mots ou pixels sous-jacents. Un vecteur est constitué d'une liste de valeurs numériques, appelées dimensions, et peut être utilisé pour des opérations d'intelligence artificielle (IA).
Les vecteurs sont créés à partir de différents types de données d'entrée (texte, images, audio, vidéo et autres données) par des modèles de deep learning appelés modèles d'intégration. Vous pouvez créer des vecteurs en dehors de la base de données à l'aide de modèles d'intégration, d'un service d'intégration ou de leur création dans la base de données à l'aide de modèles d'intégration ONNX via la fonction SQL VECTOR_EMBEDDING().
Oracle AI Vector Search prend en charge les formats BINARY, INT8, FLOAT32 et FLOAT64.
Oracle AI Vector Search prend en charge les vecteurs avec jusqu'à 65 535 dimensions.
La taille d'un vecteur est le produit du nombre de dimensions et de la taille de chaque dimension.
Par exemple, un vecteur de 2 048 dimensions et le format INT8 (1 octet) est de 2 kilo-octets, et un vecteur de 1 024 dimensions et le format FLOAT32 (4 octets) est de 4 kilo-octets.
Oracle AI Vector Search prend en charge les vecteurs dispersés, qui ont généralement de nombreuses dimensions, mais seules quelques dimensions ont des valeurs différentes de zéro. Pour un document donné, les valeurs de dimension non nulles dans le vecteur correspondent aux mots-clés (et leurs variations) qui apparaissent dans ce document.
AI Vector Search doit fonctionner avec n'importe quel modèle d'intégration valide qui génère des vecteurs avec l'un des formats pris en charge et 65 535 dimensions ou moins.
Le choix du modèle d'intégration dépend de nombreux facteurs, tels que la nature de vos données, les mesures de performances que vous priorisez et le coût que vous êtes prêt à payer. Des modèles d'intégration libre et open source, notamment divers transformateurs de phrases, peuvent être trouvés sur Hugging Face et des sites similaires. Ces modèles peuvent être convertis en ONNX pour générer des incorporations dans la base de données avec AI Vector Search. La source populaire pour les meilleurs modèles d'intégration de texte est le MTEB Leaderboard hébergé par Hugging Face. Vous pouvez également accéder à des fournisseurs de modèles établis tels que OpenAI et Cohere.
AI Vector Search prend en charge les vecteurs générés à partir de tous les modèles d'intégration, que les modèles soient pour le texte, les images, l'audio, la vidéo ou d'autres données. Oracle AI Database inclut également des modèles d'intégration précompilés ONNX pour effectuer des opérations de distance basées sur des images avec AI Vector Search.
Plusieurs opérations mathématiques sont prises en charge sur les vecteurs. L'opération la plus critique est la fonction SQL VECTOR_DISTANCE(), qui trouve la distance mathématique entre deux vecteurs en fonction de la formule de distance sélectionnée. Il existe de nombreuses formules de distance prises en charge par Oracle AI Vector Search, notamment Euclidien, Euclidien Squared, Cosine Similarity, Dot Product, Manhattan, Jaccard et Hamming. Le choix de la fonction de distance est généralement déterminé par le modèle d'intégration utilisé pour générer les vecteurs. Cependant, la mesure de distance par défaut dans Oracle AI Database 26ai est Cosine Similarity.
Tous les vecteurs partagent la même propriété : plus les deux entités sont similaires, plus la distance mathématique entre elles est petite. Par exemple, les vecteurs pour « pomme » et « orange » sont plus proches que les vecteurs pour « pomme » et « chien ». Cette propriété de vecteurs permet de les utiliser pour rechercher des données par similarité sémantique.
Il existe des extensions SQL simples et intuitives qui permettent à AI Vector Search d'être facilement intégré à vos applications. La distance vectorielle étant une mesure de similarité, AI Vector Search consiste à trier l'ensemble des vecteurs candidats sur la base de leur distance à un vecteur de recherche et à renvoyer les K correspondances le plus proches. Par exemple, la requête ci-dessous recherche les 10 principaux produits dont les photos correspondent le mieux à la photo de recherche de l'utilisateur :
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 peut être utilisé dans des requêtes sophistiquées impliquant des filtres, des jointures, des agrégations, des regroupements et d'autres éléments. Par exemple, la requête suivante peut être utilisée pour trouver les 10 principaux produits correspondants fabriqués en Californie sur la base d'une photo téléchargée par un utilisateur.
SELECT p.name, p.photo, m.name
FROM product p
JOIN fabricant 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 ;
Les index de base de données traditionnels sont utilisés pour accélérer les recherches en fonction des valeurs correspondantes. Par exemple, un index B-tree accélère les consultations basées sur la valeur et les analyses d'intervalle. Les index vectoriels, d'autre part, sont conçus pour trouver les premières correspondances K les plus similaires en fonction de la similarité sémantique au lieu de valeurs correspondantes. Un index vectoriel peut être utilisé pour trouver les mots K les plus similaires dans le sens de « pomme » dans un corpus de mots existants. L'utilisation d'un index vectoriel entraîne une recherche approximative qui élimine une certaine précision de recherche pour des performances jusqu'à 100X supérieures, car elle évite d'examiner chaque vecteur unique dans une colonne.
Les index vectoriels de graphe de voisin en mémoire sont des index résidentiels de mémoire basés sur des graphiques. Les sommets du graphe représentent des vecteurs, et les arêtes entre les sommets représentent la similitude entre les vecteurs. Oracle AI Vector Search prend en charge les index de vecteur de graphe de voisin en mémoire de type HNSW (Hierarchical Navigable Small World). Les index HNSW sont structurés en utilisant les principes des petits réseaux mondiaux et de l'organisation hiérarchique en couches, ce qui les rend extrêmement rapides et précis pour la recherche de similarité.
Oracle AI Vector Search prend en charge les index vectoriels partitionnés voisins de type IVF (Inverted File Flat). Les index vectoriels partitionnés voisins sont des index vectoriels basés sur disque où les vecteurs sont regroupés en partitions de table en fonction de la similarité. Il s'agit d'un index évolutif efficace avec une prise en charge transactionnelle rapide et transparente, vous permettant d'équilibrer la recherche de haute qualité avec une vitesse raisonnable. Ils sont conçus pour accueillir des tailles de données illimitées, en raison du fait qu'ils ne dépendent pas de la mémoire.
Les index vectoriels hybrides sont un nouveau type d'index vectoriel qui permet aux utilisateurs d'indexer et d'interroger facilement leurs documents à l'aide d'une combinaison de recherche de texte intégral et de recherche sémantique de vecteur pour obtenir des résultats de recherche de meilleure qualité. Ils prennent en charge une API de requête unifiée qui permet aux utilisateurs d'exécuter des requêtes textuelles, des requêtes de similarité vectorielle ou des requêtes hybrides qui exploitent les deux approches.
Outre SQL et PL/SQL, les applications AI Vector Search peuvent être créées dans différents langages de programmation. AI Vector Search inclut la prise en charge des pilotes natifs pour les vecteurs dans des langages populaires tels que Java, Python, JavaScript et C#.
AI Vector Search fait souvent partie d'un workflow de génération augmentée de récupération (RAG). Il fournit des entrées supplémentaires nécessaires pour affiner la réponse d'un grand modèle de langage (LLM) de GenAI.
Lorsqu'elle est associée à la RAG, la question d'un utilisateur est d'abord convertie en vecteur, puis mappée aux documents les plus pertinents de la base de données via AI Vector Search. Ensuite, la question de l'utilisateur et les documents pertinents à l'appui sont transmis au LLM, qui génère une réponse éclairée basée sur ses connaissances générales et les connaissances spécialisées de la base de données.
AI Vector Search peut être utilisé pour la RAG avec n'importe quel LLM, y compris les modèles open source, tels que Llama3 et Mistral, ainsi que les modèles propriétaires de fournisseurs tels que OpenAI et Cohere. En outre, des API PL/SQL spécialisées sont disponibles pour une intégration transparente entre AI Vector Search et les LLM pour RAG.
AI Vector Search est intégré à LangChain et LlamaIndex. Ces structures peuvent aider à intégrer des données privées et publiques pour les applications de grands modèles de langage.
La génération augmentée de récupération (RAG) joue un rôle central dans l'IA générative (GenAI), offrant des avantages significatifs aux applications de GenAI. Voici seulement trois raisons impérieuses pour lesquelles il est primordial d'intégrer RAG dans votre configuration de GenAI :
Les mécanismes d'évolutivité étendus d'Oracle, tels que l'exécution parallèle, le partitionnement, Real Application Clusters (Oracle RAC), le sharding et Exadata, peuvent faire évoluer AI Vector Search pour atteindre pratiquement toutes les tailles de données et le nombre d'utilisateurs.
Les mécanismes d'évolutivité étendus d'Oracle, tels que l'exécution parallèle, le partitionnement, Real Application Clusters (Oracle RAC), le sharding et Exadata, peuvent faire évoluer AI Vector Search pour atteindre pratiquement toutes les tailles de données et le nombre d'utilisateurs. Oracle Exadata inclut également AI Smart Scan, qui décharge les opérations de requête AI Vector Search vers les serveurs Exadata Storage Servers pour des performances de requête inégalées.
Oracle AI Vector Search s'intègre en toute transparence aux fonctionnalités de sécurité de bases de données leaders du secteur d'Oracle pour réduire les risques et simplifier la conformité. Les entreprises peuvent sécuriser leurs données vectorielles en tirant parti d'outils robustes, tels que le chiffrement, le masquage des données, les contrôles d'accès des utilisateurs privilégiés, la surveillance des activités et l'audit, tout en tirant pleinement parti des fonctionnalités avancées de recherche par IA. Les fonctionnalités dans la base de données, telles que Database Vault et Virtual Private Database, aident à sécuriser les données vectorielles et garantissent que seuls les utilisateurs disposant des privilèges appropriés peuvent y accéder.
Cela signifie qu'Oracle AI Vector Search peut réduire considérablement l'empreinte de l'infrastructure vectorielle d'une entreprise. Une seule base de données Oracle AI Database peut répondre aux besoins de nombreux utilisateurs différents disposant de droits d'accès et d'autorisations différents sans avoir à dupliquer les données ni à générer de surcharge de gestion supplémentaire, comme c'est souvent le cas avec d'autres bases de données vectorielles.
Les vecteurs d'Oracle AI Database sont des types de données de bases de données de première classe. Cela signifie que les vecteurs héritent implicitement de toutes les fonctionnalités innovantes qui font d'Oracle la première base de données d'entreprise au monde. La haute disponibilité (HA) est fournie en exécutant des recherches de similarité sur Oracle RAC ou Oracle Globally Distributed Database (Sharding). Data Guard, Active Data Guard et Oracle GoldenGate peuvent tous fournir automatiquement une récupération après sinistre.