Pesquisa de vetores usando o JSON por meio de um aplicativo de servidor da Web, escrito em Rustlang em BC, Canadá.

Ótimo para pesquisar vetores de linguagem natural, vetores de imagem ou qualquer outro vetores onde você deseja a menor distância entre os vetores. Ele também acomoda geo-coordenadas, o que é ótimo para serviços ou mercadorias vendidas na loja. Ele retorna apenas uma variedade de ID, distância do vetor e quilômetros do registro; portanto, se houver mais dados do que apenas o ID, isso precisará vir de um serviço separado.
Formato de arquivo necessário: linhas inesperadas de dados de bytes: 32 bytes para o ID, então um número de F32 para o vetor (512 é apenas o exemplo), depois 2 de F32 para a coordenada. Consulte o arquivo python serde-bin-vec.py para obter inspiração.
Para começar: cargo run --release ./words_subset.data 8989 512
Onde: cargo run --release path_to_data port_to_host vector_size
O formato de solicitação é JSON para /search ou /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}
O formato de solicitação é JSON para /get_by_id:
{"item_id": String,
"amount_of_results": int}
O formato de resposta é json: {"items: [{"id": str}, {"id": str}, ...]}
Demo.py deve produzir resultados em registros de 10k nesta saída usando o arquivo words_subset.data:
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
Pode haver linhas comentadas relacionadas à geo-distância em quilômetros. Por favor, sinta -se à vontade para entrar em contato comigo se precisar de ajuda para funcionar. Meu e -mail é [email protected]
Eu tenho um algoritmo de cluster personalizado para a indexação. É um pouco não testado.
A pesquisa é executada em um único núcleo por solicitação, mas se várias consultas estiverem executando ao mesmo tempo, poderá usar mais núcleos graças ao Actix, o servidor da web.
Fez Andrew Matte, com alguma ajuda de Bob Matte, e uma terceira pessoa secreta. Principalmente financiado pelo emprego e desenvolvimento social do governo canadense (ESDC) da estratégia de emprego e habilidades da juventude (YESS) por meio do projeto Sistema de Distribuição de Oportunidades e Recursos Contextuais (Cords).