À propos du projet

PaperQA2 est un package Python open-source et un outil CLI conçu pour la génération augmentée par récupération (RAG) haute précision sur la littérature scientifique et d'autres types de documents. Il ingère des PDF, du texte brut, du Markdown, du HTML, des fichiers Microsoft Office (docx, xlsx, pptx) et des fichiers de code source, puis répond aux questions des utilisateurs avec des citations contextuelles pointant vers des pages et passages spécifiques. Le système suit un workflow agentique en trois phases : (1) Recherche de documents, où un LLM génère des requêtes par mots-clés pour trouver des documents candidats et les découpe en un index de recherche en texte intégral local ; (2) Collecte de preuves, où la requête est intégrée, les top-k chunks sont classés, chaque chunk est résumé en contexte, et un LLM ré-évalue et sélectionne les résumés les plus pertinents ; (3) Génération de réponse, où les meilleurs résumés sont placés dans un prompt et une réponse est produite. Un agent linguistique peut invoquer ces outils dans n'importe quel ordre, permettant un raffinement itératif des requêtes et des réponses. Les fonctionnalités clés incluent la récupération automatique de métadonnées depuis Semantic Scholar, Crossref et Unpaywall (y compris les comptes de citations et les vérifications de rétractation), des intégrations tenant compte des métadonnées des documents, un ré-classement basé sur LLM et un résumé contextuel (RCS), ainsi qu'une interface de personnalisation robuste. La pile par défaut utilise les intégrations et modèles OpenAI avec une base de données vectorielle Numpy, mais PaperQA2 s'intègre avec LiteLLM pour supporter pratiquement n'importe quel fournisseur de LLM, y compris Claude, Gemini, et des modèles hébergés localement via llama.cpp. Les modèles d'intégration locaux via Sentence Transformers sont également pris en charge. L'outil CLI `pqa` fournit une utilisation rapide : naviguez vers un répertoire de documents et exécutez `pqa ask 'Qu'est-ce que PaperQA2 ?'` pour indexer, rechercher et répondre en une seule étape. Les paramètres groupés (high_quality, fast, wikicrow, contracrow, debug, tier1_limits) offrent des configurations pré-réglées pour différents cas d'utilisation, y compris la détection de contradictions et la rédaction d'articles de style Wikipédia. La limitation de débit est configurable par modèle pour s'adapter aux restrictions de niveau API. La bibliothèque Python offre des API synchrones et asynchrones. La fonction `ask` fournit un wrapper pratique, tandis que `agent_query` et la manipulation directe de l'objet `Docs` permettent un contrôle fin sur l'ingestion et l'interrogation des documents. L'objet `Docs` prend en charge l'ajout de fichiers, d'URLs et de code, avec des méthodes pour la récupération de preuves et l'interrogation. Toutes les réponses précédentes sont indexées et stockées pour une recherche ultérieure. Les mises à jour récentes (décembre 2025) ont ajouté le support multimodal pour les tableaux, figures, langues non anglaises et équations mathématiques ; de nouveaux lecteurs PDF basés sur des modèles (Docling et Nvidia nemotron-parse) ; l'analyse de documents Microsoft Office ; le résumé contextuel multimodal où les objets médiatiques sont transmis au LLM de résumé ; et une pile HTTP simplifiée utilisant httpx. Le projet est passé du versionnage sémantique au versionnage calendaire en décembre 2025. PaperQA2 est sous licence Apache 2.0 et nécessite Python 3.11+. Il dépend de bibliothèques telles que Semantic Scholar, Crossref, Unpaywall, Pydantic, tantivy, LiteLLM et pybtex. Le projet est développé par Future House et a été publié dans des recherches évaluées par des pairs démontrant des performances surhumaines sur des tâches de réponse à des questions scientifiques, de résumé et de détection de contradictions.