Intermédiaire 11 minRecherche

Zotero + LLM local : résumer et interroger sa bibliographie

Zotero centralise vos références et vos PDF ; un LLM local sait les lire et les synthétiser. En branchant l'un sur l'autre, on obtient un assistant de recherche capable de résumer un article, de comparer plusieurs papiers et de préparer un état de l'art — sans jamais envoyer vos travaux non publiés dans un cloud. Ce guide montre comment monter cette chaîne Zotero + IA de bout en bout, avec Ollama et une brique RAG.

Par Clara M.·Màj 2026-07-31·Testé sur Windows, macOS, Linux

#Pourquoi brancher une IA locale sur Zotero

Un chercheur accumule vite des centaines d'articles dans Zotero, la plupart encore non publiés, sous embargo ou couverts par une clause de confidentialité. Coller le PDF d'un manuscrit en cours d'évaluation dans un chatbot cloud, c'est en confier le contenu à un tiers — parfois pour l'entraînement de ses modèles. Faire tourner un LLM en local règle ce problème à la racine : les fichiers restent sur votre disque, l'inférence se fait sur votre machine, rien ne sort.

L'intérêt d'utiliser Zotero comme IA de recherche ne se limite pas à la confidentialité. Votre bibliothèque est déjà structurée : collections par projet, tags, métadonnées propres, PDF annotés. C'est une base documentaire prête à l'emploi pour un LLM. Plutôt que de re-télécharger et re-organiser des papiers, on branche le modèle directement sur ce que Zotero a déjà rangé.

Résumer
Obtenir en trente secondes l'objectif, la méthode et les résultats d'un article de vingt pages, dans votre langue.
Interroger
Poser une question et laisser le modèle chercher la réponse à travers toute une collection, pas un seul PDF.
Comparer
Confronter les méthodes ou les résultats de plusieurs papiers pour dégrossir un état de l'art.
Confidentialité
Traiter des manuscrits sous embargo ou des données de collaborateurs sans clause de fuite.
i
Ce que le local ne remplace pas
Un LLM local vous fait gagner du temps de lecture, pas de la rigueur. Il produit des brouillons de synthèse à relire, pas des vérités à citer telles quelles. La section sur les limites explique où il se trompe encore.

#Comment Zotero et le LLM se parlent

Zotero ne « parle » pas nativement à un modèle de langage. Le pont se fait par les fichiers : Zotero stocke chaque PDF sur votre disque, et c'est ce PDF que l'on donne à lire au LLM. Deux grandes approches coexistent, et on les combine souvent.

Résumé à la demande
On extrait le texte d'un PDF précis et on l'envoie à Ollama avec une consigne de synthèse. Simple, rapide, idéal pour un article à la fois.
RAG sur la bibliothèque
On indexe tout un dossier de PDF dans une base vectorielle, puis on interroge en langage naturel. Le modèle ne lit que les passages pertinents, ce qui permet de couvrir des dizaines de papiers.

Dans les deux cas, la pièce centrale reste le dossier de stockage de Zotero, où résident tous les PDF. Zotero 7 expose aussi une API locale (sur le port 23119) qui permet de lister ses items par programme, mais pour démarrer, pointer directement vers les fichiers est le plus robuste et le plus transparent.

#Prérequis

Zotero 7
Avec vos PDF attachés aux références (pas seulement les métadonnées). Le lecteur PDF intégré n'est pas requis, mais les fichiers doivent être stockés localement.
Ollama
Le daemon qui sert les modèles, sur http://localhost:11434 par défaut. Voir le guide d'installation si ce n'est pas encore fait.
Un modèle de synthèse
Qwen2.5 14B (≈9 Go de VRAM en Q4_K_M) ou Mistral-Small pour un bon français ; un 7B suffit sur petite config.
Un modèle d'embeddings
Pour le RAG : nomic-embed-text ou mxbai-embed-large, récupérables via ollama pull. Légers, ils tournent même sans GPU.
Une brique RAG (optionnel)
AnythingLLM ou Open WebUI si vous voulez interroger toute la bibliographie sans coder.
Récupérer les modèles
# Modèle de synthèse (adaptez à votre VRAM)
ollama pull qwen2.5:14b

# Modèle d'embeddings pour le RAG
ollama pull nomic-embed-text
Choisir la taille selon le GPU
En Q4_K_M, comptez environ 5 Go de VRAM pour un 7B, 9 Go pour un 14B et 19 Go pour un 32B. Une RTX 3060 12 Go fait tourner un 14B confortablement ; sur un Mac à mémoire unifiée, un 32B reste envisageable.

#Étape 1 : retrouver ses PDF dans Zotero

Zotero range chaque pièce jointe dans un sous-dossier du répertoire storage, nommé par une clé de huit caractères. Vous n'avez pas besoin de comprendre cette arborescence en détail : il suffit de savoir où elle se trouve pour pointer le LLM dessus.

Windows
C:\Users\<vous>\Zotero\storage
macOS
~/Zotero/storage
Linux
~/Zotero/storage

