Knowledge Filters
Filter knowledge base searches using static filters or agentic filters.
1"""2Knowledge Filters3=============================45Filter knowledge base searches using static filters or agentic filters.67Static filters are set at agent creation time and apply to every search.8Agentic filters let the agent dynamically choose filter values at runtime.9"""1011from kern.agent import Agent12from kern.filters import EQ13from kern.knowledge.embedder.openai import OpenAIEmbedder14from kern.knowledge.knowledge import Knowledge15from kern.models.openai import OpenAIResponses16from kern.vectordb.pgvector import PgVector, SearchType1718db_url = "postgresql+psycopg://ai:ai@localhost:5532/ai"19knowledge = Knowledge(20 vector_db=PgVector(21 table_name="recipes_filters_demo",22 db_url=db_url,23 search_type=SearchType.hybrid,24 embedder=OpenAIEmbedder(id="text-embedding-3-small"),25 ),26)2728# ---------------------------------------------------------------------------29# Create Agent With Static Filters30# ---------------------------------------------------------------------------31# Static filters: only retrieve documents matching these criteria32agent_static = Agent(33 model=OpenAIResponses(id="gpt-5.2"),34 knowledge=knowledge,35 search_knowledge=True,36 # Use FilterExpr objects for type-safe filtering37 knowledge_filters=[EQ("cuisine", "thai")],38 markdown=True,39)4041# ---------------------------------------------------------------------------42# Create Agent With Agentic Filters43# ---------------------------------------------------------------------------44# Agentic filters: the agent decides filter values dynamically45agent_agentic = Agent(46 model=OpenAIResponses(id="gpt-5.2"),47 knowledge=knowledge,48 search_knowledge=True,49 # Let the agent choose filter values based on the user's query50 enable_agentic_knowledge_filters=True,51 markdown=True,52)5354# ---------------------------------------------------------------------------55# Run Agent56# ---------------------------------------------------------------------------57if __name__ == "__main__":58 knowledge.insert(url="https://kern-public.s3.amazonaws.com/recipes/ThaiRecipes.pdf")5960 print("--- Static filters (cuisine=thai) ---")61 agent_static.print_response(62 "What soup recipes do you have?",63 stream=True,64 )6566 print("\n--- Agentic filters ---")67 agent_agentic.print_response(68 "Find me a Thai dessert recipe.",69 stream=True,70 )Run the Example
1# Clone and setup repo2git clone https://github.com/kern-ai/kern.git3cd kern/cookbook/02_agents/07_knowledge45# Create and activate virtual environment6./scripts/demo_setup.sh7source .venvs/demo/bin/activate89# Optiona: Run PgVector (needs docker)10./cookbook/scripts/run_pgvector.sh1112python knowledge_filters.py