Skip to main content
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:
pip install "praisonaiagents[knowledge]"
2

Set API Key

Set your OpenAI API key:
export OPENAI_API_KEY=xxxxx
3

Create Script

Create a new file app.py:
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:
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:
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:
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:
# 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:
from praisonaiagents import Agent, Task, Agents
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 = Agents(
    agents=[knowledge_agent],
    tasks=[knowledge_task],
    process="sequential",
)

# Start execution
result = agents.start()

Understanding Knowledge Configuration

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

Features

Custom Knowledge

Import your own documents and data as knowledge sources

Vector Storage

Efficient storage and retrieval of knowledge embeddings

Multiple Sources

Combine multiple documents and file types

Persistent Storage

Save and reuse knowledge bases across sessions

Best Practices

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

Next Steps