Dans le paysage en évolution rapide de l'intelligence artificielle et de la récupération de données, se fier uniquement aux embeddings vectoriels est devenu un goulot d'étranglement pour de nombreux développeurs. Bien que la recherche sémantique excelle à capturer le sens d'une requête, elle peine souvent avec les mots-clés spécifiques, les noms de marque ou le jargon technique. C'est ici que Weaviate brille, en offrant une solution robuste grâce à sa fonctionnalité de recherche hybride. En fusionnant le meilleur des deux mondes — similarité vectorielle et correspondance de mots-clés — les développeurs peuvent obtenir une précision de récupération nettement supérieure.
Pourquoi la recherche hybride est importante
Pour comprendre la proposition de valeur, nous devons d'abord reconnaître les limites de la recherche vectorielle pure. Les bases de données vectorielles traditionnelles convertissent le texte en tableaux de grande dimension. Si un utilisateur interroge « iPhone 15 Pro Max », un système basé sur des vecteurs pourrait avoir du mal s'il n'a pas vu cette séquence exacte lors de l'entraînement, risquant de retourner des résultats génériques sur les smartphones plutôt que l'appareil spécifique. Inversement, une recherche basée sur les mots-clés (comme BM25) gère parfaitement les correspondances exactes mais échoue à comprendre les synonymes ou l'intention.
La recherche hybride de Weaviate résout ce problème en combinant deux mécanismes de notation :
- Recherche sémantique : Utilise des embeddings vectoriels pour trouver des éléments conceptuellement similaires.
- Recherche par mots-clés : Utilise des algorithmes d'index inversé (similaires à Elasticsearch) pour trouver des correspondances de termes exacts.
Ces scores sont ensuite normalisés et combinés à l'aide d'une moyenne pondérée, vous permettant d'ajuster l'équilibre entre la compréhension sémantique et la précision des mots-clés exacts.
Mise en œuvre de la recherche hybride dans Weaviate
La mise en œuvre de la recherche hybride est simple, grâce aux clients Python et JavaScript de Weaviate. Voici un exemple pratique utilisant Python. La clé réside dans le paramètre hybrid au sein des méthodes with_near_text ou des méthodes de recherche hybride directes.
import weaviate
# Connectez-vous à votre instance Weaviate
client = weaviate.Client(url="http://localhost:8080")
# Définissez la classe (assurez-vous que la propriété 'content' est configurée pour la recherche de texte)
class_name = "Article"
# La requête de recherche hybride
query = "Weaviate vector database hybrid search features"
# Exécutez la recherche hybride avec un poids de 0,5 pour le sémantique et 0,5 pour les mots-clés
result = (
client.query
.get(class_name, ["title", "content", "score"])
.with_hybrid(
query=query,
vector=[0.1, 0.2, 0.3], # Optionnel : vecteur spécifique si vous utilisez un cross-encoder
alpha=0.5, # Poids pour l'hybride (0 = mots-clés uniquement, 1 = vecteur uniquement)
limit=10
)
.do()
)
# Inspectez les résultats
print(result)
Dans l'extrait de code ci-dessus, le paramètre alpha est crucial. Définir alpha=0.5 attribue un poids égal au score vectoriel sémantique et au score de mots-clés BM25. Vous pouvez ajuster cette valeur en fonction de votre cas d'utilisation spécifique. Par exemple, dans un système de récupération de documents juridiques, vous pourriez préférer un alpha plus élevé pour prioriser la terminologie juridique exacte, tandis qu'un assistant d'écriture créative pourrait favoriser un alpha plus faible pour capturer des thèmes conceptuels plus larges.
Cas d'utilisation pratiques et avantages
La flexibilité de la recherche hybride ouvre de nombreuses possibilités pour les développeurs d'applications. Voici deux scénarios courants où l'approche de Weaviate apporte une valeur distincte :
1. Recherche de produits de commerce électronique
Considérons un utilisateur recherchant « Nike Air Max 90 ». Une recherche purement sémantique pourrait retourner d'autres baskets rouges si l'embedding est biaisé vers la couleur. Cependant, une recherche hybride garantit que « Nike », « Air Max » et « 90 » sont traités comme des mots-clés critiques, tout en permettant des variations sémantiques comme « chaussures de course classiques » si les mots-clés sont légèrement incorrects.
2. Documentation technique
Lors de la recherche dans la documentation API, des noms de fonctions spécifiques comme get_user_data() ne sont pas riches sémantiquement mais sont précis lexicographiquement. La recherche hybride garantit que ces identifiants techniques sont récupérés instantanément, tout en permettant des requêtes en langage naturel comme « comment récupérer les informations utilisateur » pour trouver les blocs de documentation pertinents.
Conclusion
La recherche hybride de Weaviate n'est pas seulement une fonctionnalité ; c'est un changement fondamental dans notre approche de la récupération de données à l'ère des LLM et de la compréhension sémantique. En permettant aux développeurs d'affiner l'équilibre entre le sens et la précision, Weaviate permet aux applications de fournir des expériences de recherche à la fois intelligentes et précises. Pour les développeurs intermédiaires et avancés souhaitant construire des applications IA de qualité production, maîtriser cette capacité est essentiel pour créer des moteurs de recherche robustes et conviviaux.