{/* Trang này được tạo tự động từ SKILL.md của kỹ năng bởi website/scripts/generate-skill-docs.py. Chỉnh sửa nguồn SKILL.md, không phải trang này. */}
Faiss
Thư viện của Facebook để tìm kiếm sự tương đồng hiệu quả và phân cụm các vectơ dày đặc. Hỗ trợ hàng tỷ vectơ, tăng tốc GPU và các loại chỉ mục khác nhau (Flat, IVF, HNSW). Sử dụng để tìm kiếm k-NN nhanh, truy xuất vectơ quy mô lớn hoặc khi bạn cần tìm kiếm tương tự thuần túy mà không cần siêu dữ liệu. Tốt nhất cho các ứng dụng hiệu suất cao.
Siêu dữ liệu kỹ năng
| Nguồn | Tùy chọn — cài đặt với |
| `Hermes skills install official/mlops/faiss | |
| ` | |
| Đường dẫn |
optional-skills/mlops/faiss ` | | Phiên bản |
1.0.0 ` | | Tác giả | Nghiên cứu dàn nhạc | | Giấy phép | MIT | | Phụ thuộc |
faiss-cpu
, `faiss-gpu
,
numpy |
| Nền tảng | Linux, macOS |
| Thẻ |
RAG
, `FAISS
, `Similarity Search
, `Vector Search
, `Facebook AI
, `GPU Acceleration
, `Billion-Scale
, `K-NN
, `HNSW
, `High Performance
,
Large Scale |
Tham khảo: đầy đủ SKILL.md
Sau đây là định nghĩa kỹ năng đầy đủ mà Hermes tải khi kỹ năng này được kích hoạt. Đây là những gì tác nhân coi là hướng dẫn khi kỹ năng được kích hoạt.
FAISS - Tìm kiếm tương tự hiệu quả
Thư viện AI của Facebook dành cho tìm kiếm tương tự vectơ ở quy mô tỷ lệ.
Khi nào nên sử dụng FAISS`Sử dụng FAISS khi:
- Cần tìm kiếm tương tự nhanh trên tập dữ liệu vector lớn (triệu/tỷ)
- Yêu cầu tăng tốc GPU
- Độ tương tự vectơ thuần túy (không cần lọc siêu dữ liệu)
- Thông lượng cao, độ trễ quan trọng thấp
- Xử lý ngoại tuyến/hàng loạt các phần nhúng`Số liệu:
- 31.700+ sao GitHub
- Nghiên cứu AI của Meta/Facebook
- Xử lý hàng tỷ vectơ
- C++ với các ràng buộc Python`Thay vào đó hãy sử dụng các lựa chọn thay thế:
- Chroma/pinecone: Cần lọc siêu dữ liệu
- Weaviate: Cần đầy đủ tính năng cơ sở dữ liệu
- Phức tạp: Đơn giản hơn, ít tính năng hơn
Bắt đầu nhanh
Cài đặt
# CPU only
pip install faiss-cpu
# GPU support
pip install faiss-gpu
`
``###Cách sử dụng cơ bản
``` python
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}")
`
## Các loại chỉ mục
### 1. Flat (tìm kiếm chính xác)
`Python
# L2 (EuCLIdean) distance
index = faiss.IndexFlatL2(d)
# Inner product (cosine similarity if normaliZed)
index = faiss.IndexFlatIP(d)
# Slowest, most accurate
`
### 2. IVF (đảo file) - Tính gần đúng nhanh
``` python
# 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) - Chất lượng/tốc độ tốt nhất
``` python
# 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. Lượng tử hóa sản phẩm - Bộ nhớ hiệu quả
``` python
# 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)
`
## Lưu và tải
``` python
# Save index
faiss.write_index(index, "large.index")
# Load index
index = faiss.read_index("large.index")
# Continue using
distances, indices = index.search(query, k)
`
## Tăng tốc GPU
``` python
# 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
`
## Tích hợp LangChain
``` python
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)
`
## Tích hợp LlamaIndex
`Python
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)
`
## Các phương pháp hay nhất
1. **Chọn đúng loại chỉ số** - Flat cho <10K, IVF cho 10K-1M, HNSW cho chất lượng
2. **Chuẩn hóa cho cosine** - Sử dụng IndexFlatIP với các vectơ đã chuẩn hóa
3. **Sử dụng GPU cho tập dữ liệu lớn** - nhanh hơn 10-100×
4. **Lưu chỉ số đã đào tạo** - Đào tạo rất tốn kém
5. **Tune nprobe/ef_search** - Cân bằng tốc độ/độ chính xác
6. **Bộ nhớ giám sát** - PQ cho tập dữ liệu lớn
7. **Truy vấn hàng loạt** - Sử dụng GPU tốt hơn
## Hiệu suất
| Loại chỉ mục | Thời gian xây dựng | Thời gian tìm kiếm | Ký ức | Độ chính xác |
|----------||-------------|-------------|----------|----------|
| Bằng phẳng | Nhanh | Chậm | Cao | 100% |
| Thụ tinh ống nghiệm | Trung bình | Nhanh | Trung bình | 95-99% |
| HNSW | Chậm | Nhanh nhất | Cao | 99% |
| PQ | Trung bình | Nhanh | Thấp | 90-95% |
## Tài nguyên
- **GitHub**: https://GitHub.com/facebookresearch/faiss ⭐ 31.700+
- **Wiki**: https://GitHub.com/facebookresearch/faiss/wiki
- **Giấy phép**: MIT