Lexique · Frameworks / outils IA

Weaviate : définition, fonctionnement et auto-hébergement

La base de données vectorielle open source que l'on peut héberger soi-même ou en service managé : collections, vectorisation intégrée, recherche hybride, multi-tenancy et exemple avec le client Python v4.

Par Équipe Blent· Mis à jour le · 14 min de lecture· Niveau intermédiaire

Weaviate en bref

Type
Base de données vectorielle open source
Éditeur
Weaviate, Amsterdam (ex-SeMI Technologies)
Licence
BSD-3-Clause
Langage
Go
Déploiement
Docker, Kubernetes ou Weaviate Cloud
API
REST, GraphQL, gRPC
Points forts
Recherche hybride, vectorisation intégrée, multi-tenancy

Définition : Weaviate

Weaviate est une base de données vectorielle open source, publiée sous licence BSD-3-Clause par l'entreprise néerlandaise du même nom. Elle stocke des objets, leurs propriétés et leurs vecteurs dans des collections, et permet de les retrouver par similarité sémantique, par mots-clés ou par une combinaison des deux, avec des filtres sur les propriétés. Des modules intégrés peuvent calculer les embeddings à l'import et à la requête en appelant un fournisseur de modèles. Weaviate s'installe sur ses propres serveurs avec Docker ou Kubernetes, ou s'utilise en service managé, ce qui en fait une brique fréquente des systèmes RAG qui doivent garder la maîtrise de leurs données.

En une phrase : Weaviate est une base vectorielle open source qui combine recherche sémantique et recherche par mots-clés, et que vous pouvez héberger vous-même.

Dans cette définition

Qu'est-ce que Weaviate ?

Weaviate est une base de données conçue pour stocker des objets accompagnés de leurs vecteurs, et pour les retrouver par proximité de sens. Chaque objet porte des propriétés classiques (titre, contenu, date, catégorie) et un ou plusieurs embeddings. On peut ensuite chercher les objets les plus proches d'une question, filtrer sur leurs propriétés et combiner cette recherche avec une recherche par mots-clés.

Le projet est développé par l'entreprise néerlandaise Weaviate, basée à Amsterdam et cofondée notamment par Bob van Luijt. Elle s'appelait SeMI Technologies jusqu'en 2023, avant d'adopter le nom de son produit phare. Le moteur est écrit en Go et publié sous licence BSD-3-Clause, une licence permissive qui autorise l'usage commercial et l'auto-hébergement sans contrainte. L'éditeur finance le projet par une offre managée, Weaviate Cloud.

Ce double modèle est la clé de son positionnement. Là où Pinecone n'existe qu'en service managé, Weaviate peut tourner sur un poste de développement avec Docker, sur un cluster Kubernetes dans votre cloud ou votre centre de données, ou chez l'éditeur. C'est souvent ce qui le fait retenir pour les projets RAG soumis à des exigences de souveraineté ou de confidentialité.

À retenir : Weaviate n'est pas seulement un index de vecteurs. Il stocke les objets complets, peut calculer leurs embeddings lui-même et combine nativement recherche sémantique et recherche lexicale.

Comment fonctionne Weaviate ?

Mettre en place Weaviate suit cinq étapes, du déploiement de l'instance jusqu'à la génération de réponses à partir des objets retrouvés.

  1. Déployer l'instance

    Un conteneur Docker suffit pour démarrer. En production, Weaviate tourne sur Kubernetes avec un chart Helm officiel, ou sur Weaviate Cloud, l'offre managée de l'éditeur.

  2. Définir une collection

    Une collection regroupe des objets de même nature. On y déclare les propriétés et leur type, le module de vectorisation, le type d'index vectoriel et, si besoin, la multi-tenancy.

  3. Importer les objets

    Les objets sont envoyés par lots. Si un module de vectorisation est configuré, Weaviate calcule lui-même les embeddings ; sinon, on fournit les vecteurs déjà calculés.

  4. Interroger

    Trois modes de recherche coexistent : par similarité vectorielle, par mots-clés avec BM25, ou hybride. Tous acceptent des filtres sur les propriétés et une limite de résultats.

  5. Générer

    Un module génératif peut transmettre les objets retrouvés à un LLM et renvoyer sa réponse dans la même requête, ce qui constitue un RAG minimal intégré à la base.

Exemple : une collection vectorisée et une recherche hybride

L'exemple suivant crée une collection d'articles de base de connaissances, laisse Weaviate calculer les embeddings avec un modèle OpenAI, puis lance une recherche hybride filtrée. Il utilise le client Python v4 (paquet weaviate-client), qui communique avec le serveur en gRPC, et la syntaxe de configuration vector_config des versions récentes du client.

python
import os

import weaviate
from weaviate.classes.config import Configure, DataType, Property
from weaviate.classes.query import Filter

client = weaviate.connect_to_local(
    headers={"X-OpenAI-Api-Key": os.environ["OPENAI_API_KEY"]}
)

