mrkeyoor.com_
Fri 23 Oct 17:49 UTC
Dataevaluationupdated 19 Oct 2026

faiss review

Faiss is Meta's C++ library, with Python wrappers, for similarity search and clustering of dense vectors. Its exact and approximate indexes let developers choose tradeoffs between search quality, memory use and search time.

+23stars / 7d
Verdict

commit 1a9ddc6 did not establish a working Python search path in our sandbox. The dependency installation stage succeeded, but the build failed and no tests passed. Consider Faiss when your team needs control over index selection and can evaluate correctness against its own data. Start with the supported package route, then verify the intended index, wrapper parameters and returned IDs before adoption.

We ran it

Lab card: what happened when we ran faissScreenshot of faiss (faiss.ai)
Install✓ · 38s35 packages · 38 MB
Build✗ · 3s
Tests✗ · 4s0 passed · 22 failed · 74 errors of 96 (pytest)
Known vulns0(pip-audit)
Repo1126 files~255,755 lines of source · 10.7 MB · 11 CI workflows · tests dir

Answers from our run

Does faiss build from source?

Dependencies installed in 38 seconds (35 packages), and the build failed. We cloned commit 1a9ddc6 into a clean Debian container with 3 CPUs and no project-specific setup.

Do faiss's tests pass?

No. The project's own test command finished in 4 seconds and reported 0 passed, 22 failed, 74 collection errors (pytest).

Does faiss have known vulnerabilities in its dependencies?

pip-audit found none in the dependency tree at the time of our run.

Who should not use faiss?

Developers expecting a successful dependency installation stage to establish working Faiss bindings: our sandbox did not verify usable bindings.

What are the alternatives to faiss?

Qdrant, hnswlib. commit 1a9ddc6 did not establish a working Python search path in our sandbox.

SetupN/AThe sandbox recorded failed build and test stages, but did not reproduce the supported Conda installation route or identify installed packages.
DocsN/AThe supplied README and installation guide support specific instructions, but completeness and usability across the index API were not assessed.
CommunityN/AA recent push and newly opened issue are documented; maintainer response times and support outcomes were not assessed.
MaturityN/AThe sandbox did not establish working Python bindings, and correctness or production reliability across index families was not assessed.

Discussed on

  1. hnFaiss: A library for efficient similarity search263 points
  2. hnFaiss: Facebook's open source vector search library175 points
  3. hnFaiss: A library for efficient similarity search and clustering of dense vectors9 points

Who it’s for

Search engineers choosing an index against their own vectors and a measured recall target.
Python or C++ teams prepared to integrate a vector index into their application and verify its behavior.
GPU users who can match their hardware to the documented package and backend choices.

Who it’s NOT for

Developers expecting a successful dependency installation stage to establish working Faiss bindings: our sandbox did not verify usable bindings.
Teams that cannot accept approximate results and intend to use compressed representations without checking precision against an exact-search reference.
Applications relying on index selectors for access control without independently checking returned records: issue 5756 reports filtering failures in specific wrapper combinations.
GPU users requiring the same official binary support across operating systems: the installation guide lists GPU packages for Linux only.

Setup reality

The sandbox install stage succeeded for commit 1a9ddc6 in 38 seconds, with 35 dependencies recorded and 38 MB on disk. The supplied evidence does not identify the installation command or installed packages, so installation of usable Faiss bindings was not verified. The build failed with exit 1 in 3 seconds. Tests failed with exit 1 in 4 seconds: 0 passed, 22 failed, and 74 collection/setup errors out of 96.

The documented supported installation route is Conda. Building from source uses CMake and requires a C++20 compiler with OpenMP and a BLAS implementation. Python bindings add Python, NumPy and SWIG. GPU builds add backend-specific requirements.

The test log shows missing faiss attributes, including IndexFlatL2 and SIMDConfig, without establishing the cause. The recorded sandbox configuration was 3 CPUs, 8 GB RAM and image ghcr.io/astral-sh/uv:python3.12-bookworm. The image label does not verify actual interpreter or operating-system versions. This run did not reproduce the supported Conda route.

Pip-audit recorded zero findings and zero packages; the supplied evidence does not establish dependency audit coverage.

The install stage succeeded, but usable Faiss bindings were not verified

The sandbox dependency installation stage succeeded in 38 seconds. The build and test steps then failed, and the test log showed a module named faiss without expected APIs such as IndexFlatL2. The supplied evidence does not identify the installation command or installed packages. It therefore does not establish that a Faiss package was successfully installed or that usable Faiss bindings were available.

For a Python search team, the immediate question is whether the intended index can load and run. Faiss is a C++ library with Python wrappers for similarity search and clustering of dense vectors. Its README describes vectors identified by integers, compared using L2 distance or dot products. Cosine similarity uses normalized vectors. You supply the vectors and decide what constitutes a useful match.

