TL; DR: Eine gehackte gemeinsame Web -App mit einem MongoDB -Atlas -Backend mit verschiedenen Suchabfragen.
Es kann schwierig sein, eine großartige Erfahrung in Anwendungen zu bieten, die eine großartige Benutzer -Sucherfahrung anbieten, müssen jedoch nicht sein.
Diese Anwendung kombiniert mehrere Suchtechniken, die in MongoDB in einem operativen Datensatz mit Filmen verfügbar sind. MongoDB ist eine sehr beliebte Dokumentendatenbank, die für ihre leistungsstarken Transaktions- und analytischen Funktionen für strukturierte und halbstrukturierte Daten in einer JSON-ähnlichen Struktur bekannt ist. Die Hinzufügung von Relevanzsuche und semantischer Vektorsuche in derselben Plattform und der Abfragesprache ist ohne viel Komplexität sehr einfach und einfach zu bedienen. Als Vektordatenbank werden nun auch unstrukturierte Daten wie Text, Bilder oder Audio in Vektor-Einbettungen (hochdimensionale Vektoren) gespeichert, um es einfach zu ermöglichen, ähnliche Objekte schnell zu finden und abzurufen.
MongoDB ),Lucene ),text-embedding-ada-002 ),clip-ViT-B-32 ), Die Atlas-Suche ermöglicht Relevanzsuche und Bewertungsfunktionen auf der Grundlage von Open-Source-Lucene-Indizes. Hier suche ich es, um relevante Filme mit Sprachunterstützung und Tippfehler zu durchsuchen. 
Die Texthandlung jedes Films wird durch OpenAs Einbettungs-API geführt, und diese text-embedding-ada-002 Einbettungen werden in MongoDB gespeichert. Die Eingabeaufforderung des Benutzers ist eingebettet und verwendet, um in der Vektordatenbank für ähnliche Inhalte abzufragen. Sie können entweder nach Ihrer Eingabe suchen oder eine Ähnlichkeitssuche basierend auf der Handlung eines vorhandenen Films durchführen. 
Das Posterbild jedes Films wird durch clip-ViT-B-32 interpretiert. Diese Bildeinbettungen werden in MongoDB gespeichert. Der Benutzer kann Filme mit Posterbildern finden, die seiner Abfrage ähneln. 
Die Dokumentstruktur sieht wie folgt aus. In Blue haben Sie die Felder, verschachtelte Objekte und Arrays mit Betriebsdaten. Das Blau wird von der Datenbanksuche und der Relevanzsuche für Atlas -Suchanlagen abgefragt. Dieses Projekt fügt die Felder in Yellow hinzu: eine Basis64 -Darstellung des Filmplakats, Ada OpenAI -Texteinbettungen und Clip -Bild -Einbettungen, die von der Atlas -Vektor -Suche abgefragt wurden.

Sie brauchen python3 und pip .
python3 --version
python3 -m ensurepip --upgrade
pip3 install -r requirements.txt
Sie benötigen einen MongoDB Atlas Cluster. Dies kann ein kostenloser Cluster sein, der auf cloud.mongodb.com erstellt wurde. Stellen Sie sicher, dass der Datenbankzugriff und der Netzwerkzugriff eine Verbindung zur Datenbank herstellen können. Beachten Sie kostenlose Cluster haben eine Größe und Leistungsbeschränkung. Sie können diese gerne auf einem kleinen kostenpflichtigen Cluster mit viel mehr Daten ausführen.
Sie müssen einige lokale Umgebungsvariablen festlegen. Die Vorlage ist .env.example , die Sie in Ihre lokale .env -Datei kopieren können.
MDB_CONN=<YOUR MongoDB Atlas connection string>
DB="sample_mflix"
COLL="embedded_movies"
OPENAI_API_KEY=<YOUR OpenAI API key>
Klonen Sie das MDB-Search-Data Repo.
Dort werden Ihnen 2 Optionen angeboten: Wiederherstellen von Sicherungen oder Erzeugen der Einbettungen selbst vor Ort. Das Wiederherstellen von Backup dauert weniger als 1 Minute.
Geben Sie in Atlas auf der Search tab die folgende JSON -Konfiguration ein. Verwenden Sie den default -Indexnamen und stellen Sie sicher, dass er in der Sammlung embedded_movies erstellt wird. Dies ist die Magie, die die dynamische Volltext -Suche auf Feldern ermöglicht und die Vektorsuche -Indizes aktiviert. Keine Datenkopie benötigt: o
{
"mappings": {
"dynamic": true,
"fields": {
"plot_embedding": {
"dimensions": 1536,
"similarity": "cosine",
"type": "knnVector"
},
"poster_embedding": {
"dimensions": 512,
"similarity": "cosine",
"type": "knnVector"
}
}
}
}
Dies ist ein Flask Python3 Web-App.
Starten Sie die Flask -App wie diese
flask --app app run
Oder mit einem Helfer benutze Python einfach so
python app.py
Sie können auf die Web -App unter http://localhost:8080 zugreifen.
Sie können jetzt:
Vertrauen Sie dem ML und dem Einbettungsmodell. Können Sie sich ansehen, warum diese Bilder ähnlich sind?