通过Web服务器应用程序使用JSON搜索,该应用程序用加拿大不列颠哥伦比亚省的Rustlang编写。

非常适合搜索自然语言向量,图像向量或您想要向量之间最小距离的任何其他向量。它还适合地理坐标,非常适合在商店出售的服务或商品。它仅返回记录中的ID,矢量距离和公里数的数组,因此,如果数据不仅仅是ID,它需要来自单独的服务。
所需的文件格式:字节数据的未验证行:ID的32个字节,然后对矢量的一些F32数(512就是示例),然后坐标为F32的2个。有关灵感,请参见python文件serde-bin-vec.py 。
开始: cargo run --release ./words_subset.data 8989 512
地点: cargo run --release path_to_data port_to_host vector_size
请求格式是json到 /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到 /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]
我有一种用于索引的自定义聚类算法。这有点未经测试。
该搜索是每个请求上的单个核心运行,但是如果多个查询同时执行,则可以通过WebServer Actix使用更多的核心。
在鲍勃·马特(Bob Matte)和秘密的第三人称的帮助下,安德鲁·马特(Andrew Matte)做了。主要由加拿大政府的就业和社会发展加拿大(ESDC)的青年就业和技能策略(YESS)资助,这是通过上下文机会和资源分配系统(CORDS)项目资助的。