Browse Source

bug修复

master
luogw 2 days ago
parent
commit
8cea206cc7
  1. 12
      src/main/java/com/project/milvus/config/MilvusConfig.java
  2. 145
      src/main/java/com/project/milvus/domain/service/impl/MilvusDemoServiceImpl.java

12
src/main/java/com/project/milvus/config/MilvusConfig.java

@ -14,10 +14,10 @@ public class MilvusConfig {
@Value("${milvus.port}") @Value("${milvus.port}")
private String port; private String port;
@Bean // @Bean
public MilvusClientV2 milvusClient(){ // public MilvusClientV2 milvusClient(){
String uri = "http://"+host+":"+port; // String uri = "http://"+host+":"+port;
ConnectConfig connectConfig = ConnectConfig.builder().uri(uri).build(); // ConnectConfig connectConfig = ConnectConfig.builder().uri(uri).build();
return new MilvusClientV2(connectConfig); // return new MilvusClientV2(connectConfig);
} // }
} }

145
src/main/java/com/project/milvus/domain/service/impl/MilvusDemoServiceImpl.java

@ -28,103 +28,106 @@ public class MilvusDemoServiceImpl implements MilvusDemoService {
//集合名称 //集合名称
private static final String COLLECTION_NAME = "titleCollection_"; private static final String COLLECTION_NAME = "titleCollection_";
private final MilvusClientV2 client ; // private final MilvusClientV2 client ;
//创建向量数据库连接 // //创建向量数据库连接
public MilvusDemoServiceImpl(MilvusClientV2 client ) { // public MilvusDemoServiceImpl(MilvusClientV2 client ) {
this.client = client ; // this.client = client ;
} // }
/** /**
* 创建一个Collection * 创建一个Collection
*/ */
@Override @Override
public void createCollection() { public void createCollection() {
CreateCollectionReq.CollectionSchema schema = client.createSchema(); // CreateCollectionReq.CollectionSchema schema = client.createSchema();
//
schema.addField(AddFieldReq.builder() // schema.addField(AddFieldReq.builder()
.fieldName("id") // .fieldName("id")
.dataType(DataType.Int64) // .dataType(DataType.Int64)
.isPrimaryKey(true) // .isPrimaryKey(true)
.autoID(false) // .autoID(false)
.build()); // .build());
//
schema.addField(AddFieldReq.builder() // schema.addField(AddFieldReq.builder()
.fieldName("point_ids") // .fieldName("point_ids")
.dataType(DataType.Array) // .dataType(DataType.Array)
.elementType(DataType.Int64) // .elementType(DataType.Int64)
.maxCapacity(100) // .maxCapacity(100)
.build()); // .build());
//
schema.addField(AddFieldReq.builder() // schema.addField(AddFieldReq.builder()
.fieldName("title_vector") // .fieldName("title_vector")
.dataType(DataType.FloatVector) // .dataType(DataType.FloatVector)
.dimension(1024) // .dimension(1024)
.build()); // .build());
//
IndexParam indexParam = IndexParam.builder() // IndexParam indexParam = IndexParam.builder()
.fieldName("title_vector") // .fieldName("title_vector")
.metricType(IndexParam.MetricType.COSINE) // .metricType(IndexParam.MetricType.COSINE)
.build(); // .build();
//
CreateCollectionReq createCollectionReq = CreateCollectionReq.builder() // CreateCollectionReq createCollectionReq = CreateCollectionReq.builder()
.collectionName(COLLECTION_NAME) // .collectionName(COLLECTION_NAME)
.collectionSchema(schema) // .collectionSchema(schema)
.indexParams(Collections.singletonList(indexParam)) // .indexParams(Collections.singletonList(indexParam))
.build(); // .build();
//
client.createCollection(createCollectionReq); // client.createCollection(createCollectionReq);
} }
/** /**
* 往collection中插入一条数据 * 往collection中插入一条数据
*/ */
public void insertRecord(TitleVector title) { public void insertRecord(TitleVector title) {
QuestionTypeEnum questionTypeEnum = QuestionTypeEnum.findByValue(title.getQuestionDetailDTO().getType()); // QuestionTypeEnum questionTypeEnum = QuestionTypeEnum.findByValue(title.getQuestionDetailDTO().getType());
//
JsonObject vector = new JsonObject(); // JsonObject vector = new JsonObject();
vector.addProperty("id", title.getId()); // vector.addProperty("id", title.getId());
vector.addProperty("point_ids", title.getTaskKpIdsHash()); // vector.addProperty("point_ids", title.getTaskKpIdsHash());
vector.add("title_vector", title.getTitleVectorJson()); // vector.add("title_vector", title.getTitleVectorJson());
//
InsertReq insertReq = InsertReq.builder() // InsertReq insertReq = InsertReq.builder()
.collectionName(COLLECTION_NAME+questionTypeEnum.getType()) // .collectionName(COLLECTION_NAME+questionTypeEnum.getType())
.data(Collections.singletonList(vector)) // .data(Collections.singletonList(vector))
.build(); // .build();
//
client.insert(insertReq); // client.insert(insertReq);
} }
/** /**
* 通过ID获取记录 * 通过ID获取记录
*/ */
public GetResp getRecord(String id) { public GetResp getRecord(String id) {
GetReq getReq = GetReq.builder() // GetReq getReq = GetReq.builder()
.collectionName(COLLECTION_NAME) // .collectionName(COLLECTION_NAME)
.ids(Collections.singletonList(id)) // .ids(Collections.singletonList(id))
.build(); // .build();
GetResp resp = client.get(getReq); // GetResp resp = client.get(getReq);
GetResp resp = null;
return resp; return resp;
} }
/** /**
* 查询关联知识点相似度最大的题目 * 查询关联知识点相似度最大的题目
*/ */
@Override @Override
public List<List<SearchResp.SearchResult>> query(TitleVector title){ public List<List<SearchResp.SearchResult>> query(TitleVector title){
QuestionTypeEnum questionTypeEnum = QuestionTypeEnum.findByValue(title.getQuestionDetailDTO().getType()); // QuestionTypeEnum questionTypeEnum = QuestionTypeEnum.findByValue(title.getQuestionDetailDTO().getType());
//
String expr = String.format("point_ids == '%s'", title.getTaskKpIdsHash()); // String expr = String.format("point_ids == '%s'", title.getTaskKpIdsHash());
//
SearchResp searchReq = client.search(SearchReq.builder() // SearchResp searchReq = client.search(SearchReq.builder()
.collectionName(COLLECTION_NAME+questionTypeEnum.getType()) // .collectionName(COLLECTION_NAME+questionTypeEnum.getType())
.data(Collections.singletonList(new FloatVec(title.getTitleVectorList()))) // .data(Collections.singletonList(new FloatVec(title.getTitleVectorList())))
.topK(1) // .topK(1)
.filter(expr) // .filter(expr)
.outputFields(Collections.singletonList("*")) // .outputFields(Collections.singletonList("*"))
.metricType(IndexParam.MetricType.COSINE) // 余弦相似度 // .metricType(IndexParam.MetricType.COSINE) // 余弦相似度
.build()); // .build());
//
return searchReq.getSearchResults(); // return searchReq.getSearchResults();
return null;
} }
} }

Loading…
Cancel
Save