Knowledge Base
SQLsaber includes a knowledge base for storing reusable context such as metric definitions, query patterns, and domain terminology.
Knowledge entries are:
- Database-specific
- Persisted locally (SQLite by default)
- Retrieved by the built-in
search_knowledgetool when relevant
Use knowledge as the default place to store reusable business context, metric definitions, and query patterns.
Add Knowledge
Section titled “Add Knowledge”Add entries with a required name and description, plus optional --sql and --source.
# Add to default databasesaber knowledge add "Revenue KPI" "Recognized revenue from shipped orders only"
# Add SQL pattern and source referencesaber knowledge add "Monthly revenue rollup" \ "Use shipped orders for monthly recognized revenue" \ --sql "SELECT date_trunc('month', shipped_at) AS month, SUM(amount) FROM orders WHERE status = 'shipped' GROUP BY 1" \ --source "finance-wiki"
# Add to a specific configured databasesaber knowledge add "NRR formula" "Net Revenue Retention excludes new logo revenue" -d prod-dbFor long descriptions or SQL, keep content in files and pass it in:
# Long description from a filesaber knowledge add "Revenue definition" "$(cat ./knowledge/revenue_definition.md)"
# Long description + long SQL from filessaber knowledge add "Monthly revenue rollup" "$(cat ./knowledge/monthly_revenue_notes.md)" \ --sql "$(cat ./sql/monthly_revenue_rollup.sql)" \ --source "finance-wiki"List, Search, and Inspect
Section titled “List, Search, and Inspect”List all entries:
saber knowledge listSearch entries by keyword (default limit is 10):
saber knowledge search "revenue shipped" --limit 5Show a full entry by ID:
saber knowledge show a1b2c3d4-e5f6-7890-abcd-ef1234567890Remove or Clear
Section titled “Remove or Clear”Remove one entry:
saber knowledge remove a1b2c3d4-e5f6-7890-abcd-ef1234567890Clear all entries for a database:
saber knowledge clear
# Skip confirmationsaber knowledge clear --forceHow the Tool Is Used
Section titled “How the Tool Is Used”You do not invoke search_knowledge manually in normal chat flow. The SQLsaber agent calls it when it needs context about definitions, terms, or known SQL patterns.
Search results are scoped to the active database, so entries saved for one database do not leak into another.
Python API (Optional)
Section titled “Python API (Optional)”You can inject your own knowledge manager/store via the Python API:
import asyncio
from sqlsaber import SQLSaberfrom sqlsaber.knowledge import KnowledgeManager, SQLiteKnowledgeStore
async def main() -> None: manager = KnowledgeManager(store=SQLiteKnowledgeStore(db_path="knowledge.db"))
await manager.add_knowledge( database_name="analytics", name="Gross margin", description="(Revenue - COGS) / Revenue", source="finance-handbook", )
async with SQLSaber( database="analytics", model_name="anthropic:claude-sonnet-4-5-20250929", api_key="YOUR_API_KEY", knowledge_manager=manager, ) as saber: answer = await saber.query("How do we define gross margin?") print(answer)
if __name__ == "__main__": asyncio.run(main())Getting Help
Section titled “Getting Help”saber knowledge --helpsaber knowledge add --helpsaber knowledge search --help