From bd60f86c54557a5ca6e64e7b57fc793b36ab1ca9 Mon Sep 17 00:00:00 2001 From: Vinta Chen Date: Fri, 16 Oct 2026 18:37:43 +0800 Subject: [PATCH] docs: add Faiss to Database intro Co-Authored-By: Claude --- website/data/category_intros/database.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/website/data/category_intros/database.md b/website/data/category_intros/database.md index 408271eb..4162af33 100644 --- a/website/data/category_intros/database.md +++ b/website/data/category_intros/database.md @@ -5,6 +5,7 @@ How to choose: - Analytical SQL over Parquet, CSV, or DataFrames: DuckDB - Vector search in a prototype or notebook: Chroma - ClickHouse's SQL dialect, or pandas code that runs on ClickHouse: chDB +- Similarity search over vectors you hold in NumPy arrays: Faiss - Vectors stored with their raw images and text, on disk: LanceDB - Vector search embedded in an app or an edge device: Zvec - A small JSON document store for one script: TinyDB @@ -15,6 +16,8 @@ chDB runs ClickHouse inside your process, so you get its SQL dialect without a C Chroma's [in-memory client](https://docs.trychroma.com/docs/run-chroma/clients) is the quick way to try it in a notebook, and `PersistentClient` keeps the data on disk. Add text documents, and Chroma [embeds and indexes them for you](https://docs.trychroma.com/docs/overview/getting-started), so you can query with text too. +Faiss is a similarity search library, not a database. It [keeps no metadata with the vectors](https://arxiv.org/html/2401.08281#S6.SS1), only integer IDs, so you store your documents elsewhere and look them up by ID. Its [tutorial](https://github.com/facebookresearch/faiss/wiki/Getting-started) builds an index for the vector dimension, adds a float32 NumPy array, and calls `search()` for the nearest neighbors. `IndexFlatL2` returns exact results. To trade some accuracy for speed or memory, [pick an index by RAM and dataset size](https://github.com/facebookresearch/faiss/wiki/Guidelines-to-choose-an-index). + LanceDB starts as an [embedded library pointed at a local directory](https://docs.lancedb.com/quickstart). Its indexes live on disk, and a table [stores the raw data, metadata, and embeddings together](https://docs.lancedb.com/faq/faq-oss), which suits images and other multimodal data. Its [embedding function registry](https://docs.lancedb.com/embedding) generates vectors as you insert rows, and Python code can then query with text. Zvec runs entirely in-process, with no server or daemon, and its docs pitch it [from prototypes to embedded apps and edge devices](https://zvec.org/en/docs/db/). Its [quickstart](https://zvec.org/en/docs/db/quickstart/) defines a schema of scalar and vector fields first, then combines vector search with filters on those scalar fields.