Documentation Index
Fetch the complete documentation index at: https://agno-v2-shaloo-ai-support-link.mintlify.app/llms.txt
Use this file to discover all available pages before exploring further.
from agno.agent import Agent
from agno.db.postgres import PostgresDb
from agno.knowledge.knowledge import Knowledge
from agno.models.openai import OpenAIChat
from agno.utils.media import (
SampleDataFileExtension,
download_knowledge_filters_sample_data,
)
from agno.vectordb.pgvector import PgVector
from pydantic import BaseModel
# Download all sample sales files and get their paths
downloaded_csv_paths = download_knowledge_filters_sample_data(
num_files=4, file_extension=SampleDataFileExtension.CSV
)
# Initialize PgVector
vector_db = PgVector(
table_name="recipes",
db_url="postgresql+psycopg://ai:ai@localhost:5532/ai",
)
class CSVDataOutput(BaseModel):
data_type: str
quarter: str
year: int
region: str
currency: str
# Step 1: Initialize knowledge base with documents and metadata
# ------------------------------------------------------------------------------
knowledge = Knowledge(
name="CSV Knowledge Base",
description="A knowledge base for CSV files",
vector_db=vector_db,
contents_db=PostgresDb(
db_url="postgresql+psycopg://ai:ai@localhost:5532/ai",
knowledge_table="knowledge_contents",
),
)
# Load all documents into the vector database
knowledge.insert_many(
[
{
"path": downloaded_csv_paths[0],
"metadata": {
"data_type": "sales",
"quarter": "Q1",
"year": 2024,
"region": "north_america",
"currency": "USD",
},
},
{
"path": downloaded_csv_paths[1],
"metadata": {
"data_type": "sales",
"year": 2024,
"region": "europe",
"currency": "EUR",
},
},
{
"path": downloaded_csv_paths[2],
"metadata": {
"data_type": "survey",
"survey_type": "customer_satisfaction",
"year": 2024,
"target_demographic": "mixed",
},
},
{
"path": downloaded_csv_paths[3],
"metadata": {
"data_type": "financial",
"sector": "technology",
"year": 2024,
"report_type": "quarterly_earnings",
},
},
],
skip_if_exists=True,
)
# Step 2: Query the knowledge base with Agent using filters from query automatically
# -----------------------------------------------------------------------------------
# Enable agentic filtering
agent = Agent(
model=OpenAIChat("gpt-5.2"),
knowledge=knowledge,
search_knowledge=True,
enable_agentic_knowledge_filters=True,
output_schema=CSVDataOutput,
)
agent.print_response(
"Tell me about revenue performance and top selling products in the region north_america and data_type sales",
markdown=True,
)
Run the Example
# Clone and setup repo
git clone https://github.com/agno-agi/agno.git
cd agno/cookbook/07_knowledge/filters
# Create and activate virtual environment
./scripts/demo_setup.sh
source .venvs/demo/bin/activate
# Optiona: Run PgVector (needs docker)
./cookbook/scripts/run_pgvector.sh
python agentic_filtering_with_output_schema.py