Table of Contents
Gaze DB
Ziele
- Unabhängigkeit
- Gezielte Suchfunktionen
- Erweiterbarkeit / Flexibilität
- Stabilität
- Geschwindigkeit!!!
- Möglichkeit zur Kommunikation mit KI Schnittstellen und Algorithmen
- Komplexere Distanzberechnung zu ermöglichen
- Ersparen von Zeit bei der Typ-Konvertierung
Anforderung
- Einfache kommunikation zwischen Indexer, Frontend, Http Server
- Intelligente Indexierung
- Kompression???
- Intelligente Speicherverwaltung
Funktionen
filterBy()
- Ähnlichkeit über ID
- Ähnlichkeit über übermittelten Daten (Features) für Upload
- Farbe
- Form
- Preis
- Marke
- Kategorie
- …
Die Filterung soll ein Standardgerüst bekommen, aber flexible anpassbar sein, um weitere Filterkriterien zu ermöglichen. Z.B. wenn ein Kunde das Filtern nach „Shop“ haben will (möglich bei Produktsuchmaschinen). Gewichtung der einzelnen Blöcke (Farbe, Form) soll dynamisch anpassbar sein.
manhattanDist() Berechnung einer Manhattan-Distanz
euclidDist() Berechnung des Euklidischen Abstands
hammingDist() Berechnung der Hamming-Distanz
sortByDistAsc() Sortierung der Ergebnisse nach Ähnlichkeit aufsteigend
sortByDistDesc() Sortierung der Ergebnisse nach Ähnlichkeit absteigend
Weitere??
Ablauf
Vorschläge sind willkommen!!!!
Idee 1 (Java oder C++): Compiler auf Indexer, holt Daten aus Mongo und Compiliert dies als Klasse → an Frontend. Frontend hat ein Server der die Klasse liest, im Speicher hält und die Berechnungen durchführt und Classen wieder entfernt, wenn eine neue vorhanden ist. Die Klasse enthält die Daten eines Kunden für die Suche. PHP kommuniziert per curl mit dem eigenem Server.
Idee 2 (C++ Phyton): Compiler auf Indexer, holt Daten aus Mongo und Compiliert dies als Klasse → an Frontend. Frontend nutzt ein Http-Server und Phyton um mit der compilierten Klasse zu kommunizieren. Die compilierte Klasse wird für die Suche verwendet. Rückgabewerte werden direkt über Phyton und den Http-Server zurückgegeben als Json oder CSV.
Idee x: …
Offene Fragen:
- Wie soll die Indizierung durchgeführt werden?
- Wie ist der Speicherbedarf?
- Höchste Parallelisierung die möglich wäre?
- Make or Buy?
- Wie soll der Datenaustausch stattfinden?
- …