Chat with PDF Agents

Learn how to create AI agents that can intelligently chat with PDF documents using vector databases for efficient information retrieval.

A PDF-centric workflow where Chat agents interact with vector databases to store and retrieve information from PDF documents, enabling natural conversations and intelligent question-answering capabilities.

python
from praisonaiagents import Agent

agent = Agent(
    name="researcher",
    instructions="Answer questions using the uploaded PDF",
    knowledge=True,
)

agent.start("Summarise chapter 2 of the document")

The user uploads a PDF and asks questions; answers cite the indexed content.

Diagram

Chat with PDF

📋 PDF Document

🤖 PDF Chat Agent

💾 Vector DB

✅ Response

Quick Start

  1. Install Package

    Install PraisonAI Agents with PDF chat support:

    bash
    pip install "praisonaiagents[knowledge]"
  2. Set API Key

    Set your OpenAI API key:

    bash
    export OPENAI_API_KEY="${OPENAI_API_KEY:?Set OPENAI_API_KEY in your shell}"
  3. Create Script

    Create a new file chat_with_pdf.py:

    python
    from praisonaiagents import Agent
    
    agent = Agent(
        name="PDF Chat Agent",
        instructions="You answer questions based on the provided PDF document.",
        knowledge=["document.pdf"], # PDF Indexing
    )
    
    agent.start("What is the main topic of this PDF?") # Chat Query

PDF Processing and Chat Agents

Diagram

Chat Agents

Vector Store

Vector DB

Input

PDF Documents

Chat Agent 1

Chat Agent 2

Chat Agent 3

The simplest way to create a PDF chat agent is without any configuration:

python
from praisonaiagents import Agent

agent = Agent(
    name="PDF Chat Agent",
    instructions="You answer questions based on the provided PDF document.",
    knowledge=["document.pdf"] # PDF Indexing
)

agent.start("What are the key points in this document?") # Chat Query

Advanced Configuration

For more control over the knowledge base, you can specify a configuration:

python
from praisonaiagents import Agent

config = {
    "vector_store": {
        "provider": "chroma",
        "config": {
            "collection_name": "praison",
            "path": ".praison",
        }
    }
}

agent = Agent(
    name="PDF Chat Agent",
    instructions="You answer questions based on the provided PDF document.",
    knowledge={
        "sources": ["document.pdf"],
        **config
    }
)

agent.start("What is the main topic of this PDF?") # Chat Query

Multi-Agent Knowledge System

For more complex scenarios, you can create a knowledge-based system with multiple agents:

python
from praisonaiagents import Agent, Task, AgentTeam
import logging
import os

# Configure logging
logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')
logger = logging.getLogger(__name__)

# Define the configuration for the Knowledge instance
config = {
    "vector_store": {
        "provider": "chroma",
        "config": {
            "collection_name": "praison",
            "path": ".praison",
        }
    }
}

# Create an agent with knowledge capabilities
knowledge_agent = Agent(
    name="KnowledgeAgent",
    role="Information Specialist",
    goal="Store and retrieve knowledge efficiently",
    backstory="Expert in managing and utilizing stored knowledge",
    knowledge={
        "sources": ["sample.pdf"],
        **config
    }
)

# Define a task for the agent
knowledge_task = Task(
    name="knowledge_task",
    description="Who is Mervin Praison?",
    expected_output="Answer to the question",
    agent=knowledge_agent # Agent
)

# Create and start the agents
agents = AgentTeam(
    agents=[knowledge_agent],
    tasks=[knowledge_task],
    process="sequential",
    memory={"user_id": "user1"} # User ID
)

# Start execution
result = agents.start() # Retrieval

How It Works

The user uploads a PDF and asks a question; the agent retrieves the most relevant chunks from the vector store and answers from them.

Diagram
VectorDBAgentUserVectorDBAgentUserknowledge=[“document.pdf”]Index PDF chunksstart(“Summarise chapter 2”)Retrieve relevant chunksMatching passagesAnswer from PDF

Understanding PDF Chat Agents

What are PDF Chat Agents?

PDF Chat agents enable: – Natural conversation with PDF documents – Intelligent information extraction – Context-aware document understanding – Quick answers to document-specific questions

Features

Troubleshooting

Best Practices

Install the knowledge extra

Run pip install "praisonaiagents[knowledge]" before indexing PDFs. Core install alone lacks Chroma and document parsers needed for retrieval.

Use text-searchable PDFs

Scanned image-only PDFs index poorly. Prefer native text PDFs or run OCR upstream so chunking and embedding capture meaningful content.

Pin a persistent vector store path

Set path and collection_name in your Chroma config so re-indexing does not wipe prior embeddings between restarts.

Keep queries specific to the document

Ask about sections, figures, or claims in the PDF rather than open-ended prompts — retrieval quality depends on query–chunk alignment.

Next Steps

Related