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