Fast vector similarity

Data

similarity measures library

SHOW HN2023

141points
40comments
#451of 3,109 in 2023
Top 15%of 2023 by points

How HN took it

CuriousMostly questions and neutral comments

2 positive, 7 neutral or asking, 0 mixed, 3 critical, out of 12 comments about the project. Thread score -0.05.

Performance: 0 for, 2 againstDesign: 0 for, 1 againstExecution: 1 for, 0 against

The thread, comment by comment

Each row is a top-level comment and its replies, in HN's order. Select a cell to open that comment on HN.

positive neutral or mixed critical about another commenter or something else the maker

What HN said

What people liked

  • Fast performance versus NumPy

    From 2 comments
    • Updated, thanks :)
      ashvardanian on HN
    • Always great to see projects like this that distribute wheels for a whole ton of different platforms - makes installation so much less painful if you don't need to ensure you…
      simonw on HN
  • Wheels for many platforms make installation easy

    From 1 comment
    • Always great to see projects like this that distribute wheels for a whole ton of different platforms - makes installation so much less painful if you don't need to ensure you…
      simonw on HN

Objections

  • Library can consume all CPU cores and compete with other workloads

    From 1 comment
    • I realize you have a different usecase in mind, so the following feedback might not be that useful to you. I also haven’t reviewed your API design, so perhaps you have already…
      binary132 on HN
  • Brute force approach is slow compared with approximate search

    From 2 comments
    • It sounds like it is brute force comparison so I imagine any approximate solution will be a lot faster. I have a similar brute force search library in Rust. Though I didn't find…
      spullara on HN
    • It’s a good start, but you can’t generally get even remotely close to hardware potential in Rust, let alone Python. I had to implement a separate C99 library to always trigger…
      ashvardanian on HN

Requests

  • Add an option to limit parallelism or thread count

    From 2 comments
    • I realize you have a different usecase in mind, so the following feedback might not be that useful to you. I also haven’t reviewed your API design, so perhaps you have already…
      binary132 on HN
    • I would say default to min(affinity, system threads, 16) and let the user input a specific number to override it. I had a problem recently where a library started a process per…
      zacmps on HN
  • Support passing a matrix or dataframe for batch queries

    From 2 comments
    • In the example it looks like this needs one JSON encoding/decoding step per call for parameters & results which seems a bit inefficient, but maybe my intuition is wrong there? Or…
      alpaca128 on HN
    • Yes, you're right, and it's a good point. I'll add an additional python function that allows you to supply a pandas dataframe or numpy array for one of the arguments so you can…
      eigenvalue on HN
  • Write-up on GitHub Actions cross-compilation

    From 1 comment
    • Could you do a future write up on the whole process of how you got Github actions to cross compile to different platforms? That sounds very fascinating.
      tmaly on HN

Questions

  • How does it compare to FAISS?

    From 1 comment
  • How is normalized mutual information computed?

    From 1 comment
    • If you don't mind, how is this calculated? I found some references, but I'm not sure I understand.
      foota on HN

Alternatives named

  • FAISS

    From 1 comment
    • It's really quite different in goals to FAISS. FAISS is for if you have millions of stored vectors and want to do quick semantic similarity for retrieval. It manages to do this…
      eigenvalue on HN
  • USearch and SimSIMD

    From 1 comment
    • It’s a good start, but you can’t generally get even remotely close to hardware potential in Rust, let alone Python. I had to implement a separate C99 library to always trigger…
      ashvardanian on HN
  • Qdrant

    From 1 comment
    • Awesome work! At Qdrant we do this at scale. Store billions of vectors in a cluster of any size. Also in Rust which turned out to be an amazing choice, and fully open source. It…
      timvisee on HN

Category, keywords, summaries and labels on this page were made by AI (Thread Reader v2) and not checked by hand. Each point links to the comments it came from.

Add a badge to your READMEShown on HackerShow
[![Shown on HackerShow](https://hackershow.org/badge.svg)](https://hackershow.org/show/37234887)