faiss
Bietet Zugriff auf faiss-Indizes aus DuckDB.
Maintainer: JAicewizard, arjenpdevries
Installation und Laden
INSTALL faiss FROM community;LOAD faiss;Beispiel
-- Generate semi-random input data and queries-- Note that the dimensionality of our data will be 5CREATE TABLE input AS SELECT i AS id, apply(generate_series(1, 5), j-> CAST(hash(i*1000+j) AS FLOAT)/18446744073709551615) AS data FROM generate_series(1, 1000) s(i);CREATE TABLE queries AS SELECT i AS id, apply(generate_series(1, 5), j-> CAST(hash(i*1000+j+8047329823) AS FLOAT)/18446744073709551615) AS data FROM generate_series(1, 10) s(i);-- Create the index and insert data into itCALL FAISS_CREATE('name', 5, 'IDMap,HNSW32');CALL FAISS_ADD((SELECT id, data FROM input), 'name');-- On linux, with cuda, we can move the index to the GPU-- CALL FAISS_TO_GPU('name', 0);-- Get 10 results with uneven idSELECT id, UNNEST(FAISS_SEARCH_FILTER('name', 10, data, 'id%2==1', 'rowid', 'input')) FROM queries;-- Get 10 results with even idSELECT id, UNNEST(FAISS_SEARCH_FILTER('name', 10, data, 'id%2==0', 'rowid', 'input')) FROM queries;-- Get 10 resultsSELECT id, UNNEST(FAISS_SEARCH('name', 10, data)) FROM queries;Über faiss
Die FAISS-Erweiterung ermöglicht DuckDB-Nutzern, Vektordaten in faiss zu speichern und abzufragen und macht zuverlässige Vektorsuche zugänglicher. Auf allen Linux-Plattformen unterstützt diese Erweiterung auch GPU-Indizes; Sie können einen unterstützten Index mit CALL FAISS_MOVE_GPU({index_name}, {gpu number}) auf die GPU verschieben. Derzeit wird nur CUDA unterstützt; beachten Sie, dass die GPU-Unterstützung künftig in eine eigene Erweiterung ausgelagert werden kann.
Einige (die meisten) Indizes werden auf GPUs nicht unterstützt; das lässt sich jedoch sehr einfach beheben. Bitte öffnen Sie ein Issue in unserem Repository, damit wir das lösen können!
Hinzugefügte Funktionen
| function_name | function_type | description | comment | examples |
|---|---|---|---|---|
| __faiss_create_mask | table | NULL | NULL | |
| faiss_add | table | NULL | NULL | |
| faiss_create | table | NULL | NULL | |
| faiss_create_params | table | NULL | NULL | |
| faiss_destroy | table | NULL | NULL | |
| faiss_load | table | NULL | NULL | |
| faiss_manual_train | table | NULL | NULL | |
| faiss_save | table | NULL | NULL | |
| faiss_search | scalar | NULL | NULL | |
| faiss_search_filter | scalar | NULL | NULL | |
| faiss_search_filter_set | scalar | NULL | NULL | |
| faiss_to_gpu | table | NULL | NULL |
Überladene Funktionen
Diese Erweiterung fügt keine Funktionsüberladungen hinzu.
Hinzugefügte Typen
Diese Erweiterung fügt keine Typen hinzu.
Hinzugefügte Einstellungen
Diese Erweiterung fügt keine Einstellungen hinzu.