elips/docs
Chapter X · interop

How the Python bindings work

Python doesn't reimplement anything. It binds the same Database and Collection that C++ users hold.

From docs/python/bindings/pybind11-architecture.md: there is a low-level surface (elips.open, Database, Collection — direct binding mirrors, kept as legacy shims) and the modern Chroma-style surface (Client / PersistentClient / Collection) that most code should use.

python
# legacy shim — mirrors C++ shapes
db = elips.open("/data/db", dimension=384)
docs = db.collection("documents")

# modern — Chroma-style, recommended
client = elips.PersistentClient("/data/db", dimension=384)
docs = client.get_or_create_collection("documents")
  • Vectors cross the boundary as zero-copy float buffers when possible
  • Metadata dicts are converted via pybind11's std::variant binding
  • Errors are translated to elips.ConfigError / StorageError / … on the Python side