.. _relnotes_v0.10.1: v0.10.1 ======= .. _relnotes_v0.10.1_Upgrade Notes: Upgrade Notes ------------- - ``ExternalSearchIndex.from_faiss_index`` no longer takes ``vectors``, so passing them raises ``TypeError``. For indexes that need the exact vectors for reconstruction, pass them to the constructor instead: ``ExternalSearchIndex(index, vectors)``. - ``ExternalSearchIndex.from_faiss_index`` now raises ``ValueError`` for an IVF index that has no direct map. Call ``faiss.extract_index_ivf(index).make_direct_map()`` first, or pass the vectors to ``ExternalSearchIndex(index, vectors)``. - Loading an ``InMemoryImageEmbeddingStore`` file saved by an earlier version raises ``ValueError``. Build the store from its images again and save it. - ``InMemoryImageEmbeddingStore.save_to_disk`` ignores ``embeddings`` on a store on an HNSW graph and emits a ``FutureWarning``, since the file holds the graph with the embeddings in it. .. _relnotes_v0.10.1_Performance: Performance ----------- - Building or updating a ``BruteForceIndex`` no longer copies the gallery first, which halves the extra peak memory and saves 14 to 17 % of the time. For 500 000 vectors of dimension 512 the peak went from 1985 MB to 1008 MB, and the build from 726 ms to 605 ms. Specs: 16 threads, 30 GB RAM, Python 3.14.3, NumPy 2.5.3. - ``ExternalSearchIndex.from_faiss_index`` no longer keeps a copy of the gallery and reads the vectors from the FAISS index instead. For 500 000 vectors of dimension 512 the adapter's peak memory went from 1952 MB to 0 MB and its steady memory from 977 MB to 0 MB. Specs: 16 threads, 30 GB RAM, Python 3.14.3, NumPy 2.5.3, faiss-cpu 1.15.0. - Building or updating an ``HnswIndex`` no longer copies the gallery first, which saves one gallery of peak memory. For 500 000 vectors of dimension 512 the extra peak went from 2097 MB to 1120 MB. Specs: 16 threads, 30 GB RAM, Python 3.14.3, NumPy 2.5.3. - A store on an HNSW graph saves the graph and loads it back without building it again. Loading a store of 100 000 embeddings of dimension 512 went from 22.7 s to 0.2 s, and saving it from 2.4 s to 0.2 s. Specs: 16 threads, 30 GB RAM, Python 3.14.3, NumPy 2.4.6, safetensors 0.8.0. .. _relnotes_v0.10.1_Bug Fixes: Bug Fixes --------- - A loaded HNSW store returns the same neighbors as the store that was saved. Before, the graph was built again on load, which with several threads could return different neighbors.