캐나다 BC의 Rustlang에서 작성된 웹 서버 응용 프로그램을 통해 JSON을 사용하여 벡터 검색.

자연어 벡터, 이미지 벡터 또는 벡터 사이의 가장 작은 거리를 원하는 다른 벡터를 검색하는 데 좋습니다. 또한 매장에서 판매되는 서비스 또는 상품에 적합한 지오 좌표를 수용합니다. 레코드에서 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 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]입니다
인덱싱에 대한 사용자 정의 클러스터링 알고리즘이 있습니다. 다소 테스트되지 않았습니다.
검색은 요청 당 단일 코어에서 실행되지만 여러 쿼리가 동시에 실행되는 경우 웹 서버 인 Actix 덕분에 더 많은 코어를 사용할 수 있습니다.
Bob Matte의 도움으로 Andrew Matte를 만들었고 비밀 3 인칭. 맥락 기회 및 자원 분배 시스템 (CORDS) 프로젝트를 통해 캐나다 정부의 고용 및 사회 개발 캐나다 (ESDC) 청소년 고용 및 기술 전략 (YESS)이 주로 자금을 지원합니다.