Как добавить индекс в Python faiss постепенноPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Как добавить индекс в Python faiss постепенно

Сообщение Anonymous »

Я использую 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
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Как добавить индекс в Python faiss постепенно
    Anonymous » » в форуме Python
    0 Ответы
    2 Просмотры
    Последнее сообщение Anonymous
  • 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
  • Как постепенно добавить строки в DataFrame Pandas?
    Anonymous » » в форуме Python
    0 Ответы
    6 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Python»