try:
    # 1. Collection : propriétés typées et vectorisation automatique
    if not client.collections.exists("Article"):
        client.collections.create(
            "Article",
            vector_config=Configure.Vectors.text2vec_openai(model="text-embedding-3-small"),
            properties=[
                Property(name="titre", data_type=DataType.TEXT),
                Property(name="contenu", data_type=DataType.TEXT),
                Property(name="categorie", data_type=DataType.TEXT),
            ],
        )
    articles = client.collections.use("Article")

    # 2. Import par lots : Weaviate calcule les embeddings
    documents = [
        {"titre": "Télétravail", "contenu": "Les cadres peuvent télétravailler deux jours par semaine.", "categorie": "RH"},
        {"titre": "Notes de frais", "contenu": "Les notes de frais sont remboursées sous 30 jours.", "categorie": "Finance"},
        {"titre": "Accord QVT-2026", "contenu": "L'accord QVT-2026 précise les règles de déconnexion.", "categorie": "RH"},
    ]
    with articles.batch.dynamic() as batch:
        for doc in documents:
            batch.add_object(properties=doc)

    # 3. Recherche hybride : BM25 et vecteurs, pondérés par alpha
    response = articles.query.hybrid(
        query="combien de jours de télétravail pour les cadres",
        alpha=0.5,
        limit=3,
        filters=Filter.by_property("categorie").equal("RH"),
    )
    for obj in response.objects:
        print(obj.properties["titre"])
finally:
    client.close()

La recherche hybride trouve l'article sur le télétravail par le sens de la question, mais retrouverait aussi l'accord QVT-2026 sur une requête contenant sa référence exacte, là où une recherche purement vectorielle peut échouer. Le paramètre alpha règle l'équilibre entre les deux. Les mêmes objets peuvent être exploités par LlamaIndex ou LangChain, qui disposent d'intégrations Weaviate, pour construire le reste du pipeline RAG.

Déployer Weaviate : auto-hébergé, managé ou local

Weaviate propose plusieurs modes de déploiement, avec la même API dans tous les cas.

  • Docker : un conteneur unique pour le développement et les petits volumes. Un fichier Docker Compose suffit à décrire l'instance et ses modules.
  • Kubernetes : la cible de production auto-hébergée, avec un chart Helm officiel. Le cluster répartit les collections en shards sur plusieurs nœuds et les réplique pour la haute disponibilité.
  • Weaviate Cloud : l'offre managée de l'éditeur, qui prend en charge l'exploitation, les mises à jour et les sauvegardes.
  • Mode embarqué : une instance lancée directement depuis le code Python, pratique pour des tests.

Voici un fichier Docker Compose minimal pour un environnement de développement. La version de l'image est volontairement fournie par une variable : en production, on fixe toujours une version précise.

yaml
services:
  weaviate:
    image: cr.weaviate.io/semitechnologies/weaviate:${WEAVIATE_VERSION}
    ports:
      - "8080:8080"    # API REST et GraphQL
      - "50051:50051"  # gRPC, utilisé par le client Python v4
    environment:
      PERSISTENCE_DATA_PATH: "/var/lib/weaviate"
      ENABLE_MODULES: "text2vec-openai,generative-openai"
      AUTHENTICATION_ANONYMOUS_ACCESS_ENABLED: "true"  # développement uniquement
      CLUSTER_HOSTNAME: "node1"
    volumes:
      - weaviate_data:/var/lib/weaviate
volumes:
  weaviate_data:

En auto-hébergé, plusieurs réglages pèsent directement sur la facture et la performance. L'index vectoriel par défaut, HNSW, est un graphe conservé en mémoire : sa taille croît avec le nombre et la dimension des vecteurs. Les techniques de compression (quantification des vecteurs) réduisent fortement cette empreinte. Pour les petites collections, notamment les tenants peu volumineux, un index plat sans graphe suffit.

Recherche hybride et multi-tenancy

Deux fonctionnalités justifient souvent le choix de Weaviate. La recherche hybride exécute en parallèle une recherche BM25 et une recherche vectorielle, puis fusionne leurs scores. Le principe de fusion est proche de celui décrit dans notre article sur la Reciprocal Rank Fusion. La multi-tenancy attribue à chaque tenant son propre shard au sein d'une collection : les données d'un client sont physiquement isolées, et un tenant inactif peut être déchargé de la mémoire. C'est l'outil adapté pour un SaaS qui sert des milliers de clients avec une seule collection.

À quoi sert Weaviate ?

Weaviate convient aux applications qui doivent retrouver des contenus par le sens, tout en gardant la main sur l'hébergement des données.

  • RAG souverain

    Un assistant documentaire dont les données restent sur votre infrastructure ou votre cloud.

  • Recherche hybride

    Un moteur qui trouve à la fois les reformulations et les références exactes (codes, noms).

  • SaaS multi-clients

    Un tenant par client, isolé physiquement, activable ou désactivable à la demande.

  • Recherche multimodale

    Rechercher des images à partir d'un texte, ou l'inverse, avec un vectoriseur multimodal.

  • Catalogue e-commerce

    Combiner similarité sémantique et filtres sur le prix, la marque ou le stock.

  • Environnement isolé

    Un RAG entièrement local, avec des modèles servis par Ollama, sans appel externe.

