Source code for indexers

import importlib

from .base import BaseIndexer


[docs] def get_indexer_map(): # Registry of indexer names to (module_path, class_name, optional_init_kwargs) indexers = { "faiss": ("indexers.faiss_indexer", "FaissIndexer", {"index_type": "Flat"}), "faiss-ivf": ("indexers.faiss_indexer", "FaissIndexer", {"index_type": "IVF"}), "faiss-hnsw": ("indexers.faiss_indexer", "FaissIndexer", {"index_type": "HNSW"}), "faiss-sq8": ("indexers.faiss_indexer", "FaissIndexer", {"index_type": "SQ8"}), "faiss-pq": ("indexers.faiss_indexer", "FaissIndexer", {"index_type": "PQ"}), "chroma": ("indexers.chroma_indexer", "ChromaIndexer", {}), "qdrant": ("indexers.qdrant_indexer", "QdrantIndexer", {}), "milvus": ("indexers.milvus_indexer", "MilvusIndexer", {}), "lance": ("indexers.lance_indexer", "LanceIndexer", {}), "weaviate": ("indexers.weaviate_indexer", "WeaviateIndexer", {}), "duckdb": ("indexers.duckdb_indexer", "DuckDBIndexer", {}), "usearch": ("indexers.usearch_indexer", "USearchIndexer", {"dtype": "f32"}), "usearch-f16": ("indexers.usearch_indexer", "USearchIndexer", {"dtype": "f16"}), "usearch-i8": ("indexers.usearch_indexer", "USearchIndexer", {"dtype": "i8"}), "simple": ("indexers.simple_indexer", "SimpleIndexer", {}), "annoy": ("indexers.annoy_indexer", "AnnoyIndexer", {}), "hnswlib": ("indexers.hnswlib_indexer", "HNSWLibIndexer", {}), "scann": ("indexers.scann_indexer", "ScaNNIndexer", {}), "vespa": ("indexers.vespa_indexer", "VespaIndexer", {}), "elasticsearch": ("indexers.elasticsearch_indexer", "ElasticsearchIndexer", {}), "pgvector": ("indexers.pgvector_indexer", "PGVectorIndexer", {}), "bm25": ("indexers.bm25_indexer", "BM25Indexer", {}), } indexer_map = {} for name, config in indexers.items(): module_path, class_name, kwargs = config try: module = importlib.import_module(module_path) cls = getattr(module, class_name) # If there are kwargs, we return a factory function or a partial if kwargs: import functools indexer_map[name] = functools.partial(cls, **kwargs) else: indexer_map[name] = cls except (ImportError, ModuleNotFoundError): continue return indexer_map
__all__ = [ "BaseIndexer", "get_indexer_map", ]