**There are many breaking changes as we move towards v0.1.0** and plenty more features and optimizations to be excited for!
- `RouteLayer`(s) are now abstracted into `semantic_router.routers.base.BaseRouter`, meaning `RouteLayer` is now `SemanticRouter` and to import we do `from semantic_router.routers import SemanticRouter`. For `HybridRouteLayer` we now use `from semantic_router.routers import HybridRouter`.
- "Routers" have been refactored extensively, `HybridRouter` is now closer to parity with `RouteLayer` (ie allowing syncing, better route management, etc) and integrates with the various encoders and indexes with more stability. There's still some more to come here though.
- Sparse encoders have been refactored extensively, `TfidfEncoder` and `BM25Encoder` now mostly share the same methods, and most importantly align in inputs/outputs and the main methods we'd be using. Inheritance of these classes has been organized better also. Yet there's still more to do.
- Sparse embedding methods and transformations have been optimized, this also introduces a `SparseEmbedding` object which is just an organized numpy array with some useful methods attached. This is the first step towards more efficient use of numpy across the library. Again, there's still plenty more to do.
- The `HybridRouter` was initially both an index and a router, which obviously caused issues when trying to standardize across the indexes and encoders. So this has been broken down to create the `LocalHybridIndex`. The methods and transformations from the old router have also been optimized.
- We have added `AurelioSparseEncoder` to the library, which integrates with our Platform BM25 service
- New examples covering this are [here](https://github.com/aurelio-labs/semantic-router/blob/main/docs/examples/pinecone-hybrid.ipynb) and [here](https://github.com/aurelio-labs/semantic-router/blob/main/docs/encoders/aurelio-bm25.ipynb)
- Better use of inheritance for all indexes
- Better alignment of the `PostgresIndex` with our standard indexes, also resolved difficult installation dependency of the library.
- Same for `QdrantIndex`, but only very minor tweaks were required here
- New [hybrid router example](https://github.com/aurelio-labs/semantic-router/blob/main/docs/examples/hybrid-router.ipynb)
- various other things, PR changes are [here](https://github.com/aurelio-labs/semantic-router/pull/465/files)
What's Changed
* feat: abstract layers by jamescalam in https://github.com/aurelio-labs/semantic-router/pull/465
**Full Changelog**: https://github.com/aurelio-labs/semantic-router/compare/v0.1.0.dev1...v0.1.0.dev2