class_docstr: Compressed Indexer.
  
  If a FAISS index factory is specified, we build that.
  (see https://github.com/facebookresearch/faiss/wiki/The-index-factory)
  
  The default is IVF4096_HNSW128,PQ128; this also translates directly to the
  default when index_factory is specified as ''.
  
  See https://github.com/facebookresearch/faiss/wiki/Faiss-indexes#cell-probe-methods-indexivf-indexes
  for more details.
docstr: Add vectors to index, using the CPU.
  
  :param vectors:
      vectors to add.
docstr_tok: ["Add","vectors","to","index",",","using","the","CPU",".",":","param","vectors",":","vectors","to","add","."]
code: def add(self, vectors: List[torch.Tensor]):
      """
      Add vectors to index, using the CPU.
  
      :param vectors:
          vectors to add.
      """
      start = time.time()
      for i, vecs in enumerate(grouper(vectors, self.span, None)):
          vec = torch.cat([v for v in vecs if v is not None])
          logging.info(
              f"Adding data {(i+1)}/{math.ceil(len(vectors) / self.span)} of shape: {vec.shape}"
          )
          self.index.add(vec.float().numpy())
          logging.info(
              f"{time.time() - start}s Elapsed: adding complete for {i+1}"
          )
  
imports: from parlai.core.build_data import modelzoo_path
  from parlai.core.opt import Opt
  import parlai.utils.logging
  from abc import ABC, abstractmethod
  import math
  import numpy
  import os
  import random
  import time
  import torch
  import torch.cuda
  from typing import List, Tuple, Optional
  from parlai.agents.rag.args import WIKIPEDIA_COMPRESSED_INDEX, WIKIPEDIA_EXACT_INDEX
label_desc: Use image node_id 4 for calling the CompressedIndexer obj's underlying member method code with example usage: obj.add(vectors) without return types