VectorInfo.java

package redis.clients.jedis.resps;

import java.io.Serializable;
import java.util.Map;

import redis.clients.jedis.annots.Experimental;

/**
 * This class holds information about a vector set returned by the {@code VINFO} command. They can
 * be accessed via getters. There is also {@link VectorInfo#getVectorInfo()} method that returns a
 * generic {@link Map} in case where more info are returned from the server.
 */
@Experimental
public class VectorInfo implements Serializable {
  public static final String VECTOR_DIM = "vector-dim";
  public static final String TYPE = "quant-type";
  public static final String SIZE = "size";
  public static final String MAX_NODE_UID = "hnsw-max-node-uid";
  public static final String VSET_UID = "vset-uid";
  public static final String MAX_NODES = "hnsw-m";
  public static final String PROJECTION_INPUT_DIM = "projection-input-dim";
  public static final String ATTRIBUTES_COUNT = "attributes-count";
  public static final String MAX_LEVEL = "max-level";

  private final Long dimensionality;
  private final String type; // Will be converted to QuantizationType if needed
  private final Long size;
  private final Long maxNodeUid;
  private final Long vSetUid;
  private final Long maxNodes;
  private final Long projectionInputDim;
  private final Long attributesCount;
  private final Long maxLevel;
  private final Map<String, Object> vectorInfo;

  /**
   * @param map contains key-value pairs with vector set info
   */
  public VectorInfo(Map<String, Object> map) {
    vectorInfo = map;
    dimensionality = (Long) map.get(VECTOR_DIM);
    type = (String) map.get(TYPE);
    size = (Long) map.get(SIZE);
    maxNodeUid = (Long) map.get(MAX_NODE_UID);
    vSetUid = (Long) map.get(VSET_UID);
    maxNodes = (Long) map.get(MAX_NODES);
    projectionInputDim = (Long) map.get(PROJECTION_INPUT_DIM);
    attributesCount = (Long) map.get(ATTRIBUTES_COUNT);
    maxLevel = (Long) map.get(MAX_LEVEL);
  }

  public Long getDimensionality() {
    return dimensionality;
  }

  public String getType() {
    return type;
  }

  public Long getSize() {
    return size;
  }

  public Long getMaxNodeUid() {
    return maxNodeUid;
  }

  public Long getVSetUid() {
    return vSetUid;
  }

  public Long getMaxNodes() {
    return maxNodes;
  }

  public Long getProjectionInputDim() {
    return projectionInputDim;
  }

  public Long getAttributesCount() {
    return attributesCount;
  }

  public Long getMaxLevel() {
    return maxLevel;
  }

  public Map<String, Object> getVectorInfo() {
    return vectorInfo;
  }
}