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 gratuitement
  • Qu’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_rbr
    

    2. 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