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

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 -qCré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 questionEn 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
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

Creer un Podcast a partir d'un PDF avec Vercel AI SDK et LangChain
Apprenez a creer un podcast a partir d'un PDF en utilisant Vercel AI SDK, PDFLoader de LangChain, ElevenLabs et Next.js.

Embeddings d'articles Wikipedia pour la recherche
Un guide sur la préparation d'articles Wikipedia pour la recherche en utilisant les embeddings.
Améliorer l'efficacité du service client : Exploiter les appels d'outils obligatoires dans ChatCompletion
Découvrez comment les appels d'outils obligatoires dans ChatCompletion peuvent améliorer l'efficacité du service client en fournissant des réponses cohérentes et des workflows rationalisés.