What happened when we ran it

The sandbox run used commit 1a9ddc6 on October 13, 2026. Its install stage succeeded in 38 seconds, recording 35 dependencies and 38 MB on disk. The build failed with exit code 1 after 3 seconds. No build diagnostic tail was supplied, so the evidence cannot identify a compiler problem, missing library or source defect.

Tests failed with exit code 1 after 4 seconds: 0 passed, 22 failed, and 74 collection/setup errors out of 96. The test-log tail names missing attributes including index_binary_factory, IndexFlatL2, check_openmp, get_compile_options and SIMDConfig. Those messages establish which APIs callers could not access. They do not explain why the attributes were absent or establish that a supported Faiss package would fail in the same way.

The recorded configuration had 3 CPUs, 8 GB RAM and the image label ghcr.io/astral-sh/uv:python3.12-bookworm. Actual interpreter and operating-system versions require the raw toolchain logs. Pip-audit recorded zero findings and zero packages; the supplied evidence does not establish dependency audit coverage. The repository scan found 11 CI workflow files and a tests directory, with no Dockerfile. This run measured no query speed, retrieval accuracy or GPU performance.

Conda is the documented supported route

The documented supported installation route is Conda. The installation guide lists stable package commands pinned to 1.15.1. That documented package version is separate from our tested checkout, commit 1a9ddc6; the supplied run does not establish which Faiss package version, if any, was installed.

The guide lists CPU binaries for Linux x86-64 and aarch64, macOS arm64, and Windows x86-64. Its GPU binary packages target Linux x86-64, with separate CUDA and cuVS combinations. Check the package matrix against the machine you intend to use.

Building from source uses CMake and requires C++20, OpenMP and BLAS. Python bindings add Python, NumPy and SWIG; GPU builds add their own toolchains. Our failed build does not establish that any particular requirement caused the failure. A useful next step is to follow the supported package instructions, confirm that the intended APIs are available, and verify that the chosen index accepts vectors and returns IDs. These are proposed checks, not additional tests performed for this review.

Use an exact-search reference to evaluate compression

Faiss includes exact-search baselines alongside approximate indexes. The README says some compressed representations do not retain the original vectors and generally produce less precise search. HNSW and NSG instead add indexing structures over raw vectors.

Choose against a representative query set and an exact-search reference. Compare which matches an approximate index misses, then record memory use and the cost of adding your data. This is an evaluation proposal. Our sandbox produced no recall, throughput or GPU measurements, so it provides no basis for recommending performance settings.

Issue 5756 reports filtering failures in specific wrappers

Issue 5756 reports excluded IDs returning through particular IndexRefine and IndexPreTransform parameter-wrapper combinations with IndexIDMap. The report says these wrappers drop a top-level selector, while a nested selector is applied to internal row numbers without the needed ID translation. The reporter describes both excluded IDs returning and allowed IDs being missed.

The issue was opened on October 19, 2026 and was open in the supplied extract. The reporter identifies Faiss 1.15.1 from a PyPI wheel and nightly Conda build v1.15.1-64-g56c96d5ef on macOS 26.5.1 arm64, and reports identical reproduction output on both builds. We did not reproduce the issue in our sandbox. It is an upstream report about those wrapper paths, not a finding that every Faiss index ignores selectors or that our checkout exhibits the bug.

Verify the exact index and parameter composition your application will use. If filtering represents permissions, independently enforce access to returned records. Plausible nearest neighbors alone do not establish correct filtering.

Compare alternatives by what your application needs to own

Qdrant is a vector database with an API and payload filtering. Its README describes a service for storing, searching and managing vectors with additional payloads. Compare it when those service responsibilities are part of your requirement.

hnswlib is a C++ HNSW library with Python bindings, insertions and updates. Its README makes it a relevant comparison when you have already chosen HNSW. Neither alternative was tested in this batch, so this review offers no measured setup or performance comparison.

The supplied repository metadata records a Faiss push on October 19, 2026, and issue 5756 was opened that day. These establish recent repository activity, not support response times or resolution of the reported issue. For an adoption decision, first establish working bindings through the supported route, then check search quality and filtered IDs against your own data.

Alternatives

ProjectWhat it isPick it when
Qdrant gh↗A vector database with an API and payload filtering.Compare Qdrant when you want a search service that stores vectors with associated payloads and supports filtering.
hnswlibA C++ HNSW library with Python bindings, insertions and updates.Compare hnswlib when you have chosen HNSW and want a library focused on that algorithm.

Sources

  1. Faiss README
  2. Supported package and native requirements
  3. Selector forwarding report, issue 5756
  4. Qdrant README
  5. hnswlib README
  6. Faiss repository metadata

More data reviews

tesseract · omnigraph · nuvex-services · wine-quality-svc-tuning · dhis2-immunisation-audit · OpenTerminal · the whole board →