En cas de doute, le chemin exact est affiché dans Zotero sous Édition ▸ Paramètres ▸ Avancé ▸ Fichiers et dossiers ▸ « Répertoire de données ». Le dossier storage se trouve juste à l'intérieur.

Pour travailler proprement sur un projet précis, le mieux est d'exporter une collection plutôt que de fouiller tout storage. Clic droit sur une collection ▸ « Exporter la collection » : Zotero peut copier les PDF et une bibliographie (BibTeX, CSV, JSON) dans un dossier dédié, que vous donnerez ensuite au LLM.

i
Extraire le texte, pas l'image
Le LLM lit du texte, pas des pixels. Un PDF « scanné » sans couche texte devra d'abord passer par un OCR (ocrmypdf, par exemple). Les PDF d'éditeurs modernes contiennent déjà une couche texte exploitable directement.

#Étape 2 : résumer un article scientifique

Le cas le plus fréquent : vous ouvrez un papier dans Zotero et voulez son résumé avant de décider s'il mérite une lecture complète. On extrait le texte du PDF, puis on l'envoie à Ollama. La bibliothèque pymupdf (fitz) fait l'extraction proprement et rapidement.

Dépendances
pip install pymupdf requests
resumer_article.py
import sys, fitz, requests

def extraire_texte(pdf_path):
    doc = fitz.open(pdf_path)
    return "\n".join(page.get_text() for page in doc)

SYSTEM = (
    "Tu es un assistant de recherche. Tu résumes des articles "
    "scientifiques en français, avec rigueur, sans rien inventer. "
    "Tu t'appuies uniquement sur le texte fourni."
)

texte = extraire_texte(sys.argv[1])

resp = requests.post("http://localhost:11434/api/chat", json={
    "model": "qwen2.5:14b",
    "stream": False,
    "options": {"num_ctx": 16384, "temperature": 0.2},
    "messages": [
        {"role": "system", "content": SYSTEM},
        {"role": "user", "content": PROMPT + "\n\n---\n" + texte},
    ],
})

print(resp.json()["message"]["content"])

