is there an implementation of B+ trees that fluidly pulls from disk vs RAM?

e.g., two B+ trees, one in RAM and one on disk, with the RAM one evicted with sieve caching? possibly a very lite WAL?

something that lets you use a B+ tree bigger than RAM, and persist to disk

You can implement a BTree with nodes stored in file-backed memmaps. It's plenty fast for the usual business case.

That's a type of Log-structured merge-tree.