AI Agents with Knowledge
Learn how to create AI agents with custom knowledge bases
| Feature | Knowledge | Memory |
|---|---|---|
| When Used | Pre-loaded before agent execution | Created and updated during runtime |
| Purpose | Provide static reference information | Store dynamic context and interactions |
| Storage | Read-only knowledge base | Read-write memory store |
| Persistence | Permanent until explicitly changed | Can be temporary (STM) or persistent (LTM) |
| Updates | Manual updates through knowledge files | Automatic updates during agent execution |
Quick Start
- Install Package
Install PraisonAI Agents with knowledge support:
bash pip install "praisonaiagents[knowledge]" - Set API Key
Set your OpenAI API key:
bash export OPENAI_API_KEY=xxxxx - 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:
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, 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
Custom Knowledge
Import your own documents and data as knowledge sources
Vector StorageEfficient storage and retrieval of knowledge embeddings
Multiple SourcesCombine multiple documents and file types
Persistent StorageSave and reuse knowledge bases across sessions
Best Practices
- Document Preparation
- Clean and well-formatted documents work best
- Break large documents into smaller chunks
- Use consistent formatting
- Knowledge Organization
- Group related documents together
- Use meaningful file names
- Keep knowledge bases focused and relevant
- Performance Optimization
- Monitor vector store size
- Clean up unused collections
- Use appropriate chunk sizes
- Multi-Agent Coordination
- Define clear roles and responsibilities
- Set appropriate logging levels for debugging
- Use unique collection names for different agent groups
Next Steps
- Learn about Memory Management for long-term recall
- Explore Tool Integration for enhanced capabilities
- Check out Examples for implementation ideas