paint-brush
Révolutionner le développement de l'IA : Apache Cassandra présente la recherche de vecteurspar@datastax
1,967 lectures
1,967 lectures

Révolutionner le développement de l'IA : Apache Cassandra présente la recherche de vecteurs

par DataStax7m2023/05/22
Read on Terminal Reader

Trop long; Pour lire

La recherche vectorielle puissante, associée à Apache Cassandra, la base de données la plus évolutive au monde, change la donne pour les applications d'IA.
featured image - Révolutionner le développement de l'IA : Apache Cassandra présente la recherche de vecteurs
DataStax HackerNoon profile picture


Il n'y a pas d'intelligence artificielle sans données. Et lorsque vos données sont éparpillées un peu partout, vous passerez plus de temps à gérer le processus de mise en œuvre au lieu de vous concentrer sur ce qui est le plus important : la création de l'application. Les applications les plus importantes au monde utilisent déjà Apache Cassandra, l'augmentation de l'efficacité des données est donc un objectif de plus en plus important. L'IA est une question d'échelle, et l'intégration de la recherche vectorielle - un élément clé dans l'utilisation des modèles d'IA - dans Cassandra aidera les organisations à réduire les coûts, à rationaliser leur gestion des données et à tirer la moindre valeur de leurs données.


Cette fonctionnalité de pointe, récemment décrite dans une proposition d'amélioration de Cassandra ( CEP-30 ), est une preuve supplémentaire de l'engagement de la communauté Cassandra à créer rapidement des fonctionnalités fiables. Cela témoigne également de l'attrait croissant de Cassandra pour les développeurs d'IA et les organisations aux prises avec des ensembles de données massifs, en leur fournissant les outils nécessaires pour créer des applications avancées basées sur les données.


Qu'est-ce que la recherche vectorielle ?

Le concept de recherche de texte existe depuis longtemps. Cela implique la recherche d'un mot-clé particulier dans les documents. Mais les données importantes peuvent être trouvées dans plus que du texte : l'audio, les images et la vidéo (ou une combinaison) contiennent également des informations pertinentes qui nécessitent une méthode de recherche. C'est là qu'intervient la recherche vectorielle. Elle a été utilisée depuis quelque temps maintenant , et il s'est avéré très utile dans diverses applications, en particulier dans les domaines de l'IA et de l'apprentissage automatique.


Également connue sous le nom de recherche de similarité vectorielle, deux parties sont nécessaires pour élever votre jeu de recherche.


Premièrement, les données brutes doivent être indexées dans une représentation vectorielle (un tableau de nombres) qui sert de description mathématique.


Deuxièmement, les données vectorielles doivent être stockées de manière à ce que les développeurs puissent se demander : "Étant donné une chose, quelles autres choses sont similaires ?" C'est simple et puissant pour les développeurs, difficile à mettre en œuvre à grande échelle côté serveur. C'est là que Cassandra brillera vraiment en servant constamment des données à n'importe quelle échelle dans le monde avec une résilience qui garantit la tranquillité d'esprit.


Il ne s'agit en aucun cas d'une plongée approfondie dans la recherche vectorielle, mais plutôt d'une explication de ce qu'elle peut faire pour votre application en créant une toute nouvelle dimension de données utiles pour réduire la complexité du code et entrer en production plus rapidement avec les utilisateurs de fonctionnalités. vouloir.


