Semantisch Suche mittels Python & FastAPI

Im ersten Artikel bin ich bereits darauf eingegangen wie ihr eine REST-API in Python erstellen können. In diesem Artikel geht es darum, wie ihr diese für eine semantische Suche verwenden könnt.

 

Was ist semantisch Suche?

Bei der lexikalischen Suche werden eure Texte (z.B. Blog-Artikel auf eurer Website) nach den passenden Keywords durchsucht. Problem hierbei ist, dass Dokumente die nicht exakt die gleiche Schreibweise enthalten nicht gefunden werden. Such ihr z.B. nach öl-profit.de, so wird eine Seite die über ÖL Profit nicht gefunden, da die Schreibweise nicht identisch ist.

Dieses Problem umgeht die semantisch Suche. Dabei werden Texte und Suchanfragen in einen Vektorraum abgebildet so dass ähnliche Wörter und Texte nah sind im Vektorraum. Auf die genaue Schreibweise kommt es dabei nicht mehr an, ebenfalls werden Synonyme und verwandte Begriffe dabei erkannt. Eine Suchanfrage wird dabei ebenfalls erst in so einen Vektor umgewandelt, bevor dann im Vektorraum nach passenden Dokumenten gesucht wird.

Semantische Suche mittels Python

Die semantische Suche ist in Python sehr einfach zu realisieren dank des sentence-transformers Projekts. Installiert dazu zuerst das Projekt:

Anschließend könnt ihr eine sematische Suche wie folgt erzielen:

 

Semantische Suche als REST-API

Abschließend können wir dies als REST-API mittels FastAPI verpacken.

Jede Suchanfrage wandeln wir zuerst den den Vektor um (query_embedding). Anschließend wird dieser Vektor mit allen Einträgen im Corpus verglichen und die top-5 Ergebnisse werden zurück geliefert. Fertig.

Autor:
Zurück zur Übersicht aller Beiträge