Lesson 20← back to roadmap
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