Aviation-Glossar

Was ist FAISS?

Vector Search · Machine Learning 8 Sprachen
Definition
FAISS ist eine Open-Source-Bibliothek, die in einer Menge dichter Vektoren die Vektoren sucht, die einem Anfragevektor am nächsten liegen.

FAISS ist eine Open-Source-Bibliothek, die in einer Menge dichter Vektoren die Vektoren sucht, die einem Anfragevektor am nächsten liegen. Der Name steht für Facebook AI Similarity Search. Das Projekt schreibt ihn „Faiss“.

Was die Bibliothek leistet

Ein dichter Vektor ist eine Liste von Zahlen fester Länge. Ein neuronales Netz kann ein Bild oder einen Text in einen solchen Vektor umwandeln. Das nennt man Einbettung (Embedding). FAISS speichert viele Vektoren in einem Index. Zu einem Anfragevektor liefert es die nächsten Vektoren und ihre Abstände. Es vergleicht Vektoren mit der L2-Distanz (euklidisch) oder mit dem Skalarprodukt. Außerdem unterstützt es die Kosinus-Ähnlichkeit, das Skalarprodukt normalisierter Vektoren.

Die Forschungsgruppe Fundamental AI Research bei Meta entwickelt FAISS. Die Bibliothek ist in C++ geschrieben und hat Wrapper für Python. Einige Algorithmen laufen auch auf einer GPU.

Indextypen

Der Indextyp bestimmt das Verhältnis von Geschwindigkeit und Exaktheit.

  • IndexFlatL2 und IndexFlatIP vergleichen die Anfrage mit jedem Vektor, deshalb ist das Ergebnis exakt. IndexFlatIP verwendet das Skalarprodukt. Mit normalisierten Vektoren ergibt es die Kosinus-Ähnlichkeit.
  • IndexIVFFlat teilt die Vektoren in nlist Zellen auf. Eine Anfrage durchsucht davon nur nprobe Zellen. Das ist schneller, aber der nächste Nachbar kann übersehen werden, wenn seine Zelle nicht durchsucht wird.
  • IndexHNSWFlat durchsucht einen Graphen der Vektoren (ein hierarchischer navigierbarer Small-World-Graph).
  • IndexIVFPQ ergänzt die Produktquantisierung, die jeden Vektor in komprimierter Form speichert.

Die meisten Indizes müssen vor der Verwendung mit Beispielvektoren trainiert werden. IndexFlatL2 braucht kein Training.

Skalierung

FAISS kann Mengen von Vektoren durchsuchen, die nicht in den Arbeitsspeicher (RAM) passen. In der Arbeit von 2017 haben die Autoren einen Graphen der nächsten Nachbarn für 1 Milliarde Vektoren in weniger als 12 Stunden auf 4 GPUs aufgebaut.

Häufig gestellte Fragen

Wer entwickelt FAISS und in welcher Sprache ist es geschrieben?
FAISS wird vor allem bei der Forschungsgruppe Fundamental AI Research von Meta entwickelt. Es ist in C++ geschrieben und hat Wrapper für Python und numpy. Der Code steht unter der MIT-Lizenz. Meta hat es im März 2017 angekündigt.
Ist FAISS eine Vektordatenbank?
Nein. FAISS ist eine Bibliothek, die Sie aus Ihrem eigenen Programm aufrufen. Auf der Projektseite wird sie als Bibliothek für die Ähnlichkeitssuche und Clusterbildung dichter Vektoren beschrieben, nicht als Datenbank.
Wie findet FAISS die Kosinus-Ähnlichkeit?
FAISS vergleicht Vektoren mit der L2-Distanz oder dem Skalarprodukt. Für die Kosinus-Ähnlichkeit normalisieren Sie die Vektoren zuerst auf die Länge 1. Dann verwenden Sie einen Index für das Skalarprodukt, etwa IndexFlatIP. Die Kosinus-Ähnlichkeit ist das Skalarprodukt normalisierter Vektoren.
Liefert FAISS immer den exakten nächsten Nachbarn?
Nein. Die flachen Indizes (IndexFlatL2 und IndexFlatIP) durchsuchen jeden Vektor und liefern deshalb exakte Ergebnisse. Partitionierte Indizes wie IndexIVFFlat durchsuchen nur einen Teil der Daten. Sie sind schneller, verlieren aber die Garantie, den nächsten Nachbarn zu finden.

Referenzen

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

Dies ist ein Referenzeintrag. TarmacView bietet Drohneninspektionsdienste an und verkauft nicht die in diesem Glossar beschriebene Ausrüstung oder Materialien.

Loslegen Muss Ihre Flugplatzbefeuerung geprüft werden? TarmacView prüft PAPI, Start-/Landebahn- und Anflugbefeuerung per Drohne zwischen Flugbewegungen und erstellt einen Konformitätsbericht, der für Ihre Aufsichtsbehörde ausgelegt ist. Pisten- und Hindernisinspektion sind in Entwicklung.
Weiterlesen

Mehr erfahren

03 SEITEN
k-Nächste-Nachbarn (kNN)
glossary

k-Nächste-Nachbarn (kNN)

Der Algorithmus k-Nächste-Nachbarn (kNN) ordnet eine Klasse per Mehrheitsentscheid unter den k nächsten gespeicherten Punkten zu. Wie er arbeitet, wie man k wählt und wo er versagt.

Einbettungsraum
glossary

Einbettungsraum

Ein Einbettungsraum ist ein hochdimensionaler mathematischer Raum, in dem Objekte wie Bilder, Texte oder Sensordaten als Vektoren dargestellt werden, was Ähnlichkeitssuche und Mustererkennung in KI-gestützten Infrastrukturprüfsystemen ermöglicht.

Transfer Learning
glossary

Transfer Learning

Transfer Learning nutzt ein Modell, das für eine Aufgabe trainiert wurde, um eine neue Aufgabe zu erlernen. Wie Merkmalsextraktion und Feinabstimmung funktionieren und wo sie auf die Prüfung von Pistenbelägen treffen.