main
HuangHai 2 months ago
parent 2247d10604
commit 08d777291f

@ -2,22 +2,18 @@ package com.dsideal.Res.Milvus.Controller;
import com.dsideal.Config.PropKit; import com.dsideal.Config.PropKit;
import com.dsideal.Res.Plugin.MilvusPlugin; import com.dsideal.Res.Plugin.MilvusPlugin;
import com.dsideal.Res.ResApplication;
import com.jfinal.core.Controller; import com.jfinal.core.Controller;
import com.jfinal.kit.Ret; import com.jfinal.kit.Ret;
import io.milvus.client.MilvusServiceClient; import io.milvus.client.MilvusServiceClient;
import io.milvus.common.clientenum.ConsistencyLevelEnum; import io.milvus.grpc.QueryResults;
import io.milvus.grpc.SearchResults;
import io.milvus.param.MetricType;
import io.milvus.param.R; import io.milvus.param.R;
import io.milvus.param.collection.LoadCollectionParam; import io.milvus.param.collection.LoadCollectionParam;
import io.milvus.param.dml.SearchParam; import io.milvus.param.dml.QueryParam;
import io.milvus.response.SearchResultsWrapper; import io.milvus.response.QueryResultsWrapper;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import java.util.Arrays; import java.util.*;
import java.util.List;
public class MilvusDemoController extends Controller { public class MilvusDemoController extends Controller {
private final MilvusPlugin milvusPlugin = MilvusPlugin.getInstance(); private final MilvusPlugin milvusPlugin = MilvusPlugin.getInstance();
@ -35,30 +31,37 @@ public class MilvusDemoController extends Controller {
.build() .build()
); );
// 示例:搜索向量 // 查询所有数据
List<List<Float>> vectors = Arrays.asList( QueryParam queryParam = QueryParam.newBuilder()
Arrays.asList(0.1f, 0.2f, 0.3f, 0.4f) // 示例向量,需要根据实际维度调整
);
SearchParam searchParam = SearchParam.newBuilder()
.withCollectionName(collectionName) .withCollectionName(collectionName)
.withConsistencyLevel(ConsistencyLevelEnum.STRONG) .withOutFields(Arrays.asList("id", "person_id", "user_input", "model_response", "timestamp", "embedding"))
.withMetricType(MetricType.L2) .withExpr("") // 空表达式查询所有数据
.withOutFields(Arrays.asList("field1", "field2")) .withLimit(1000L) // 设置最大返回记录数
.withTopK(5)
.withVectors(vectors)
.withVectorFieldName("vector_field")
.build(); .build();
// 修改这部分代码 R<QueryResults> response = client.query(queryParam);
R<SearchResults> searchResponse = client.search(searchParam); if (response.getStatus() != R.Status.Success.getCode()) {
if (searchResponse.getStatus() != R.Status.Success.getCode()) { throw new RuntimeException("Milvus query failed: " + response.getMessage());
throw new RuntimeException("Milvus search failed: " + searchResponse.getMessage()); }
List<Map<String, Object>> results = new ArrayList<>();
QueryResultsWrapper wrapper = new QueryResultsWrapper(response.getData());
// 处理查询结果
List<QueryResultsWrapper.RowRecord> records = wrapper.getRowRecords();
for (QueryResultsWrapper.RowRecord record : records) {
Map<String, Object> row = new HashMap<>();
row.put("id", record.get("id"));
row.put("person_id", record.get("person_id"));
row.put("user_input", record.get("user_input"));
row.put("model_response", record.get("model_response"));
row.put("timestamp", record.get("timestamp"));
row.put("embedding", record.get("embedding"));
results.add(row);
} }
SearchResultsWrapper wrapper = new SearchResultsWrapper(searchResponse.getData().getResults());
// 返回搜索结果 // 返回查询结果
renderJson(wrapper.getIDScore(0)); renderJson(Ret.ok("data", results));
} catch (Exception e) { } catch (Exception e) {
logger.error("Milvus查询失败", e); logger.error("Milvus查询失败", e);
renderJson(Ret.fail("msg", "查询失败:" + e.getMessage())); renderJson(Ret.fail("msg", "查询失败:" + e.getMessage()));

Loading…
Cancel
Save