Sobes.tech
Middle — Senior

Hogyan skálázható a keresés az embeddingek alapján millió dokumentumra?

sobes.tech MI

Válasz az MI-től

A millió dokumentumhoz történő embedding-alapú keresés skálázásához általában speciális indexeket és közelítő legközelebbi szomszédok (Approximate Nearest Neighbors, ANN) algoritmusokat alkalmaznak. A fő megközelítések:

  • Könyvtárak és keretrendszerek, mint például a FAISS (Facebook AI Similarity Search), Annoy, HNSWlib, amelyek hatékonyan indexelik és keresnek vektorokon.
  • Embeddingek indexelése adatstruktúrák segítségével, például HNSW fák, Termék kvantálás, IVF (Inverz fájl).
  • Horizontális skálázás: az index elosztása több szerver között vagy sharding.
  • Népszerű lekérdezések és eredmények gyorsítótárazása.

Példa FAISS-sel (Python):

import faiss
import numpy as np

# 128 dimenziós vektorok indexelése
index = faiss.IndexFlatL2(128)

# Dokumentum embeddingek hozzáadása
embeddings = np.random.random((1000000, 128)).astype('float32')
index.add(embeddings)

# 5 legközelebbi szomszéd keresése egy lekérdezéshez
query = np.random.random((1, 128)).astype('float32')
D, I = index.search(query, 5)
print(I)  # legközelebbi dokumentumok indexei