Microsoft hat den Code der Vektor-Suchbibliothek, die in Bing verwendet wird, geöffnet.

Das Unternehmen Microsoft veröffentlicht ursprüngliche Texte der Bibliothek für maschinelles Lernen SPTAG (Space Partition Tree And Graph) mit der Implementierung des Algorithmus für ungefähre nächste Nachbarsuche. Die Bibliothek wurde wurde im Forschungsbereich von Microsoft Research und im Microsoft Search Technology Center entwickelt. In der Praxis wird SPTAG in der Bing-Suchmaschine eingesetzt, um die relevantesten Ergebnisse im Kontext von Suchanfragen zu bestimmen. Der Code ist in C++ geschrieben und wird verbreitet steht unter der MIT-Lizenz. Es wird eine Version für Linux und Windows unterstützt. Es gibt ein Binding für die Programmiersprache Python.

Obwohl die Ideen zur Anwendung von Vektorspeichern in Suchsystemen schon lange im Umlauf sind, wird ihre Implementierung durch den hohen Ressourcenverbrauch bei Vektoroperationen und Skalierbarkeitsbeschränkungen erschwert. Die Kombination von Methoden des tiefen maschinellen Lernens mit Algorithmen zur ungefähren nächsten Nachbarsuche hat es ermöglicht, die Leistung und Skalierbarkeit von Vektorsystemen auf ein für große Suchmaschinen akzeptables Niveau zu bringen. Beispielsweise erreicht die Bing-Suchmaschine bei einem Vektorindex mit über 150 Milliarden Vektoren eine Abfragezeit von unter 8 ms für die relevantesten Ergebnisse.

Die Bibliothek umfasst Werkzeuge zum Erstellen von Indizes und zur Organisation der Vektorsuche sowie ein Set von Werkzeugen zur Unterstützung eines verteilten Online-Suchsystems, das sehr große Vektorsammlungen umfasst. Es werden folgende Module angeboten: Index Builder zur Indizierung, Searcher zur Suche unter Verwendung des verteilten Index in einem Cluster aus mehreren Knoten, Server zum Ausführen von Handlern auf den Knoten, Aggregator zur Integration mehrerer Server zu einem Ganzen und Client zum Senden von Anfragen. Es wird unterstützt, neue Vektoren in den Index einzufügen und Vektoren im laufenden Betrieb zu entfernen.

Die Bibliothek geht davon aus, dass die zu verarbeitenden und in der Sammlung dargestellten Daten in Form von verknüpften Vektoren strukturiert sind, die auf Basis von euklidischen (L2) oder kosinusmäßigen Abständen verglichen werden können. Bei einer Suchanfrage werden die 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-dimensionaler Baum (kd-tree) und Graf der relativen Nachbarschaften) und SPTAG-BKT (k-Mittelwerte Baum (k-means tree und das Diagramm relativer Nachbarschaften). Die erste Methode benötigt weniger Ressourcen bei der Arbeit mit dem Index, während die zweite eine höhere Genauigkeit der Suchergebnisse bei sehr großen Sammlungen von Vektoren zeigt.

Dabei ist die Vektorsuche nicht auf Text beschränkt und kann auch auf multimediale Informationen und Bilder angewandt werden, sowie in Systemen zur automatischen Erstellung von Empfehlungen. Zum Beispiel wurde in einem der Prototypen auf Basis des PyTorch-Frameworks ein Vektorsystem für die Suche unter Berücksichtigung der Ähnlichkeit von Objekten in Bildern implementiert, das unter Verwendung von Daten aus mehreren Referenzsammlungen mit Bildern von Tieren, Katzen und Hunden entwickelt wurde, die in Vektorsätze umgewandelt wurden. Bei der Eingabe eines Bildes zur Suche wird es mithilfe eines Machine-Learning-Modells in einen Vektor umgewandelt, auf dessen Grundlage mithilfe des SPTAG-Algorithmus aus dem Index die ähnlichsten Vektoren ausgewählt werden und als Ergebnis die zugehörigen Bilder zurückgegeben werden.

Quelle: opennet.ru

60GB SSD 8Gb DDR4