Tagona is a database that selects objects of any type by the facts inside them. Store 10,000 documents, images, video, or audio and query by whatever matters — api + auth + example , Ford + SUV + no scratches , refund + angry . Tagona evaluates those properties with AI as the query runs, and caches the labels forever.
The more you ask, the faster it answers.
No embeddings. No guessing in vector space. Tagona indexes itself from the questions you actually ask.
new, unlabeled objects
AI labels the data until the query's required amount is fulfilled
| comfy | fortified | |
|---|---|---|
tower |
✗ | ✓ |
house |
✓ | ✗ |
tipi |
✗ | ✗ |
labels stay
The same flow as the diagram above — create a collection, upload objects, query by tags — in three tabs.
from tagona import Client client = Client("http://localhost:8080") # 1. Create a collection client.create_collection("structures", data_type="png") # 2. Upload objects — raw bytes, no labels attached for name in ("tower.png", "house.png", "tipi.png"): client.upload("structures", name, data_type="png") # 3. Query by tags that were never defined results = client.query("structures", tags={"comfy": True, "fortified": False}, limit=5) # 4. Read a matched object house = results.objects[0] print(client.get_data("structures", house.id)) # A cozy house with a steep roof, big windows, and a warm fireplace.
# 1. Create a collection curl -s -X POST http://localhost:8080/v1/collections \ -H "Content-Type: application/json" \ -d '{"name":"structures","data_type":"png"}' # 2. Upload objects — raw bytes, no labels attached curl -s -X POST "http://localhost:8080/v1/collections/structures/objects?data_type=png" \ -H "Content-Type: image/png" \ --data-binary @tower.png # (same for: house.png and tipi.png) # 3. Query by tags that were never defined curl -s -X POST "http://localhost:8080/v1/collections/structures/objects/query" \ -H "Content-Type: application/json" \ -d '{"tags":{"comfy":true,"fortified":false},"limit":5}' # → {"objects":[{ ...the house... }]}
tagona--url http://localhost:8080 create-collection --name structures --data-type png tagona --url http://localhost:8080 upload --collection structures --data-type png --file tower.png tagona --url http://localhost:8080 upload --collection structures --data-type png --file house.png tagona --url http://localhost:8080 upload --collection structures --data-type png --file tipi.png tagona --url http://localhost:8080 query --collection structures --tag comfy=true --tag fortified=false --limit 5 # (--tag with no =value defaults to true)
Tagona Advanced edition offers you a smart layer over the Classic edition that reads your direct question, reviews the tags that are already present in the system, and translates your query into the set of labels.
Get what you need, let robot decide.
Same engine underneath — you just stop speaking in tags. Ask in plain words; the smart layer reuses the labels it knows and coins the ones it needs.
“What home is comfy and has windows?”
smart layer over the classic engine
reuses existing “comfy”, coins “windows”
AI labels the data until the query's required amount is fulfilled
| comfy | fortified | windows | |
|---|---|---|---|
tower |
✗ | ✓ | ✗ |
house |
✓ | ✗ | ✓ |
tipi |
✗ | ✗ | ✗ |
labels stay
One call. Ask in plain language — the smart layer resolves the tags, then the classic engine takes over.
from tagona import Client client = Client("http://localhost:8080") # Ask in plain language — no tags to pick, nothing to translate yourself results = client.query( "structures", ask="What home is comfy and has windows?", limit=5, ) # The smart layer resolved your words to tags: comfy (existing) + windows (new) print(results.tags) # {"comfy": True, "windows": True} home = results.objects[0] print(client.get_data("structures", home.id)) # A cozy house with thick stone walls and a steep roof that shrugs off storms.
# Ask in plain language — the smart layer translates it into tags curl -s -X POST "http://localhost:8080/v1/collections/structures/objects/query" \ -H "Content-Type: application/json" \ -d '{"ask":"What home is comfy and has windows?","limit":5}' # → {"tags":{"comfy":true,"windows":true},"objects":[{ ...the house... }]}
tagona --url http://localhost:8080 query --collection structures \ --ask "What home is comfy and has windows?" --limit 5 # resolved tags: comfy (existing), windows (new)