Implémenter le RAG sur les PDFs avec File Search dans l'API Responses

Anis MarrouchiAI Bot
Par Anis Marrouchi & AI Bot ·

Chargement du lecteur de synthèse vocale...

Dans le domaine de l'intelligence artificielle, la capacité de rechercher et récupérer efficacement des informations à partir de documents PDF est inestimable. L'API Responses, avec sa fonctionnalité de recherche de fichiers, simplifie le processus de génération augmentée par récupération (RAG), le rendant plus accessible et moins fastidieux. Cet article vous guide à travers les étapes nécessaires pour implémenter le RAG sur les PDFs en utilisant l'API Responses.

Configuration de votre environnement

Avant de plonger dans l'implémentation, assurez-vous que votre environnement est correctement configuré. Installez les packages Python requis :

pip install PyPDF2 pandas tqdm openai -q

Création d'un Vector Store

La première étape consiste à créer un vector store sur l'API OpenAI et à y télécharger vos PDFs. Ce processus implique la lecture des PDFs, la séparation du contenu en chunks, l'exécution des embeddings sur ces chunks et leur stockage dans le vector store.

from openai import OpenAI
from concurrent.futures import ThreadPoolExecutor
from tqdm import tqdm
import concurrent
import PyPDF2
import os
import pandas as pd
import base64
 
client = OpenAI(api_key=os.getenv('OPENAI_API_KEY'))

Téléchargement des PDFs vers le Vector Store

Une fois l'environnement configuré, l'étape suivante consiste à télécharger vos PDFs vers le vector store. Cela implique la lecture de chaque PDF, l'extraction du texte et le téléchargement des chunks de texte vers le vector store.

def upload_single_pdf(file_path: str, vector_store_id: str):
    file_name = os.path.basename(file_path)
    try:
        file_response = client.files.create(file=open(file_path, 'rb'), purpose="assistants")
        attach_response = client.vector_stores.files.create(
            vector_store_id=vector_store_id,
            file_id=file_response.id
        )
        return {"file": file_name, "status": "success"}
    except Exception as e:
        print(f"Erreur avec {file_name}: {str(e)}")
        return {"file": file_name, "status": "failed", "error": str(e)}

Interrogation du Vector Store

Une fois vos PDFs téléchargés, vous pouvez interroger le vector store pour récupérer le contenu pertinent basé sur des requêtes spécifiques. C'est là que la puissance du RAG brille vraiment, permettant une récupération d'informations efficace.

query = "Qu'est-ce que Deep Research ?"
search_results = client.vector_stores.search(
    vector_store_id=vector_store_details['id'],
    query=query
)

Intégration des résultats de recherche avec le LLM

Pour améliorer davantage l'utilité des informations récupérées, vous pouvez intégrer les résultats de recherche avec un modèle de langage (LLM) en un seul appel API. Cette intégration transparente permet des requêtes et des réponses plus sophistiquées.

response = client.responses.create(
    input= query,
    model="gpt-4o-mini",
    tools=[{
        "type": "file_search",
        "vector_store_ids": [vector_store_details['id']],
    }]
)

Évaluation des performances

Évaluer les performances de votre implémentation RAG est crucial. Cela implique la génération d'un dataset d'évaluation, le calcul de différentes métriques et la garantie de la pertinence et de la qualité des informations récupérées.

def generate_questions(pdf_path):
    text = extract_text_from_pdf(pdf_path)
 
    prompt = (
        "Pouvez-vous générer une question qui ne peut être répondue qu'à partir de ce document ?:\n"
        f"{text}\n\n"
    )
 
    response = client.responses.create(
        input=prompt,
        model="gpt-4o",
    )
 
    question = response.output[0].content[0].text
 
    return question

En suivant ces étapes, vous pouvez implémenter un système RAG robuste utilisant l'API Responses, simplifiant significativement le processus de recherche et de récupération d'informations à partir de documents PDF.

Référence : OpenAI Blog par Pierre-Antoine Porte


Vous voulez lire plus de tutoriels? Découvrez notre dernier tutoriel sur Accelerez le Succes de Votre Application : Construire et Executer avec Firebase.

Discutez de votre projet avec nous

Nous sommes ici pour vous aider avec vos besoins en développement Web. Planifiez un appel pour discuter de votre projet et comment nous pouvons vous aider.

Trouvons les meilleures solutions pour vos besoins.

Articles connexes