|
|
@@ -55,14 +55,26 @@ public class VectorStoreServiceImpl implements VectorStoreService {
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public void storeEmbeddings(StoreEmbeddingBo storeEmbeddingBo) {
|
|
|
+ public void storeEmbeddings(StoreEmbeddingBo storeEmbeddingBo) {
|
|
|
createSchema(storeEmbeddingBo.getKid(), storeEmbeddingBo.getVectorModelName());
|
|
|
EmbeddingModel embeddingModel = getEmbeddingModel(storeEmbeddingBo.getEmbeddingModelName(),
|
|
|
storeEmbeddingBo.getApiKey(), storeEmbeddingBo.getBaseUrl());
|
|
|
List<String> chunkList = storeEmbeddingBo.getChunkList();
|
|
|
- for (String s : chunkList) {
|
|
|
- Embedding embedding = embeddingModel.embed(s).content();
|
|
|
- TextSegment segment = TextSegment.from(s);
|
|
|
+
|
|
|
+ XinferenceClient xinferenceClient = new XinferenceClient(storeEmbeddingBo.getBaseUrl());
|
|
|
+ String modelName = storeEmbeddingBo.getEmbeddingModelName();
|
|
|
+ if("quentinz/bge-large-zh-v1.5".contains(modelName)){
|
|
|
+ modelName = "bge-large-zh-v1.5";
|
|
|
+ }
|
|
|
+ for (String text : chunkList) {
|
|
|
+ List<Double> vector;
|
|
|
+ try {
|
|
|
+ vector = xinferenceClient.getEmbedding(modelName, text);
|
|
|
+ } catch (IOException e) {
|
|
|
+ throw new RuntimeException(e);
|
|
|
+ }
|
|
|
+ Embedding embedding = new Embedding(toFloatArray(vector));
|
|
|
+ TextSegment segment = TextSegment.from(text);
|
|
|
embeddingStore.add(embedding, segment);
|
|
|
}
|
|
|
}
|
|
|
@@ -155,5 +167,12 @@ public class VectorStoreServiceImpl implements VectorStoreService {
|
|
|
}
|
|
|
return floatList;
|
|
|
}
|
|
|
+ public static float[] toFloatArray(List<Double> doubleList) {
|
|
|
+ float[] floatArray = new float[doubleList.size()];
|
|
|
+ for (int i = 0; i < doubleList.size(); i++) {
|
|
|
+ floatArray[i] = doubleList.get(i).floatValue();
|
|
|
+ }
|
|
|
+ return floatArray;
|
|
|
+ }
|
|
|
|
|
|
}
|