Sobes.tech
Middle — Senior

Jak skalować wyszukiwanie po embeddingach na miliony dokumentów?

sobes.tech AI

Odpowiedź od AI

Aby skalować wyszukiwanie na podstawie osadzeń do milionów dokumentów, zwykle stosuje się specjalistyczne indeksy i algorytmy przybliżonego wyszukiwania najbliższych sąsiadów (Approximate Nearest Neighbors, ANN). Główne podejścia:

  • Użycie bibliotek i frameworków takich jak FAISS (Facebook AI Similarity Search), Annoy, HNSWlib, które umożliwiają efektywne indeksowanie i wyszukiwanie w wektorach.
  • Indeksowanie osadzeń za pomocą struktur danych, np. drzew HNSW, kwantyzacji produktu, IVF (odwrócony plik).
  • Skalowanie poziome: rozproszenie indeksu na kilka serwerów lub sharding.
  • Cache’owanie popularnych zapytań i wyników.

Przykład z FAISS (Python):

import faiss
import numpy as np

# Tworzymy indeks dla wektorów o wymiarze 128
index = faiss.IndexFlatL2(128)

# Dodajemy osadzenia dokumentów
embeddings = np.random.random((1000000, 128)).astype('float32')
index.add(embeddings)

# Szukamy 5 najbliższych sąsiadów dla zapytania
query = np.random.random((1, 128)).astype('float32')
D, I = index.search(query, 5)
print(I)  # indeksy najbliższych dokumentów