Das Unternehmen Microsoft ursprüngliche Texte der Bibliothek für maschinelles Lernen (Space Partition Tree And Graph) mit Implementierung des Algorithmus für die Annäherung . Die Bibliothek in der Forschungsabteilung von Microsoft Research und im Zentrum für Suchtechnologien (Microsoft Search Technology Center) entwickelt. In der Praxis wird SPTAG in der Suchmaschine Bing eingesetzt, um die relevantesten Ergebnisse unter Berücksichtigung des Kontexts der Suchanfragen zu ermitteln. Der Code ist in C++ geschrieben und unter der MIT-Lizenz verfügbar. Eine Version für Linux und Windows wird unterstützt. Es gibt ein Binding für die Programmiersprache Python.
Obwohl die Ideen zur Anwendung von Vektorspeichern in Suchmaschinen schon lange diskutiert werden, stehen ihrer praktischen Umsetzung hohe Ressourcenanforderungen und Skalierbarkeitsgrenzen entgegen. Die Kombination aus tiefem maschinellen Lernen und Algorithmen für die annähernde Suche nach dem nächsten Nachbarn hat es ermöglicht, die Leistungsfähigkeit und Skalierbarkeit von Vektorsystemen auf ein für große Suchmaschinen akzeptables Niveau zu bringen. Beispielsweise liegt die Zeit für die Abfrage der relevantesten Ergebnisse in Bing bei über 150 Milliarden Vektoren bei weniger als 8 ms.
Die Bibliothek umfasst Werkzeuge zum Aufbau von Indizes und zur Organisation der Vektorsuche sowie ein Set an Instrumenten zur Unterstützung eines verteilten Online-Suchsystems, das sehr große Vektorsammlungen abdeckt. Die folgenden Module: Index Builder zur Indizierung, Searcher zur Suche unter Verwendung des verteilten Indexes in mehreren Knoten, Server zur Ausführung von Prozessoren auf den Knoten, Aggregator zur Zusammenführung mehrerer Server zu einem Ganzen und Client zum Senden von Anfragen. Es wird unterstützt, neue Vektoren in den Index einzufügen und Vektoren zur Laufzeit zu entfernen.
Die Bibliothek geht davon aus, dass die verarbeiteten und in der Sammlung dargestellten Daten in Form von verwandten Vektoren strukturiert sind, die auf Basis von (L2) oder Abständen verglichen werden können. Bei einer Suchanfrage werden Vektoren zurückgegeben, deren Abstand zum ursprünglichen Vektor minimal ist. In SPTAG stehen zwei Methoden zur Organisation des Vektorraums zur Verfügung: SPTAG-KDT (K-dimensionale Baumstruktur () und ) und SPTAG-BKT (k-Mittelwert-Baum ( und Graph der relativen Nachbarschaften). Die erste Methode erfordert weniger Ressourcen bei der Arbeit mit dem Index, während die zweite bei sehr großen Vektorsammlungen eine höhere Genauigkeit der Suchergebnisse zeigt.
Vektorbasierte Suche beschränkt sich nicht nur auf Text, sondern kann auch auf multimediale Informationen und Bilder angewandt werden, beispielsweise in Systemen zur automatischen Empfehlungserstellung. In einem der Prototypen, der auf dem PyTorch-Framework basiert, wurde ein vektorales Suchsystem entwickelt, das Objekte auf Bildern hinsichtlich ihrer Ähnlichkeit vergleicht. Dieses System nutzt Daten aus mehreren Referenzsammlungen von Bildern von Tieren, darunter Katzen und Hunde, die in Vektor-Sets umgewandelt wurden. Wenn ein Bild zur Suche eingeht, wird es mithilfe eines maschinellen Lernmodells in einen Vektor umgewandelt. Daraufhin wählt der Algorithmus SPTAG aus dem Index die passendsten Vektoren aus, und die zugehörigen Bilder werden als Ergebnis zurückgegeben.
Quelle: opennet.ru
