faiss

tarafından firecrawl

Facebook'un yoğun vektörlerin verimli benzerlik araması ve kümelemesi için kütüphanesi. Milyarlarca vektörü destekler, GPU hızlandırması ve çeşitli indeks türleri sunar…

npx skills add https://github.com/firecrawl/ai-research-skills --skill faiss

FAISS - Efficient Similarity Search

Facebook AI's library for billion-scale vector similarity search.

When to use FAISS

Use FAISS when:

  • Need fast similarity search on large vector datasets (millions/billions)
  • GPU acceleration required
  • Pure vector similarity (no metadata filtering needed)
  • High throughput, low latency critical
  • Offline/batch processing of embeddings

Metrics:

  • 31,700+ GitHub stars
  • Meta/Facebook AI Research
  • Handles billions of vectors
  • C++ with Python bindings

Use alternatives instead:

  • Chroma/Pinecone: Need metadata filtering
  • Weaviate: Need full database features
  • Annoy: Simpler, fewer features

Quick start

Installation

# CPU only
pip install faiss-cpu

# GPU support
pip install faiss-gpu

Basic usage

import faiss
import numpy as np

# Create sample data (1000 vectors, 128 dimensions)
d = 128
nb = 1000
vectors = np.random.random((nb, d)).astype('float32')

# Create index
index = faiss.IndexFlatL2(d)  # L2 distance
index.add(vectors)             # Add vectors

# Search
k = 5  # Find 5 nearest neighbors
query = np.random.random((1, d)).astype('float32')
distances, indices = index.search(query, k)

print(f"Nearest neighbors: {indices}")
print(f"Distances: {distances}")

Index types

1. Flat (exact search)

# L2 (Euclidean) distance
index = faiss.IndexFlatL2(d)

# Inner product (cosine similarity if normalized)
index = faiss.IndexFlatIP(d)

# Slowest, most accurate

2. IVF (inverted file) - Fast approximate

# Create quantizer
quantizer = faiss.IndexFlatL2(d)

# IVF index with 100 clusters
nlist = 100
index = faiss.IndexIVFFlat(quantizer, d, nlist)

# Train on data
index.train(vectors)

# Add vectors
index.add(vectors)

# Search (nprobe = clusters to search)
index.nprobe = 10
distances, indices = index.search(query, k)

3. HNSW (Hierarchical NSW) - Best quality/speed

# HNSW index
M = 32  # Number of connections per layer
index = faiss.IndexHNSWFlat(d, M)

# No training needed
index.add(vectors)

# Search
distances, indices = index.search(query, k)

4. Product Quantization - Memory efficient

# PQ reduces memory by 16-32×
m = 8   # Number of subquantizers
nbits = 8
index = faiss.IndexPQ(d, m, nbits)

# Train and add
index.train(vectors)
index.add(vectors)

Save and load

# Save index
faiss.write_index(index, "large.index")

# Load index
index = faiss.read_index("large.index")

# Continue using
distances, indices = index.search(query, k)

GPU acceleration

# Single GPU
res = faiss.StandardGpuResources()
index_cpu = faiss.IndexFlatL2(d)
index_gpu = faiss.index_cpu_to_gpu(res, 0, index_cpu)  # GPU 0

# Multi-GPU
index_gpu = faiss.index_cpu_to_all_gpus(index_cpu)

# 10-100× faster than CPU

LangChain integration

from langchain_community.vectorstores import FAISS
from langchain_openai import OpenAIEmbeddings

# Create FAISS vector store
vectorstore = FAISS.from_documents(docs, OpenAIEmbeddings())

# Save
vectorstore.save_local("faiss_index")

# Load
vectorstore = FAISS.load_local(
    "faiss_index",
    OpenAIEmbeddings(),
    allow_dangerous_deserialization=True
)

# Search
results = vectorstore.similarity_search("query", k=5)

LlamaIndex integration

from llama_index.vector_stores.faiss import FaissVectorStore
import faiss

# Create FAISS index
d = 1536
faiss_index = faiss.IndexFlatL2(d)

vector_store = FaissVectorStore(faiss_index=faiss_index)

Best practices

  1. Choose right index type - Flat for <10K, IVF for 10K-1M, HNSW for quality
  2. Normalize for cosine - Use IndexFlatIP with normalized vectors
  3. Use GPU for large datasets - 10-100× faster
  4. Save trained indices - Training is expensive
  5. Tune nprobe/ef_search - Balance speed/accuracy
  6. Monitor memory - PQ for large datasets
  7. Batch queries - Better GPU utilization

Performance

Index TypeBuild TimeSearch TimeMemoryAccuracy
FlatFastSlowHigh100%
IVFMediumFastMedium95-99%
HNSWSlowFastestHigh99%
PQMediumFastLow90-95%

Resources

firecrawl tarafından daha fazla skill

firecrawl-research-index
firecrawl
Firecrawl Research ile bir araştırma sorgusunu yanıtlayan makaleleri bulun; anlamsal arama, anlamsal ve yapısal genişletme ve gövde içi doğrulama kullanarak. Bu beceriyi her zaman herhangi bir literatür bulma / makale alma görevi için kullanın — tek makale aramaları veya tam çoklu makale setleri.
data-analysisresearchweb-scraping
oracle
firecrawl
oracle CLI kullanımı için en iyi uygulamalar (istemci + dosya paketleme, motorlar, oturumlar ve dosya ekleme desenleri).
pinecone
firecrawl
Üretken yapay zeka uygulamaları için yönetilen vektör veritabanı. Tamamen yönetilen, otomatik ölçeklenen, hibrit arama (yoğun + seyrek), meta veri filtreleme ve ad alanları ile birlikte gelir.…
wpds
firecrawl
WordPress Tasarım Sistemi (WPDS) ve bileşenleri, tokenları, desenleri vb. kullanarak kullanıcı arayüzleri oluştururken kullanın.
audiocraft-audio-generation
firecrawl
Metin tabanlı müzik (MusicGen) ve ses (AudioGen) oluşturma dahil olmak üzere ses üretimi için PyTorch kütüphanesi. Metinden müzik oluşturmanız gerektiğinde kullanın…
skypilot-multi-cloud-orchestration
firecrawl
Çoklu bulut üzerinde ML iş yükleri için otomatik maliyet optimizasyonu ile orkestrasyon. Birden fazla bulutta eğitim veya toplu işler çalıştırmanız gerektiğinde kullanın, yararlanın…
firecrawl-seo-audit
firecrawl
Bir web sitesinin SEO'sunu Firecrawl ile denetleyin. Kullanıcı SEO denetimi, meta veri ve başlık incelemesi, site haritası/site yapısı analizi, anahtar kelime fırsatları, rakip SERP karşılaştırması veya önceliklendirilmiş arama optimizasyonu önerileri istediğinde kullanın.
data-analysisresearchweb-scraping
gh-issues
firecrawl
GitHub sorunlarını getir, düzeltmeleri uygulamak ve PR'lar açmak için alt ajanlar oluştur, ardından PR inceleme yorumlarını izle ve yanıtla. Kullanım: /gh-issues [sahip/depo] [--etiket…]