Un vecteur est une représentation numérique de texte, d'images, d'audio ou de vidéo qui encode les caractéristiques/la signification sémantique des données, plutôt que le contenu réel tel que les mots ou pixels sous-jacents. Un vecteur est une liste de valeurs numériques, appelées dimensions, avec un format spécifié.
Oracle AI Vector Search prend en charge les vecteurs avec jusqu'à 65 535 dimensions.
AI Vector Search prend en charge les formats INT8, FLOAT32 et FLOAT64.
La taille d'un vecteur est le produit du nombre de dimensions et de la taille de chaque dimension.
Par exemple, un vecteur avec 2 048 dimensions et le format INT8 (1 octet) a une taille de 2 Ko. Un vecteur avec 1 024 dimensions et le format FLOAT32 (4 octets) a une taille de 4 Ko.
Les vecteurs sont créés à partir de différents types de données d'entrée (texte, images, audio, vidéo, etc.) par des modèles d'apprentissage profond appelés modèles d'intégration. Vous pouvez créer des vecteurs en dehors de la base de données à l'aide de vos propres modèles d'intégration ou de votre service d'intégration, ou vous pouvez les créer dans la base de données à l'aide de modèles d'intégration importés via la fonction SQL VECTOR_EMBEDDING().
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 libres et open source, tels que divers transformateurs de phrases, peuvent être trouvés sur Hugging Face et des sites similaires. Ces modèles peuvent être convertis en ONNX pour être exécutés dans la base de données avec AI Vector Search. En outre, une 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.
Plusieurs opérations mathématiques sont prises en charge sur les vecteurs, mais l'opération la plus importante 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 la recherche vectorielle Oracle AI, notamment la distance euclidienne, la similarité cosinus et la distance de Hamming. Le choix de la fonction de distance dépend généralement du modèle d'intégration utilisé pour générer les vecteurs.
Tous les types de 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 trie simplement l'ensemble des vecteurs candidats en fonction de leur distance par rapport à un vecteur de recherche et renvoie les K correspondances les 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, un regroupement, etc. Par exemple, la requête suivante peut être utilisée pour trouver les 10 principaux produits correspondants par photo pour les produits fabriqués dans l'État de Californie.
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;
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 recherches basées sur la valeur et les analyses de plage basées sur la valeur. Les index vectoriels, d'autre part, sont conçus pour trouver les K premières correspondances les plus similaires en fonction de la similarité sémantique au lieu de valeurs identiques. Par exemple, un index vectoriel peut être utilisé pour trouver les K premiers mots qui sont les plus similaires à « pomme » en matière de signification, 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.
Outre SQL et PL/SQL, les applications AI Vector Search peuvent être créées dans divers 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 peut être utilisé dans le processus bien connu de génération augmentée de récupération (RAG) pour aider à améliorer la précision et la pertinence contextuelle des conversations en langage naturel avec les grands modèles de langage (LLM) de l'IA générative. Avec 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 afin qu'il puisse générer une réponse éclairée basée à la fois sur ses propres connaissances générales et sur les connaissances spécialisées du magasin de vecteurs.
AI Vector Search peut être utilisé pour RAG avec des LLM open source tels que Llama2 ou Llama3, ainsi que des LLM de fournisseurs tels que OpenAI et Cohere.
AI Vector Search est intégré à LangChain, un framework open source très populaire pour la création de solutions basées sur RAG.
Tous les mécanismes d'évolutivité étendus d'Oracle, tels que Parallel Execution, Partitioning, RAC, Sharding et Exadata, peuvent être utilisés pour faire évoluer AI Vector Search jusqu'à pratiquement n'importe quelle taille de données et n'importe quel nombre d'utilisateurs.