Voici des exemples pratiques de recherche de vecteurs dans le monde réel :

  • Récupération d'images basée sur le contenu, où des images visuellement similaires sont identifiées en fonction de leurs vecteurs de caractéristiques. Utiliser une bibliothèque comme img2vec , vous pouvez convertir un fichier image en 512 identifiants uniques pouvant être utilisés pour la recherche de similarité.


  • Systèmes de recommandation, où les produits ou le contenu sont recommandés aux consommateurs en fonction de la similitude avec les éléments avec lesquels ils ont précédemment interagi.


  • Applications de traitement du langage naturel, où les similitudes sémantiques entre le contenu textuel peuvent être identifiées et exploitées pour des tâches telles que l'analyse des sentiments, le regroupement de documents et la modélisation de sujets. Cela se fait généralement à l'aide d'outils tels que word2vec et peut nécessiter l'échelle que Cassandra offre.


  • Utiliser ChatGPT ? La recherche vectorielle est essentielle pour le cas d'utilisation du modèle LLM (Large Language Model) car elle permet un stockage et une récupération efficaces des intégrations vectorielles, représentant les connaissances distillées acquises au cours du processus de formation LLM. En effectuant des recherches de similarité, la recherche vectorielle peut rapidement identifier les incorporations les plus pertinentes correspondant à l'invite d'un utilisateur.


    Cela aide les LLM à générer des réponses plus précises et adaptées au contexte tout en fournissant une forme de mémoire à long terme pour les modèles. Essentiellement, la recherche vectorielle est un pont vital entre les LLM et les vastes bases de connaissances sur lesquelles ils sont formés.


Qu'est-ce qui arrive à Cassandra ?

Le projet Cassandra est dans une quête sans fin pour faire de Cassandra la centrale ultime dans l'univers des bases de données. Comme mentionné précédemment, après avoir converti vos données en vecteurs intégrés, vous aurez besoin d'un endroit pour les stocker et les utiliser. Ces capacités sont ajoutées à Cassandra, exposées de manière simple mais puissante.


Type de données vectorielles

Pour prendre en charge le stockage de vecteurs de grande dimension, nous introduisons un nouveau type de données, ` VECTOR<type, dimension> `. Cela permettra la manutention et le stockage des Float32 les incorporations, qui sont couramment utilisées dans les applications d'IA. Cela a déjà donné lieu à des discussions pour ajouter Cassandra dans des bibliothèques d'IA comme LangChain . Dans cet exemple, imaginez la création d'un vecteur à partir de la description pour permettre une recherche de similarité sémantique.



CREATE TABLE products(

id UUID PRIMARY KEY,

name varchar,

description varchar,

item_vector VECTOR<float, 3>

);



Index de recherche ANN

Nous ajouterons un nouvel index de stockage attaché (SAI) appelé "VectorMemtableIndex", qui prendra en charge la fonctionnalité de recherche approximative du voisin le plus proche (ANN). Cet index fonctionnera conjointement avec le nouveau type de données et la bibliothèque Hierarchical Navigable Small World (HNSW) d'Apache Lucene pour permettre des capacités de recherche vectorielle efficaces dans Cassandra.


CREATE CUSTOM INDEX item_ann_index ON product(item_vector)

USING 'VectorMemtableIndex';


Opérateur ANN en CQL

Pour permettre aux utilisateurs d'effectuer plus facilement des recherches ANN sur leurs données, nous allons introduire un nouvel opérateur Cassandra Query Language (CQL), ANN OF. Cet opérateur permettra aux utilisateurs d'effectuer efficacement des recherches ANN sur leurs données avec une syntaxe de requête simple et familière. Poursuivant l'exemple, les développeurs peuvent demander à la base de données quelque chose de similaire à un vecteur créé à partir d'une description.


SELECT * FROM product WHERE item_vector ANN OF [3.4, 7.8, 9.1]



Mettre en évidence l'extensibilité de Cassandra

Lors de la sortie de Cassandra 4.0, l'un des points forts facilement négligés était le concept de capacité de connexion accrue. La nouvelle fonctionnalité de recherche vectorielle de Cassandra est conçue comme une extension du cadre SAI existant, évitant une réécriture du moteur d'indexation principal. Il utilise le bien connu et largement utilisé Fonctionnalité HNSW dans Lucene, qui fournit une solution rapide et efficace pour trouver les voisins les plus proches approximatifs dans un espace de grande dimension.


Le nouvel ajout de Cassandra 4 met en évidence sa modularité et son extensibilité remarquables. Avec l'intégration de HNSW Lucene et l'expansion du framework SAI, les développeurs peuvent désormais accéder beaucoup plus rapidement à une large gamme de fonctionnalités prêtes pour la production. Les développeurs ont accès à de nombreuses bases de données vectorielles, et nombre d'entre eux préfèrent créer un moteur d'indexation vectorielle avant d'ajouter du stockage. Cassandra s'est attaquée avec succès au problème difficile du stockage de données à grande échelle pendant plus d'une décennie. Nous sommes convaincus que l'inclusion de la recherche de vecteurs dans Cassandra fournira des fonctionnalités encore plus exceptionnelles prêtes pour la production.


