AI Agents with Knowledge

Learn how to create AI agents with custom knowledge bases

Diagram

Agents

Vector Store

Vector DB

Input

PDF

TXT

MD

Agent 1

Agent 2

Agent 3

FeatureKnowledgeMemory
When UsedPre-loaded before agent executionCreated and updated during runtime
PurposeProvide static reference informationStore dynamic context and interactions
StorageRead-only knowledge baseRead-write memory store
PersistencePermanent until explicitly changedCan be temporary (STM) or persistent (LTM)
UpdatesManual updates through knowledge filesAutomatic updates during agent execution

Quick Start

  1. Install Package

    Install PraisonAI Agents with knowledge support:

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

    Set your OpenAI API key:

    bash
    export OPENAI_API_KEY=xxxxx
  3. Create Script

    Create a new file app.py:

    python
    from praisonaiagents import Agent
    
    agent = Agent(
        name="Knowledge Agent",
        instructions="You answer questions based on the provided knowledge.",
        knowledge=["small.pdf"]
    )
    
    agent.start("What is KAG in one line?")

Basic Usage

The simplest way to create a knowledge-based agent is without any configuration:

python
from praisonaiagents import Agent

agent = Agent(
    name="Knowledge Agent",
    instructions="You answer questions based on the provided knowledge.",
    knowledge=["small.pdf"]
)

agent.start("What is KAG in one line?")

Advanced Configuration

For more control over retrieval behavior, use the knowledge dict:

python
from praisonaiagents import Agent

agent = Agent(
    name="Knowledge Agent",
    instructions="You answer questions based on the provided knowledge.",
    knowledge={
        "sources": ["small.pdf"],
        "retrieval_k": 5,                 # Number of chunks to retrieve
        "rerank": True,                   # Enable reranking for better relevance
    }
)

agent.start("What is KAG in one line?")

Getting Answers with Citations

Use agent.query() for structured answers with source citations:

python
from praisonaiagents import Agent

agent = Agent(
    name="Research Agent",
    instructions="You answer questions based on the provided knowledge.",
    knowledge={
        "sources": ["research_paper.pdf"],
        "retrieval_k": 5,
    }
)

# Get structured result with citations
result = agent.query("What are the main findings?")

print(result.answer)
for citation in result.citations:
    print(f"  [{citation.id}] {citation.source}")

Retrieval-Only (No LLM Generation)

Use agent.retrieve() to get context without LLM generation:

python
# Get context pack for manual processing
context = agent.retrieve("What are the key findings?")

print(f"Found {len(context.citations)} sources")
print(context.context)

# Use with chat_with_context for custom workflows
response = agent.chat_with_context("Summarize these findings", context)

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": "knowledge_test",
            "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"],
        "vector_store": {
            "provider": "chroma",
            "config": {
                "collection_name": "knowledge_test",
                "path": ".praison",
            }
        }
    },
)

# 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
)

# Create and start the agents
agents = AgentTeam(
    agents=[knowledge_agent],
    tasks=[knowledge_task],
    process="sequential",
)

# Start execution
result = agents.start()

Understanding Knowledge Configuration

Vector Store Options
  • Provider: Choose between different vector store backends (e.g., “chroma”)
  • Collection Name: Name for your knowledge collection
  • Path: Location to store the vector database
Supported File Types
  • PDF documents (*.pdf)
  • Text files (*.txt)
  • Markdown files (.md, .mdx)
  • And more…
Multi-Agent Setup
  • Role: Define specialized roles for knowledge agents
  • Goal: Set specific knowledge management objectives
  • Process: Choose between sequential or parallel execution

Features

Best Practices

  1. Document Preparation
  2. Clean and well-formatted documents work best
  3. Break large documents into smaller chunks
  4. Use consistent formatting
  1. Knowledge Organization
  2. Group related documents together
  3. Use meaningful file names
  4. Keep knowledge bases focused and relevant
  1. Performance Optimization
  2. Monitor vector store size
  3. Clean up unused collections
  4. Use appropriate chunk sizes
  1. Multi-Agent Coordination
  2. Define clear roles and responsibilities
  3. Set appropriate logging levels for debugging
  4. Use unique collection names for different agent groups

Next Steps