Repository navigation
v0.10.1
Pre-releaseRelease Notes
v0.10.1
Upgrade Notes
ExternalSearchIndex.from_faiss_indexno longer takesvectors, so passing them raisesTypeError. For indexes that need the exact vectors for reconstruction, pass them to the constructor instead:ExternalSearchIndex(index, vectors).ExternalSearchIndex.from_faiss_indexnow raisesValueErrorfor an IVF index that has no direct map. Callfaiss.extract_index_ivf(index).make_direct_map()first, or pass the vectors toExternalSearchIndex(index, vectors).- Loading an
InMemoryImageEmbeddingStorefile saved by an earlier version raisesValueError. Build the store from its images again and save it. InMemoryImageEmbeddingStore.save_to_diskignoresembeddingson a store on an HNSW graph and emits aFutureWarning, since the file holds the graph with the embeddings in it.
Performance
-
Building or updating a
BruteForceIndexno 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_indexno 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
HnswIndexno 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.
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.