On appelle l'API REST d'Ollama sur le port 11434 : elle sépare le message système (le rôle) du contenu (l'article). Deux réglages comptent ici — une température basse (0.2) pour limiter les broderies, et un num_ctx assez grand pour ingérer un papier entier sans le tronquer.

!
La fenêtre de contexte est votre limite dure
Un article de vingt pages représente souvent 12 000 à 18 000 mots. Si num_ctx est trop petit, le modèle ne verra que le début du PDF et résumera à l'aveugle la fin. Vérifiez le contexte du modèle, augmentez num_ctx si la VRAM suit, sinon découpez par sections.

#Un prompt de résumé fiable

La qualité du résumé tient plus au prompt qu'au modèle. Un prompt vague donne un paragraphe passe-partout ; un prompt structuré donne une fiche de lecture réutilisable. Le secret : imposer un format en sections calqué sur la structure d'un article scientifique, et interdire au modèle d'aller au-delà du texte.

Prompt de fiche de lecture
Rédige une fiche de lecture en français de l'article ci-dessous, en respectant EXACTEMENT ce format :

## Question de recherche
Ce que l'article cherche à établir, en une à deux phrases.

## Méthode
Données, protocole, modèles ou outils utilisés.

## Résultats principaux
- Une puce par résultat marquant, chiffré si l'article donne des chiffres.

## Limites annoncées
- Les limites que les auteurs reconnaissent eux-mêmes.

## À retenir pour mon état de l'art
Deux à trois phrases sur l'apport et le positionnement de l'article.

Règles :
- Ne reprends que ce qui est réellement écrit dans l'article.
- Si une section n'est pas renseignée dans le texte, écris « non précisé ».
- N'invente aucun chiffre, aucune référence, aucun nom d'auteur.
Le format imposé
Les titres de section forcent le modèle à trier au lieu de délayer. Vous obtenez la même grille d'un article à l'autre, comparable d'un coup d'œil.
La règle anti-hallucination
« Ne reprends que ce qui est écrit » et « non précisé » réduisent le risque que le LLM invente un résultat ou une référence — le principal danger en contexte scientifique.
La section état de l'art
En demandant explicitement le positionnement, vous transformez le résumé en matière première directement réutilisable dans une revue de littérature.
Vérifiez toujours les chiffres à la source
Même avec une température basse et une consigne stricte, un LLM peut transposer un chiffre d'une ligne à l'autre. Traitez tout nombre du résumé comme une piste à confirmer dans le PDF avant de le citer.

#Étape 3 : interroger toute sa bibliographie en RAG

Résumer un PDF, c'est utile ; interroger cinquante papiers d'un coup, c'est ce qui change la préparation d'un état de l'art. Là, on passe au RAG (Retrieval-Augmented Generation) : on découpe les PDF en morceaux, on les transforme en vecteurs avec le modèle d'embeddings, et le LLM ne lit que les passages pertinents pour chaque question.

Le plus simple, sans écrire de code, est de pointer AnythingLLM ou Open WebUI vers le dossier exporté depuis Zotero (ou directement vers storage). Ces outils gèrent l'indexation et la base vectorielle pour vous ; il suffit de choisir Ollama comme fournisseur et nomic-embed-text comme modèle d'embeddings.

  1. 01
    Exporter la collection
    Depuis Zotero, exportez la collection concernée avec ses PDF dans un dossier dédié, par exemple ~/recherche/etat-de-l-art.
  2. 02
    Créer un espace de travail
    Dans AnythingLLM, créez un workspace et réglez le fournisseur LLM sur Ollama (http://localhost:11434) et le modèle d'embeddings sur nomic-embed-text.
  3. 03
    Importer les documents
    Glissez le dossier de PDF dans le workspace. L'outil extrait le texte, le découpe et l'indexe automatiquement.
  4. 04
    Interroger en langage naturel
    Posez vos questions transverses : « Quelles méthodes d'évaluation reviennent le plus ? », « Quels papiers contredisent l'hypothèse X ? ».

Le gros avantage du RAG face au résumé simple : le modèle cite les passages qu'il a utilisés. Vous pouvez remonter au PDF source pour vérifier, ce qui est indispensable en recherche. Demandez systématiquement au modèle d'indiquer de quel document provient chaque affirmation.

i
Le RAG ne lit pas « tout »
Contrairement à une intuition répandue, le RAG ne fait pas lire l'intégralité des papiers au modèle : il ne remonte que les quelques passages les plus proches de la question. Une question mal formulée récupère les mauvais extraits. Reformulez si la réponse semble à côté.

#Les limites sur les papiers très techniques

C'est le point où il faut être honnête : sur un article de maths, de physique théorique ou de ML très formel, un LLM local montre vite ses limites. Comprendre ces angles morts évite de lui faire confiance au mauvais endroit.

Les formules
L'extraction de texte aplatit les équations : indices, exposants et symboles grecs se mélangent ou disparaissent. Le modèle raisonne alors sur des formules corrompues et peut en tirer des conclusions fausses.
Les tableaux
Un tableau devient une bouillie de nombres une fois extrait en texte brut. Les correspondances ligne/colonne se perdent, donc les chiffres cités depuis un tableau sont peu fiables.
Les figures
Un modèle de texte ne voit pas les graphiques. Tout résultat qui n'existe que dans une figure lui échappe complètement — il ne le mentionnera pas, ou l'inventera à partir de la légende.
Le raisonnement mathématique
Suivre une démonstration ou vérifier une dérivation dépasse ce qu'un modèle local de 14B fait de manière fiable. Il paraphrase la preuve sans la valider.

Concrètement : servez-vous du LLM pour la couche « narrative » d'un article — question de recherche, motivation, contributions annoncées, limites, positionnement. Gardez l'œil humain pour tout ce qui est formule, tableau chiffré et figure. Pour les papiers riches en équations, un modèle multimodal capable de lire les pages en image (plutôt que le texte extrait) donne de meilleurs résultats, mais reste un complément, pas un substitut à votre lecture.

!
Jamais de citation à l'aveugle
Ne recopiez jamais un chiffre, une formule ou une affirmation produite par le modèle sans l'avoir retrouvée dans le PDF. Le rôle du LLM est de vous aiguiller et de dégrossir, pas de se substituer à la vérification scientifique.

#Dépannage

Le PDF ressort vide
Il s'agit d'un scan sans couche texte. Passez-le à l'OCR (ocrmypdf entree.pdf sortie.pdf) avant extraction.
Le résumé ignore la fin de l'article
num_ctx est trop petit : le texte a été tronqué. Augmentez-le si la VRAM le permet, sinon résumez par sections puis faites une synthèse des synthèses.
Le RAG répond à côté
Les mauvais passages ont été récupérés. Reformulez la question avec les termes exacts du domaine, ou réduisez la taille des chunks à l'indexation.
Réponses lentes
Un 14B sur CPU rame. Vérifiez qu'Ollama utilise bien le GPU, ou basculez sur un modèle 7B pour la synthèse courante.
Chiffres qui ne collent pas au PDF
Symptôme classique d'un tableau mal extrait ou d'une hallucination. Baissez la température et, surtout, recoupez à la source.

#Pour aller plus loin

Ce guide s'appuie sur des briques déjà détaillées sur le site. Pour approfondir l'installation ou le RAG en particulier :

Installer Ollama : Windows, macOS et Linux
Le point de départ pour servir vos modèles en local sur le port 11434, si ce n'est pas encore en place.
RAG local avec Ollama sans coder (Open WebUI, AnythingLLM)
Le guide de référence pour monter la brique RAG qui interroge toute votre bibliographie, sans écrire une ligne de code.
RAG local avec LM Studio : discuter avec vos documents
Une alternative tout-en-un si vous préférez LM Studio à la paire Ollama + interface séparée.
Ce guide vous a aidé ?

Un retour, une erreur, une précision ? Faites-nous signe, ça améliore le guide pour tout le monde.