Weaviate est une base de données vectorielle open source qui stocke des objets de données et leurs embeddings vectoriels, permettant des recherches de similarité rapides. Elle est conçue pour prendre en charge les applications construites sur intelligence artificielle et apprentissage automatique, en particulier celles impliquant des grands modèles de langage et IA générative. Weaviate fournit un schéma de données flexible, prend en charge plusieurs méthodes de recherche, notamment la recherche vectorielle, par mots-clés et hybride, et peut s'intégrer à des modèles d'IA externes pour la génération d'embeddings.
Le projet a été lancé en 2019 par Bob van Luijt et SeMI Technologies, une entreprise néerlandaise. Il a été publié sous licence BSD-3-Clause, le rendant librement disponible pour un usage commercial et de recherche. Weaviate a gagné en adoption parmi les développeurs créant des systèmes de génération augmentée par récupération (RAG), des moteurs de recherche sémantique et des moteurs de recommandation, et il est souvent déployé aux côtés de OpenAI et d'autres fournisseurs de modèles.
Architecture et fonctionnalités principales
Weaviate est construit en Go et utilise une combinaison d'index inversés et de graphes HNSW (Hierarchical Navigable Small World) pour un indexage vectoriel efficace. L'algorithme HNSW permet des recherches approximatives des plus proches voisins, essentielles pour traiter des ensembles de données à grande échelle avec une faible latence. La base de données prend en charge à la fois les vecteurs denses (provenant de modèles comme text-embedding-ada-002) et les vecteurs épars (basés sur BM25), permettant une recherche hybride qui combine pertinence sémantique et lexicale.
Une fonctionnalité clé est son approche basée sur un schéma, où les utilisateurs définissent des classes et des propriétés, similaire à une base de données graphe. Cela permet un filtrage structuré combiné à la recherche vectorielle, comme le filtrage par métadonnées avant d'effectuer une requête de similarité. Weaviate prend également en charge la multi-tenance, la réplication et le partitionnement pour une mise à l'échelle horizontale, ce qui le rend adapté aux charges de travail de production.
Intégration avec l'écosystème de l'IA
Weaviate est conçu pour fonctionner de manière transparente avec l'écosystème plus large de l'IA. Il fournit des modules pour vectoriser des données à l'aide de modèles de fournisseurs comme OpenAI, Anthropic, Google DeepMind et Cohere, ainsi que des modèles locaux via des bibliothèques telles que Hugging Face Transformers. Cela permet aux développeurs de générer des embeddings sans gérer une infrastructure séparée.
Pour les applications d'IA générative, Weaviate inclut un module de recherche générative qui peut récupérer des objets pertinents et les transmettre à un grand modèle de langage pour générer des réponses ou des résumés. Cette capacité sous-tend de nombreux pipelines RAG, où la base de données agit comme la base de connaissances. Weaviate prend également en charge l'intégration avec Amazon Web Services, Azure et Google Cloud pour le déploiement cloud, et peut être exécuté sur CoreWeave et d'autres plateformes accélérées par GPU pour des charges de travail haute performance.
Déploiement et gestion
Weaviate peut être déployé de plusieurs manières : en tant que service auto-hébergé utilisant Docker ou Kubernetes, en tant que service cloud géré (Weaviate Cloud Services, WCS), ou en tant que bibliothèque intégrée dans des applications Python ou Go. Le service géré offre des sauvegardes automatisées, une mise à l'échelle et une surveillance, tandis que l'auto-hébergement offre un contrôle total sur l'infrastructure.
La base de données inclut une API GraphQL pour les requêtes, qui prend en charge à la fois les recherches vectorielles et par mots-clés dans une seule requête. Elle offre également une API RESTful pour la gestion du schéma et les opérations de données. Weaviate fournit des bibliothèques clientes pour Python, JavaScript, Java, Go et d'autres langages, simplifiant l'intégration dans les applications existantes.
Cas d'utilisation et performances
Les cas d'utilisation courants incluent la recherche sémantique pour le commerce électronique, la récupération de documents pour les bases de connaissances d'entreprise, la détection d'anomalies en cybersécurité et les systèmes de recommandation personnalisés. La capacité de recherche hybride de Weaviate est particulièrement appréciée dans les scénarios où les correspondances exactes de mots-clés sont importantes, comme la récupération de documents juridiques ou médicaux.
Les benchmarks de performance indiquent que Weaviate peut gérer des millions d'objets avec des latences de requête inférieures à 100 ms sur du matériel standard, bien que les chiffres exacts dépendent des dimensions vectorielles, des paramètres d'index et du matériel. La base de données prend en charge le filtrage sur les propriétés indexées avant la recherche vectorielle, ce qui peut réduire considérablement l'espace de recherche et améliorer la vitesse.
Communauté et développement
Weaviate est activement développé par une équipe centrale chez SeMI Technologies, avec des contributions d'une communauté mondiale. Le projet maintient une feuille de route publique et publie des mises à jour régulières, avec la version 1.0 sortie en 2021. En 2024, Weaviate fait partie du paysage IA et données de la Linux Foundation, reflétant son rôle dans la pile d'infrastructure open source de l'IA.
La communauté fournit une documentation extensive, des tutoriels et des exemples, et le projet dispose d'un canal Slack dédié pour le support des développeurs. Le code source de Weaviate est disponible sur GitHub, et il a reçu des contributions d'ingénieurs d'entreprises comme Samsung Electronics et Intel, indiquant sa pertinence intersectorielle.
Comparaison avec d'autres bases de données vectorielles
Weaviate concurrence d'autres bases de données vectorielles telles que Pinecone, Milvus et Qdrant. Contrairement à Pinecone, qui est propriétaire, Weaviate est entièrement open source. Comparé à Milvus, Weaviate offre un schéma plus intégré et une interface GraphQL, tandis que Milvus se concentre sur l'indexation distribuée haute performance. Qdrant est similaire en étant open source mais utilise une approche d'indexation différente et a un noyau basé sur Rust.
La force de Weaviate réside dans sa facilité d'utilisation, ses modules intégrés pour l'intégration de l'IA et ses capacités de recherche hybride. Il est souvent choisi par les startups et les entreprises qui nécessitent une solution flexible et auto-hébergeable avec un fort support communautaire.
Orientations futures
La feuille de route de développement inclut des améliorations des algorithmes d'indexation, une prise en charge accrue des données multimodales (images, audio, vidéo) et une intégration plus étroite avec les frameworks de apprentissage profond. L'équipe explore également des fonctionnalités pour l'inférence automatique de schéma et une meilleure gestion des données en streaming. Alors que la demande pour la recherche basée sur les réseaux de neurones croît, Weaviate vise à rester une option open source de premier plan dans l'espace des bases de données vectorielles.