Microsoft hat den Code für die von Bing verwendete Vektorsuchbibliothek geöffnet

Microsoft опубликовала Quellcodes der Bibliothek für maschinelles Lernen SPTAG (Space Partition Tree And Graph) mit Implementierung des Näherungsalgorithmus Suche nach dem nächsten Nachbarn. Bibliothek entwickelt in der Forschungsabteilung von Microsoft Research und dem Suchtechnologie-Entwicklungszentrum (Microsoft Search Technology Center). In der Praxis wird SPTAG von der Bing-Suchmaschine verwendet, um anhand des Kontexts von Suchanfragen die relevantesten Ergebnisse zu ermitteln. Der Code ist in C++ geschrieben und vertrieben von unter MIT-Lizenz. Build für Linux und Windows wird unterstützt. Es gibt eine Bindung für die Python-Sprache.

Obwohl die Idee, Vektorspeicher in Suchmaschinen zu verwenden, schon seit geraumer Zeit im Umlauf ist, wird ihre Umsetzung in der Praxis durch die hohe Ressourcenintensität von Operationen mit Vektoren und Einschränkungen der Skalierbarkeit erschwert. Durch die Kombination von Deep-Machine-Learning-Methoden mit Algorithmen für die Suche nach ungefähren nächsten Nachbarn ist es möglich, die Leistung und Skalierbarkeit von Vektorsystemen auf ein für große Suchmaschinen akzeptables Niveau zu bringen. In Bing beispielsweise liegt die Zeit zum Abrufen der relevantesten Ergebnisse bei einem Vektorindex von über 150 Milliarden Vektoren innerhalb von 8 ms.

Die Bibliothek umfasst Tools zum Erstellen eines Index und zum Organisieren von Vektorsuchen sowie eine Reihe von Tools zum Verwalten eines verteilten Online-Suchsystems, das sehr große Vektorsammlungen abdeckt. Angeboten die folgenden Module: Index-Builder für die Indizierung, Sucher für die Suche mithilfe eines in einem Cluster mehrerer Knoten verteilten Indexes, Server für die Ausführung von Handlern auf Knoten, Aggregator für die Zusammenfassung mehrerer Server zu einem und Client für das Senden von Abfragen. Die Aufnahme neuer Vektoren in den Index und das spontane Löschen von Vektoren wird unterstützt.

Die Bibliothek impliziert, dass die verarbeiteten und in der Sammlung dargestellten Daten in Form verwandter Vektoren formatiert sind, die auf der Grundlage dieser verglichen werden können Euklidisch (L2) oder Kosinus Entfernungen Die Suchabfrage gibt Vektoren zurück, deren Abstand zwischen ihnen und dem Originalvektor minimal ist. SPTAG bietet zwei Methoden zum Organisieren des Vektorraums: SPTAG-KDT (K-dimensionaler Baum (kd-Baum) Und Relativer Nachbarschaftsgraph) und SPTAG-BKT (k-means-Baum (k-bedeutet Baum und relative Nachbarschaftsgrafik). Die erste Methode erfordert bei der Arbeit mit dem Index weniger Ressourcen und die zweite zeigt eine höhere Genauigkeit der Suchergebnisse für sehr große Vektorsammlungen.

Dabei ist die Vektorsuche nicht auf Text beschränkt und kann auf multimediale Informationen und Bilder sowie in Systemen zur automatischen Generierung von Empfehlungen angewendet werden. Einer der auf dem PyTorch-Framework basierenden Prototypen implementierte beispielsweise ein Vektorsystem für die Suche auf der Grundlage der Ähnlichkeit von Objekten in Bildern, das unter Verwendung von Daten aus mehreren Referenzsammlungen mit Bildern von Tieren, Katzen und Hunden erstellt und in Vektorsätze umgewandelt wurde . Wenn ein eingehendes Bild zur Suche empfangen wird, wird es mithilfe eines maschinellen Lernmodells in einen Vektor umgewandelt, auf dessen Grundlage mithilfe des SPTAG-Algorithmus die ähnlichsten Vektoren aus dem Index ausgewählt und als Ergebnis die zugehörigen Bilder zurückgegeben werden.

Source: opennet.ru

Kommentar hinzufügen