within my ken

there's a new member of the waow.tech family!

ken

fuzzy find any record in your atproto repo.

"ken" isn't only Barbie's man, its Scots for "know"

ok but what does this do

type in a query, get your "related" atproto records back!

you can share a read-only view of results for a given query!0

methodology

there's only 1 vendor here, fly.io for compute. how does it work?

enter handle, ken streams your CAR with zat (zig atproto SDK)

walks repo, bge-small-en-v1.5 to embed "text-based" records

llama.cpp for inference ( zig can build C! )

store vectors as blobs on your PDS to "save an index"

you don't have to save the index if you don't want to. i just do because if i show up again, having creating new records, i don't want to wait for it to stream my CAR and re-embed everything. ken will incrementally index what is new if you save the index!

limitations and expansions

only text embeddings (for now! https://find-bufo.com/ )0

i limit how many records i index from realllly big repos

i should probably turn the current walk-then-materialize-then-embed pipeline into a streaming walk-to-embed pipeline to minimize peak resource utilization

i am not yet sure on the best architecture for this app in general, i just thought storing the pack on my PDS so i didn't have to re-embed was kinda fun

i will likely find a way to give this to @phi.zzstoatzz.io so it can find its own records on demand (it uses records on its PDS often for "global state things") but beyond that i have no immediate plans.

here's the code:

zzstoatzz.io/ken

fuzzy find my records

have a great weekend :)

P.S.

this is partially inspired by talking to @offline.arushibandi.com and @eagraf.dev about @habitat.network