Vektorsuche mit JSON über eine Webserveranwendung, die in Rustlang in BC, Kanada, geschrieben wurde.

Ideal für die Suche nach natürlichen Sprachvektoren, Bildvektoren oder anderen Vektoren, bei denen Sie den kleinsten Abstand zwischen Vektoren wünschen. Es bietet auch Geo-Coordinaten, die sich hervorragend für Dienstleistungen oder Waren eignen, die im Geschäft verkauft werden. Es gibt nur eine Reihe von ID, Vektorentfernung und Kilometern aus dem Datensatz zurück. Wenn also mehr Daten als nur die ID vorhanden sind, muss dies von einem separaten Dienst stammen.
Erforderliches Dateiformat: Unted Zeilen der Byte -Daten: 32 Bytes für die ID, dann eine beliebige Anzahl von F32 für den Vektor (512 ist nur das Beispiel), dann 2 von F32 für die Koordinate. In der Python-Datei serde-bin-vec.py finden Sie Inspiration.
Zu starten: cargo run --release ./words_subset.data 8989 512
Wo: cargo run --release path_to_data port_to_host vector_size
Das Anforderungsformat ist JSON TO /SEECK ODER / /SEECK_ANN:
{"sort_by_vec": 1 or 0,
"geoc": [float],
"vector": [float], (matching the database size)
"geo_threshold": float,
"vec_threshold": float,
"limit_results": int}
Das Anforderungsformat ist JSON TO /GET_BY_ID:
{"item_id": String,
"amount_of_results": int}
Antwortformat ist JSON: {"items: [{"id": str}, {"id": str}, ...]}
Demo.py sollte in dieser Ausgabe mit der Datei von Words_Subset.Data Ergebnisse auf 10K -Datensätzen in dieser Ausgabe liefern:
Running exhaustive seach 100 times
times for exhaustive search
max time taken 0:00:00.011164
min time taken 0:00:00.006289
median time taken 0:00:00.006847
Running approximate seach 1000 times
times for approximate search
max time taken 0:00:00.001434
min time taken 0:00:00.000714
median time taken 0:00:00.000945
Es können kommentierte Zeilen im Zusammenhang mit der Geodistanz in Kilometern werden. Bitte wenden Sie sich an mich, wenn Sie Hilfe benötigen, um das zum Laufen zu bringen. Meine E -Mail ist [email protected]
Ich habe einen benutzerdefinierten Clustering -Algorithmus für die Indizierung. Es ist etwas ungetestet.
Die Suche wird auf einem einzigen Kern pro Anfrage ausgeführt. Wenn jedoch gleichzeitig mehrere Abfragen ausgeführt werden, kann sie dank Actix, dem Webserver, mehr Kerne verwenden.
Machte Andrew Matte mit Hilfe von Bob Matte und einer geheimen dritten Person. Meistens finanziert durch die Jugendbeschäftigungs- und Skills -Strategie (YESS) der kanadischen Regierung und die soziale Entwicklung Kanadas (CORDS) -Projekt für die Beschäftigung und Qualifikation (YESS).