Get the requested backend and ensure its dependencies are installed.
(backend: Backend | str)
| 20 | |
| 21 | |
| 22 | def get_backend_class(backend: Backend | str) -> type[AbstractBackend]: |
| 23 | """Get the requested backend and ensure its dependencies are installed.""" |
| 24 | backend = Backend(backend) |
| 25 | |
| 26 | if backend == Backend.BASIC: |
| 27 | return BasicBackend |
| 28 | |
| 29 | elif backend == Backend.HNSW: |
| 30 | _require("hnswlib", backend, "hnsw") |
| 31 | from vicinity.backends.hnsw import HNSWBackend |
| 32 | |
| 33 | return HNSWBackend |
| 34 | |
| 35 | elif backend == Backend.ANNOY: |
| 36 | _require("annoy", backend, "annoy") |
| 37 | from vicinity.backends.annoy import AnnoyBackend |
| 38 | |
| 39 | return AnnoyBackend |
| 40 | |
| 41 | elif backend == Backend.PYNNDESCENT: |
| 42 | _require("pynndescent", backend, "pynndescent") |
| 43 | from vicinity.backends.pynndescent import PyNNDescentBackend |
| 44 | |
| 45 | return PyNNDescentBackend |
| 46 | |
| 47 | elif backend == Backend.FAISS: |
| 48 | _require("faiss", backend, "faiss") |
| 49 | from vicinity.backends.faiss import FaissBackend |
| 50 | |
| 51 | return FaissBackend |
| 52 | |
| 53 | elif backend == Backend.USEARCH: |
| 54 | _require("usearch", backend, "usearch") |
| 55 | from vicinity.backends.usearch import UsearchBackend |
| 56 | |
| 57 | return UsearchBackend |
| 58 | |
| 59 | elif backend == Backend.VOYAGER: |
| 60 | _require("voyager", backend, "voyager") |
| 61 | from vicinity.backends.voyager import VoyagerBackend |
| 62 | |
| 63 | return VoyagerBackend |
| 64 | |
| 65 | |
| 66 | __all__ = ["get_backend_class", "AbstractBackend", "BasicVectorStore"] |
no test coverage detected
searching dependent graphs…