So fügen Sie inkrementell Python Faiss Index hinzu

Post a reply

Smilies
:) :( :oops: :chelo: :roll: :wink: :muza: :sorry: :angel: :read: *x) :clever:
View more smilies

BBCode is ON
[img] is ON
[flash] is OFF
[url] is ON
Smilies are ON

Topic review
   

Expand view Topic review: So fügen Sie inkrementell Python Faiss Index hinzu

by Anonymous » 01 Jul 2025, 11:02

Ich verwende Faiss, um meine riesigen Datensatz -Einbettungen zu indizieren und aus dem Bert -Modell einzubetten. Ich möchte die Einbettung inkrementell hinzufügen, es funktioniert gut, wenn ich sie nur mit faiss.indexflatl2 hinzufüge, aber das Problem ist, dass es zu groß ist. sollte im Ram gehalten werden, bis ich es schreibe. Gibt es eine Möglichkeit, dies inkrementell zu tun.
Hier ist mein Code: < /p>

Code: Select all

    # It is working fine when using with IndexFlatL2
def __init__(self, sentences, model):
self.sentences = sentences
self.model = model
self.index = faiss.IndexFlatL2(768)

def process_sentences(self):
result = self.model(self.sentences)
self.sentence_ids = []
self.token_ids = []
self.all_tokens = []
for i, (toks, embs) in enumerate(tqdm(result)):
# initialize all_embeddings for every new sentence (INCREMENTALLY)
all_embeddings = []
for j, (tok, emb) in enumerate(zip(toks, embs)):
self.sentence_ids.append(i)
self.token_ids.append(j)
self.all_tokens.append(tok)
all_embeddings.append(emb)

all_embeddings = np.stack(all_embeddings) # Add embeddings after every sentence
self.index.add(all_embeddings)

faiss.write_index(self.index, "faiss_Model")
< /code>
und bei Verwendung mit IndexIVFPQ: < /p>
   def __init__(self, sentences, model):
self.sentences = sentences
self.model = model
self.quantizer = faiss.IndexFlatL2(768)
self.index = faiss.IndexIVFPQ(self.quantizer, 768, 1000, 16, 8)

def process_sentences(self):
result = self.model(self.sentences)
self.sentence_ids = []
self.token_ids = []
self.all_tokens = []
all_embeddings = []
for i, (toks, embs) in enumerate(tqdm(result)):
for j, (tok, emb) in enumerate(zip(toks, embs)):
self.sentence_ids.append(i)
self.token_ids.append(j)
self.all_tokens.append(tok)
all_embeddings.append(emb)

all_embeddings = np.stack(all_embeddings)
self.index.train(all_embeddings) # Train
self.index.add(all_embeddings) # Add to index
faiss.write_index(self.index, "faiss_Model_mini")

Top