← SŁOWNIK LOTNICZY
0-9 A B C D E F G H I J K L M N O P R S T U V W Z
Słownik lotniczy

Czym jest FAISS?

Vector Search · Machine Learning 8 języki
Definicja
FAISS to biblioteka open-source, która w zbiorze gęstych wektorów wyszukuje te, które są najbliższe wektorowi zapytania.

FAISS to biblioteka open-source, która w zbiorze gęstych wektorów wyszukuje te, które są najbliższe wektorowi zapytania. Nazwa oznacza Facebook AI Similarity Search. Projekt pisze ją jako „Faiss”.

Co robi

Gęsty wektor to lista liczb o stałej długości. Sieć neuronowa może zamienić obraz lub tekst w taki wektor. Nazywa się to embeddingiem. FAISS przechowuje wiele wektorów w indeksie. Dla wektora zapytania zwraca najbliższe wektory i ich odległości. Porównuje wektory odległością L2 (euklidesową) lub iloczynem skalarnym. Obsługuje też podobieństwo cosinusowe, które jest iloczynem skalarnym wektorów znormalizowanych.

Grupa Fundamental AI Research w Meta rozwija FAISS. Biblioteka jest napisana w C++ i ma wrappery dla Pythona. Niektóre algorytmy działają też na GPU.

Typy indeksów

Typ indeksu określa równowagę między szybkością a dokładnością.

  • IndexFlatL2 i IndexFlatIP porównują zapytanie z każdym wektorem, więc wynik jest dokładny. IndexFlatIP używa iloczynu skalarnego. Przy wektorach znormalizowanych daje podobieństwo cosinusowe.
  • IndexIVFFlat dzieli wektory na nlist komórek. Zapytanie przeszukuje tylko nprobe z nich. Jest to szybsze, ale najbliższy sąsiad może zostać pominięty, jeśli jego komórka nie zostanie przeszukana.
  • IndexHNSWFlat przeszukuje graf wektorów (hierarchical navigable small world graph).
  • IndexIVFPQ dodaje kwantyzację iloczynową (product quantization), która przechowuje każdy wektor w postaci skompresowanej.

Większość indeksów trzeba wytrenować na przykładowych wektorach przed użyciem. IndexFlatL2 nie wymaga treningu.

Skala

FAISS może przeszukiwać zbiory wektorów, które nie mieszczą się w RAM. W artykule z 2017 roku autorzy zbudowali graf najbliższych sąsiadów dla 1 miliarda wektorów w mniej niż 12 godzin na 4 GPU.

Często zadawane pytania

Kto tworzy FAISS i w jakim języku jest napisany?
FAISS jest rozwijany głównie w grupie Fundamental AI Research w Meta. Jest napisany w C++ i ma wrappery dla Pythona i numpy. Kod ma licencję MIT. Meta ogłosiła go w marcu 2017 roku.
Czy FAISS to baza danych wektorowych?
Nie. FAISS to biblioteka, którą wywołujesz z własnego programu. Jej strona projektu opisuje go jako bibliotekę do wyszukiwania podobieństw i klastrowania gęstych wektorów, a nie jako bazę danych.
Jak FAISS wyznacza podobieństwo cosinusowe?
FAISS porównuje wektory odległością L2 lub iloczynem skalarnym. Dla podobieństwa cosinusowego najpierw znormalizuj wektory do długości jednostkowej. Potem użyj indeksu iloczynu skalarnego, na przykład IndexFlatIP. Podobieństwo cosinusowe to iloczyn skalarny wektorów znormalizowanych.
Czy FAISS zawsze zwraca dokładnego najbliższego sąsiada?
Nie. Indeksy płaskie (IndexFlatL2 i IndexFlatIP) przeszukują każdy wektor, więc wyniki są dokładne. Indeksy z podziałem, takie jak IndexIVFFlat, przeszukują tylko część danych. Są szybsze, ale tracą gwarancję znalezienia najbliższego sąsiada.

Bibliografia

faiss-github
facebookresearch/faiss, README Meta Fundamental AI Research (GitHub)
faiss-wiki-indexes
Faiss indexes (Faiss wiki) Meta Fundamental AI Research (GitHub)
faiss-wiki-getting-started
Getting started (Faiss wiki) Meta Fundamental AI Research (GitHub)
faiss-meta-2017
Faiss: A library for efficient similarity search Engineering at Meta

To wpis referencyjny. TarmacView świadczy usługi inspekcji dronami i nie sprzedaje sprzętu ani materiałów opisanych w tym słowniczku.

Rozpocznij Potrzebujesz weryfikacji oświetlenia lotniska? TarmacView sprawdza PAPI, oświetlenie pasa startowego i podejścia za pomocą drona, między ruchami statków powietrznych, i dostarcza raport zgodności przygotowany dla Twojego regulatora. Inspekcja nawierzchni i przeszkód jest w trakcie opracowywania.
Czytaj dalej

Dowiedz się więcej

03 STRONY
k-Najbliższych Sąsiadów (kNN)
glossary

k-Najbliższych Sąsiadów (kNN)

Algorytm k-najbliższych sąsiadów (kNN) przypisuje klasę przez głosowanie większościowe wśród k najbliższych zapisanych punktów. Jak działa, jak wybrać k i gdzie zawodzi.

Przestrzeń osadzeń
glossary

Przestrzeń osadzeń

Przestrzeń osadzeń to wielowymiarowa przestrzeń matematyczna, w której obiekty takie jak obrazy, tekst czy dane sensoryczne są reprezentowane jako wektory, umożliwiając wyszukiwanie podobieństw i rozpoznawanie wzorców w systemach inspekcji infrastruktury opartych na sztucznej inteligencji.

Faza nośna
glossary

Faza nośna

Faza nośna to faza fali nośnej sygnału GNSS. Odbiornik mierzy ją, aby określić odległość do satelity z dokładnością do ułamka długości fali.