Quels sont les avantages de Weaviate ?

Weaviate se distingue par la combinaison d'un cœur open source et de fonctionnalités intégrées qui simplifient le pipeline.

  • Open source sous licence permissive : auto-hébergement libre et absence de dépendance à un fournisseur.
  • Recherche hybride native, sans moteur de recherche lexical à ajouter.
  • Modules de vectorisation et de génération intégrés pour raccourcir le pipeline RAG.
  • Multi-tenancy native, avec une isolation par tenant et une gestion fine des ressources.
  • Même API en local, sur vos serveurs et en service managé : migration possible dans les deux sens.
  • Réglages avancés accessibles : type d'index, compression des vecteurs, réplication.

Quelles sont les limites de Weaviate ?

La liberté d'hébergement a un revers : en auto-hébergé, toute l'exploitation repose sur votre équipe.

  • Exploitation à votre charge en auto-hébergé : mises à jour, sauvegardes, supervision, montée en charge.
  • L'index vectoriel HNSW consomme beaucoup de mémoire sans compression des vecteurs.
  • Le client Python a connu des changements d'API importants : de nombreux exemples en ligne sont obsolètes.
  • Le dimensionnement d'un cluster (shards, réplicas, mémoire) demande de l'expérience.
  • Les modules de vectorisation intégrés masquent des appels payants à des fournisseurs externes.

Weaviate vs Pinecone : quelles différences ?

La fiche Pinecone compare les bases vectorielles sous l'angle du service managé. Ici, la question est inverse : que gagne-t-on, et que doit-on assumer, en choisissant une base open source que l'on peut héberger soi-même ?

CritèreWeaviatePinecone
Code sourceOuvert, licence BSD-3-ClauseFermé
Localisation des donnéesOù vous le décidez : poste, serveurs, cloud, éditeurCloud de l'éditeur, dans la région choisie
ExploitationPar votre équipe, ou déléguée à Weaviate CloudEntièrement prise en charge par l'éditeur
RéglagesIndex, compression, shards, réplication accessiblesPeu de réglages, choix faits par le service
VectorisationModules intégrés vers de nombreux fournisseursModèles hébergés par Pinecone ou vecteurs fournis
Fonctionnement hors lignePossible avec des modèles locauxImpossible
RéversibilitéChangement d'hébergement sans changer d'APIMigration complète vers un autre produit

Le bon choix dépend des compétences de l'équipe autant que des contraintes. Une équipe qui exploite déjà des conteneurs sur Kubernetes intégrera Weaviate sans difficulté et gardera la maîtrise complète de ses données. Une équipe sans compétence d'exploitation gagnera du temps avec un service managé, qu'il s'agisse de Pinecone ou de Weaviate Cloud.

Quand choisir Weaviate ?

Le critère principal est le contrôle : où doivent vivre les données, et qui exploite la base ?

Pertinent si

Vous voulez maîtriser vos données

  • Les données doivent rester sur votre infrastructure ou dans votre cloud.
  • Vous exigez une solution open source et réversible.
  • La recherche hybride est indispensable à la qualité des résultats.
  • L'équipe sait exploiter des conteneurs sur Docker ou Kubernetes.
Moins adapté si

Une autre option sera plus simple

  • Personne ne peut exploiter une base de données en production.
  • Le corpus est petit et PostgreSQL est déjà en place : pgvector suffit.
  • Vous voulez une offre entièrement managée sans aucun réglage.
  • Le besoin se limite à un prototype en mémoire.

Outils et alternatives autour de Weaviate

Weaviate s'intègre à l'écosystème des frameworks LLM et des outils d'infrastructure, et se compare à plusieurs bases vectorielles.

Les concepts à connaître pour utiliser Weaviate

Ces notions éclairent la façon dont Weaviate stocke, indexe et retrouve les objets.

Ressources pour approfondir Weaviate

Trois articles du blog Blent pour concevoir un RAG auto-hébergé et améliorer sa recherche.

Questions fréquentes

Questions fréquentes

Le logiciel est open source et gratuit, y compris pour un usage commercial, sous licence BSD-3-Clause. En auto-hébergé, vous payez uniquement l'infrastructure. Weaviate Cloud, l'offre managée de l'éditeur, est payante au-delà d'un essai gratuit.

Expertise

À propos de l'auteur

Équipe Blent

Les ingénieurs et mentors Blent conçoivent, évaluent et mettent en production des applications LLM, et forment chaque année des centaines de professionnels à l'IA générative.

Sources et méthodologie

  • Documentation officielle Weaviate (collections, recherche hybride, multi-tenancy)
  • Documentation du client Python Weaviate v4
  • Retours d'expérience des projets et formations Blent