Aller au contenu principal

Outil document_library : QnA sur vos fichiers

Le RAG intégré de Mistral

L’outil document_library est un système de RAG (Retrieval-Augmented Generation) intégré à l’API Agents. Il permet à votre agent d’accéder à des documents que vous avez uploadés dans le cloud Mistral, de les interroger et de répondre en citant les passages pertinents.

Créer une bibliothèque de documents

Avant d’utiliser l’outil, vous devez créer une bibliothèque et y uploader des documents :

from mistralai import Mistral
import os

client = Mistral(api_key=os.environ["MISTRAL_API_KEY"])

# Créer une bibliothèque
library = client.beta.libraries.create(
    name="Documentation Technique",
    description="Manuels et spécifications techniques de nos produits."
)

print(f"Library ID : {library.id}")

Uploader des documents

# Uploader un fichier PDF
with open("manuel-produit.pdf", "rb") as f:
    uploaded_file = client.files.upload(
        file=f,
        purpose="library"
    )

# Ajouter le fichier à la bibliothèque
client.beta.libraries.add_document(
    library_id=library.id,
    document_id=uploaded_file.id
)

Les formats supportés incluent PDF, texte et d’autres formats documentaires courants.

Créer un agent avec document library

agent = client.beta.agents.create(
    model="mistral-medium-latest",
    name="Agent Documentation",
    instructions="""Vous êtes un assistant documentaire.
- Répondez uniquement à partir des documents de la bibliothèque
- Citez les passages pertinents
- Si l'information n'est pas dans les documents, dites-le clairement""",
    tools=[{
        "type": "document_library",
        "library_ids": [library.id]
    }]
)

Notez le paramètre library_ids : vous pouvez associer plusieurs bibliothèques à un même agent.

Interroger les documents

response = client.beta.conversations.start(
    agent_id=agent.id,
    inputs="Comment fonctionne l'encodeur vision de Pixtral 12B ?"
)

for entry in response.outputs:
    if entry.type == "message.output":
        for chunk in entry.content:
            if chunk.type == "text":
                print(chunk.text)
            elif chunk.type == "tool_reference":
                print(f"  [Source] {chunk.title}")

Citations et transparence

Comme pour le web search, les réponses incluent des tool_reference qui indiquent la source de chaque information :

  • title — Nom du document source
  • url — Référence interne au document

Cette transparence est cruciale pour les cas d’usage professionnels où la traçabilité des informations est requise.

Gérer les bibliothèques

# Lister les bibliothèques
libraries = client.beta.libraries.list()
for lib in libraries.data:
    print(f"{lib.name} ({lib.id})")

# Lister les documents d'une bibliothèque
documents = client.beta.libraries.list_documents(library_id=library.id)
for doc in documents.data:
    print(f"{doc.filename}{doc.bytes} bytes")

# Supprimer un document de la bibliothèque
client.beta.libraries.remove_document(
    library_id=library.id,
    document_id=uploaded_file.id
)

# Supprimer la bibliothèque
client.beta.libraries.delete(library_id=library.id)

Cas d’usage

Support client interne

agent = client.beta.agents.create(
    model="mistral-large-latest",
    name="Support Interne",
    instructions="Répondez aux questions des employés en utilisant la base documentaire RH.",
    tools=[{"type": "document_library", "library_ids": [rh_library.id]}]
)

Analyse de contrats

agent = client.beta.agents.create(
    model="mistral-large-latest",
    name="Analyste Contrats",
    instructions="""Analysez les contrats uploadés.
- Identifiez les clauses importantes
- Signalez les risques potentiels
- Comparez avec les standards du secteur""",
    tools=[{"type": "document_library", "library_ids": [contrats_library.id]}]
)

Base de connaissances produit

agent = client.beta.agents.create(
    model="mistral-large-latest",
    name="Expert Produit",
    instructions="Répondez aux questions techniques sur nos produits en vous basant sur la documentation officielle.",
    tools=[
        {"type": "document_library", "library_ids": [docs_library.id]},
        {"type": "web_search"}  # Complément si les docs ne suffisent pas
    ]
)

Bonnes pratiques

  • Documents structurés — Les PDF avec titres, sous-titres et paragraphes bien formatés donnent de meilleurs résultats
  • Bibliothèques thématiques — Séparez les documents par domaine (RH, technique, juridique) plutôt qu’une bibliothèque unique
  • Instructions claires — Précisez à l’agent de se limiter aux documents ou d’indiquer quand l’information est absente
  • Combinaison d’outils — Associez document_library avec web_search pour combler les lacunes documentaires

Points clés à retenir

  • document_library est un RAG intégré — pas besoin de gérer votre propre infrastructure vectorielle
  • Créez des bibliothèques thématiques et uploadez vos documents via l’API Files
  • Les réponses citent les passages pertinents avec des tool_reference
  • Vous pouvez associer plusieurs bibliothèques à un même agent
  • Combinable avec les autres outils pour une couverture complète