Я использую FAISS для индексации своих огромных наборов данных, внедряя, сгенерированную из модели BERT. Я хочу добавить встраивание постепенно, они работают нормально, если я добавлю его с faiss.indexflatl2, но проблема в том, что он сохраняет его размер слишком велик.
, поэтому я попробовал с faiss.indexivfpq, но, но, но, но, но, но, но, но, но, но, но, но, но, но, но, но, но, но, но, но, но, но, но, но, но, но Он должен обучать встраивания, прежде чем я добавлю данные, поэтому я не могу добавить их постепенно, я должен сначала вычислить все встроения, а затем тренироваться и добавить их, у него возникают проблемы, потому что все данные должны храниться в оперативной памяти, пока я не напишу Полем Есть ли способ сделать это постепенно.
Вот мой код: < /p>
# 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>
и при использовании с 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")
Подробнее здесь: https://stackoverflow.com/questions/699 ... rementally
Как добавить индекс в Python faiss постепенно ⇐ Python
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
IndexError: индекс списка выходит за пределы диапазона в FAISS.from_documents
Anonymous » » в форуме Python - 0 Ответы
- 73 Просмотры
-
Последнее сообщение Anonymous
-
-
-
IndexError: индекс списка выходит за пределы диапазона в FAISS.from_documents
Anonymous » » в форуме Python - 0 Ответы
- 45 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Langchain Faiss searnity_search возвращает пустой список, несмотря на населенный индекс
Anonymous » » в форуме Python - 0 Ответы
- 4 Просмотры
-
Последнее сообщение Anonymous
-