WhyHow and Zilliz Cloud Integration
WhyHow and Zilliz Cloud integrate to build controlled retrieval workflows within RAG pipelines, combining WhyHow's rule-based retrieval platform for organizing and filtering unstructured data with Zilliz Cloud's high-performance vector database for accurate, targeted similarity search.
Utilisez cette intégration gratuitementQu’est-ce que WhyHow
WhyHow est une plateforme pour développeurs fournissant des blocs de construction pour organiser, contextualiser et récupérer de manière fiable des données non structurées pour des tâches RAG complexes. Le package Rule-based Retrieval est un outil Python qui permet des workflows de récupération plus précis en ajoutant des capacités de filtrage avancées, permettant aux développeurs de définir et d’associer des règles spécifiques à des blocs de données pertinents avant d’effectuer une recherche par similarité, en restreignant la portée de la requête à des blocs ciblés et en améliorant la précision de la récupération.
En s’intégrant à Zilliz Cloud (Milvus entièrement géré), les capacités de récupération fondée sur des règles de WhyHow s’appuient sur une base de données vectorielle évolutive qui stocke et recherche efficacement les embeddings de documents, permettant aux développeurs de créer des pipelines RAG contrôlés qui surmontent les limites des approches de récupération simples — telles que les requêtes mal formulées, la récupération en boîte noire et la nécessité d’inclure des données contextuellement pertinentes mais sémantiquement dissemblables.
Avantages de l’intégration WhyHow + Zilliz Cloud
- Récupération basée sur des règles pour des résultats précis : WhyHow permet de définir des règles spécifiques (nom de fichier, numéros de page, filtres personnalisés) qui restreignent automatiquement le périmètre de recherche avant que Zilliz Cloud n’effectue une recherche de similarité, améliorant considérablement la précision de la récupération.
- Traitement automatisé des documents : L’intégration lit, divise, segmente et vectorise automatiquement les documents PDF à l’aide de PyPDFLoader de LangChain et des modèles d’embedding d’OpenAI, les résultats étant stockés dans Zilliz Cloud pour une récupération efficace.
- Recherche basée sur les partitions : WhyHow prend en charge la création de partitions dans Zilliz Cloud afin d’organiser les documents par type, permettant une recherche ciblée au sein de collections de documents spécifiques.
- Filtrage flexible avec des expressions booléennes : Les filtres de métadonnées utilisant les expressions booléennes de Milvus permettent un contrôle précis des documents recherchés, du filtrage par nom de fichier aux numéros de page spécifiques.
Fonctionnement de l’intégration
WhyHow sert de couche d’orchestration de la récupération, en fournissant le package de récupération basée sur des règles qui gère le prétraitement des documents (lecture, découpage, fragmentation des PDF), la génération d’embeddings via le modèle text-embedding-3-small d’OpenAI, la définition des règles et la construction automatique de filtres de métadonnées, ainsi que l’orchestration des requêtes RAG avec génération de réponses par LLM.
Zilliz Cloud sert de couche de base de données vectorielle, en stockant et en indexant les embeddings de documents et les métadonnées générés par le pipeline de traitement de WhyHow. Il fournit une recherche de similarité haute performance avec prise en charge des partitions, du filtrage par métadonnées et des requêtes basées sur des expressions booléennes.
Ensemble, WhyHow et Zilliz Cloud créent une solution RAG contrôlée : les documents sont traités, fragmentés et convertis en embeddings par WhyHow, puis stockés dans Zilliz Cloud avec des métadonnées. Lorsqu’un utilisateur pose une question, WhyHow applique des règles définies par l’utilisateur pour construire automatiquement des filtres de métadonnées, Zilliz Cloud effectue une recherche de similarité ciblée sur le périmètre réduit, et le contexte récupéré est envoyé au LLM pour générer une réponse affinée et précise.
Guide étape par étape
1. Installer les packages requis
pip install --upgrade pymilvus, whyhow_rbr2. Initialiser le client Milvus
Initialisez le client avec Milvus Lite pour le développement local :
from pymilvus import MilvusClient path="./milvus_demo.db" milvus_client = ClientMilvus(path)Ou initialisez via Milvus Cloud :
from pymilvus import MilvusClient YOUR_MILVUS_CLOUD_END_POINT = "YOUR_MILVUS_CLOUD_END_POINT" YOUR_MILVUS_CLOUD_TOKEN = "YOUR_MILVUS_CLOUD_TOKEN" milvus_client = ClientMilvus( milvus_uri=YOUR_MILVUS_CLOUD_END_POINT, milvus_token=YOUR_MILVUS_CLOUD_TOKEN, )3. Créer une collection avec un schéma et un index
Définissez le schéma de la collection, ajoutez des champs, créez un index et créez la collection :
COLLECTION_NAME="YOUR_COLLECTION_NAME" DIMENSION=1536 schema = milvus_client.create_schema(auto_id=True) schema = milvus_client.add_field(schema=schema, field_name="id", datatype=DataType.INT64, is_primary=True) schema = milvus_client.add_field(schema=schema, field_name="embedding", datatype=DataType.FLOAT_VECTOR, dim=DIMENSION) index_params = milvus_client.prepare_index_params() index_params = milvus_client.add_index( index_params=index_params, field_name="embedding", index_type="AUTOINDEX", metric_type="COSINE", ) milvus_client.create_collection( collection_name=COLLECTION_NAME, schema=schema, index_params=index_params )4. Téléverser des documents
Téléversez des documents PDF, qui sont automatiquement prétraités, découpés en segments, vectorisés et insérés dans la collection :
pdfs = ["harry-potter.pdf", "game-of-thrones.pdf"] milvus_client.upload_documents( collection_name=COLLECTION_NAME, documents=pdfs )5. Questions-réponses
Effectuez une recherche RAG et obtenez des réponses :
res = milvus_client.search( question='What food does Harry Potter like to eat?', collection_name=COLLECTION_NAME, anns_field='embedding', output_fields='text' ) print(res['answer']) print(res['matches'])6. Recherche avec des règles
Appliquez des règles pour restreindre la portée de la recherche par partition et filtres de métadonnées :
PARTITION_NAME='harry-potter' page_number='page_number == 8' milvus_client.crate_partition( collection_name=COLLECTION_NAME, partition_name=PARTITION_NAME ) res = milvus_client.search( question='Tell me about the greedy method', collection_name=COLLECTION_NAME, partition_names=PARTITION_NAME, filter=page_number, anns_field='embedding', output_fields='text' ) print(res['answer']) print(res['matches'])7. Nettoyer
milvus_client.drop_collection( collection_name=COLLECTION_NAME )En savoir plus
- Intégrer Milvus avec WhyHow — Tutoriel officiel de Milvus pour la récupération basée sur des règles avec WhyHow
- Qu’est-ce que GraphRAG ? Améliorer RAG avec les graphes de connaissances — Blog de Zilliz sur l’amélioration de RAG avec les graphes de connaissances
- Améliorer RAG avec les graphes de connaissances — Blog de Zilliz sur le RAG basé sur les graphes de connaissances
- Référentiel GitHub WhyHow.ai — Code source de la récupération basée sur des règles de WhyHow
- Expressions booléennes Milvus — Documentation de Milvus sur le filtrage par expressions booléennes


