All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.tencent.tcvectordb.serializer.EmbeddingDeserialize Maven / Gradle / Ivy

package com.tencent.tcvectordb.serializer;

import com.fasterxml.jackson.core.JacksonException;
import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.databind.DeserializationContext;
import com.fasterxml.jackson.databind.JsonDeserializer;
import com.fasterxml.jackson.databind.JsonNode;
import com.tencent.tcvectordb.model.param.collection.Embedding;
import com.tencent.tcvectordb.model.param.enums.EmbeddingModelEnum;
import com.tencent.tcvectordb.utils.JsonUtils;
import org.apache.commons.lang3.StringUtils;

import java.io.IOException;

public class EmbeddingDeserialize extends JsonDeserializer {

    @Override
    public Embedding deserialize(JsonParser p, DeserializationContext ctxt)
            throws IOException, JacksonException {
        String paramsStr = p.getCodec().readTree(p).toString();
        if (StringUtils.isBlank(paramsStr)) {
            return null;
        }
        JsonNode jsonNode = JsonUtils.parseToJsonNode(paramsStr);
        Embedding.Builder builder = Embedding.newBuilder();

        if (jsonNode.has(Embedding.FIELD_NAME)) {
            builder.withField(jsonNode.get(Embedding.FIELD_NAME).asText());
        }

        if (jsonNode.has(Embedding.VECTOR_FIELD_NAME)) {
            builder.withVectorField(jsonNode.get(Embedding.VECTOR_FIELD_NAME).asText());
        }

        if (jsonNode.has(Embedding.MODEL_NAME)) {
            String modelName = jsonNode.get(Embedding.MODEL_NAME).asText();
            builder.withModelName(modelName);
            EmbeddingModelEnum embeddingModelEnum = EmbeddingModelEnum.find(modelName);
            if (embeddingModelEnum != null) {
                builder.withModel(embeddingModelEnum);
            }
        }

        if (jsonNode.has(Embedding.STATUS_NAME)) {
            builder.withStatus(jsonNode.get(Embedding.STATUS_NAME).asText());
        }
        return builder.build();
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy