Introduction

polign_db is a small vector database in Go. Point it at a bucket and its serving nodes are stateless. The system of record lives in object storage, so you can spin them up, tear them down, and scale them out freely.

You store vectors (embeddings) in named collections, then query by nearest neighbour, by keyword (BM25), or both fused in one query. Talk to it over gRPC or HTTP/JSON from the Go or Python client. The core engine uses only the Go standard library; external dependencies enter only with the optional cloud and transport layers.

In one sentence

A vector database where the bucket is the database, and nodes are just caches you can add, kill, or scale to zero.

What makes it different

How a write becomes searchable

put  →  write log (in the bucket)  →  persistor builds segments  →  queryable hot (RAM) or cold (bucket)
  1. Put a vector into a collection over gRPC or HTTP; it is acknowledged once appended to the write log.
  2. Persist. The persistor drains the log into immutable, compressed segments in object storage.
  3. Serve. Nodes answer queries from RAM when the data is hot, or directly from the bucket when it is cold; heat decides the tier.

Next steps