カナダのBCのRustlangで書かれたWebサーバーアプリケーションを介してJSONを使用したベクトル検索。

自然言語ベクトル、画像ベクトル、またはベクター間の最小の距離が必要なその他のベクトルを検索するのに最適です。また、地理配置物にも対応します。これは、店頭で販売されているサービスや商品に最適です。レコードからID、ベクトル距離、キロメートルの配列のみを返すため、IDだけよりも多くのデータがある場合は、別のサービスから来る必要があります。
必要なファイル形式:バイトデータの未完成の行:IDの32バイト、ベクトルのF32の数件(512は単なる例です)、および座標のF32の2つ。インスピレーションについては、Pythonファイルserde-bin-vec.pyを参照してください。
開始する: cargo run --release ./words_subset.data 8989 512
WHERE: cargo run --release path_to_data port_to_host vector_size
リクエスト形式はjson to /searchまたは /search_ann:
{"sort_by_vec": 1 or 0,
"geoc": [float],
"vector": [float], (matching the database size)
"geo_threshold": float,
"vec_threshold": float,
"limit_results": int}
リクエスト形式はJSON to /get_by_idです:
{"item_id": String,
"amount_of_results": int}
応答形式はjson: {"items: [{"id": str}, {"id": str}, ...]}
demo.pyは、words_subset.dataファイルを使用して、この出力の10kレコードに結果を生成する必要があります。
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
キロメートルの地理距離に関連するコメントアウトラインがあるかもしれません。あなたがそれを機能させるのを手伝う必要があるならば、私に連絡してください。私のメールは[email protected]です
インデックス作成用のカスタムクラスタリングアルゴリズムがあります。それはややテストされていません。
検索はリクエストごとに単一のコアで実行されますが、複数のクエリが同時に実行されている場合、WebサーバーであるActixのおかげでより多くのコアを使用できます。
ボブ・マットの助けを借りて、アンドリュー・マットを作り、秘密の第三者。主に、カナダ政府の雇用と社会開発カナダ(ESDC)の青少年雇用とスキル戦略(YESS)によって資金提供されており、文脈的機会とリソース配信システム(CORDS)プロジェクトを通じて。