Nouveaux cas d'utilisation

Cassandra n'est pas novice en matière d'apprentissage automatique et de charges de travail d'IA. Les utilisateurs de longue date de Cassandra utilisent Cassandra comme magasin de fonctionnalités rapide et efficace depuis des années. On dit même qu'OpenAI utilise beaucoup Cassandra dans la construction de LLM. Ces cas d'utilisation utilisent tous les fonctionnalités existantes de Cassandra. Il y aura plusieurs façons d'utiliser la nouvelle recherche vectorielle. Ce sera excitant de voir ce que notre communauté proposera, mais ils entreront probablement dans deux catégories :


Améliorez un cas d'utilisation existant avec la recherche ANN

Si vous avez déjà une application construite sur Cassandra, vous pouvez améliorer ses capacités en incorporant la recherche ANN ("approximate plus proche voisin"). Par exemple, si vous avez un système de recommandation de contenu, vous pouvez utiliser la recherche ANN pour trouver des articles similaires et améliorer la pertinence de vos recommandations. Les catalogues de produits peuvent dénormaliser les caractéristiques en vecteurs intégrés stockés dans le même enregistrement. La détection des fraudes peut être encore améliorée en mappant les comportements aux fonctionnalités. Pensez à un cas d'utilisation et il est probablement pertinent.

Construire quelque chose de nouveau qui nécessite une recherche vectorielle

Si vous démarrez un nouveau projet qui nécessite des capacités de recherche de similarité rapide, la nouvelle fonction de recherche vectorielle de Cassandra sera un excellent choix pour le stockage et la récupération de données. Savoir que vous pouvez passer de gigaoctets à pétaoctets sur le même système vous permettra de vous concentrer sur la création de votre application et de ne pas vous soucier des compromis. En plus de stocker les vecteurs incorporés, vous bénéficierez de toute la puissance de CQL et du stockage tabulaire d'une base de données complète.


Quelle que soit la façon dont vous consommez Cassandra, ces options seront toutes disponibles. S'il s'agit de votre propre déploiement à l'aide de Cassandra open source, déployé dans Kubernetes à l'aide de K8ssandra ou dans le cloud avec des services comme DataStax Astra DB , vous obtiendrez le même excellent système. La liberté que vous obtenez avec l'open source est la liberté de choisir comment vous construisez vos applications.


Construit par et pour les développeurs

Alors que nous continuons à innover et à étendre les capacités de Cassandra, nous restons déterminés à rester à la pointe de ce dont vous avez besoin en matière de gestion des données. L'introduction de la recherche vectorielle est un nouveau cas d'utilisation passionnant qui rendra vos applications basées sur les données encore plus puissantes et polyvalentes. Ceci, avec certaines des autres fonctionnalités de pointe comme distribué Transactions ACID à grande échelle , fera de Cassandra 5.0 la mise à niveau la plus importante que vous puissiez effectuer. Nous ne nous arrêtons pas là non plus. Les entreprises et les développeurs qui prennent en charge Cassandra travaillent dur pour trouver d'autres moyens de consolider vos données, de simplifier la gestion et d'économiser de l'argent.


Nous sommes convaincus que cet ajout aidera non seulement les développeurs d'IA, mais également les organisations gérant de grands ensembles de données qui peuvent bénéficier d'une recherche rapide de similarité. Gardez donc un œil sur la version alpha de Cassandra avec la fonctionnalité de recherche vectorielle, prévue pour le troisième trimestre. Nous sommes impatients de voir les applications fantastiques que vous créerez avec cette nouvelle fonctionnalité, et nous serions ravis que vous partagiez vos cas d'utilisation avec la communauté sur Planète Cassandre .



Également publié par Patrick McFadin, DataStax ici.