Search Shortcut cmd + k | ctrl + k

- Overview
- Documentation
- Development
- Download Metrics
- FAQ
- Core Extensions
- List of Community Extensions

- lindel
- chsql
- httpserver
- magic
- crypto

faiss
Downloads 333this week

Provides a subset of the faiss API to DuckDB

Extension repository on GitHub
Extension descriptor (YAML)

### Installing and Loading

    INSTALL faiss FROM community;
    LOAD faiss;

### Example

    -- Generate semi-random input data and queries
    -- Note that the dimensionality of our data will be 5
    CREATE 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 it
    CALL FAISS_CREATE('name', 5, 'IDMap,HNSW32');
    CALL FAISS_ADD((SELECT id, data FROM input), 'name');
    -- Get 10 results with uneven id
    SELECT id, UNNEST(FAISS_SEARCH_FILTER('name', 10, data, 'id%2==1', 'rowid', 'input')) FROM queries;
    -- Get 10 results with even id
    SELECT id, UNNEST(FAISS_SEARCH_FILTER('name', 10, data, 'id%2==0', 'rowid', 'input')) FROM queries;
    -- Get 10 results
    SELECT id, UNNEST(FAISS_SEARCH('name', 10, data)) FROM queries;

### About faiss

The FAISS extension allows DuckDB users to store vector data in faiss, and query this data, making reliable vector search more accessible.

### Added Functions

function_name | function_type | description | comment | example
--- | --- | --- | --- | ---
__faiss_create_mask | table |  |  |
faiss_add | table |  |  |
faiss_create | table |  |  |
faiss_create_params | table |  |  |
faiss_destroy | table |  |  |
faiss_load | table |  |  |
faiss_manual_train | table |  |  |
faiss_save | table |  |  |
faiss_search | scalar |  |  |
faiss_search_filter | scalar |  |  |
faiss_search_filter_set | scalar |  |  |