milvus-sdk-go
milvus-sdk-go copied to clipboard
[Bug]: The query outputs sparse vector but the vector dim is always 0
Is there an existing issue for this?
- [X] I have searched the existing issues
Current Behavior
Insert sparse vector and query output sparse vector, the dim of inserted sparse vector dim is int(se.positions[se.len-1]) + 1, the dim of query output vector is always 0
# inserted sparse vector:
dim: (int) 42,
len: (int) 21
# output sparse vector:
dim: (int) 0,
len: (int) 21
- case:
func TestQuerySparseVector(t *testing.T) {
t.Parallel()
idxInverted := entity.NewGenericIndex(common.DefaultSparseVecFieldName, "SPARSE_INVERTED_INDEX", map[string]string{"drop_ratio_build": "0.2", "metric_type": "IP"})
idxWand := entity.NewGenericIndex(common.DefaultSparseVecFieldName, "SPARSE_WAND", map[string]string{"drop_ratio_build": "0.3", "metric_type": "IP"})
for _, idx := range []entity.Index{idxInverted, idxWand} {
ctx := createContext(t, time.Second*common.DefaultTimeout*2)
// connect
mc := createMilvusClient(ctx, t)
// create -> insert [0, 3000) -> flush -> index -> load
cp := CollectionParams{CollectionFieldsType: Int64VarcharSparseVec, AutoID: false, EnableDynamicField: false,
ShardsNum: common.DefaultShards, Dim: common.DefaultDim, MaxLength: common.TestMaxLen}
collName := createCollection(ctx, t, mc, cp)
// index
idxHnsw, _ := entity.NewIndexHNSW(entity.L2, 8, 96)
mc.CreateIndex(ctx, collName, common.DefaultFloatVecFieldName, idxHnsw, false)
mc.CreateIndex(ctx, collName, common.DefaultSparseVecFieldName, idx, false)
// insert
intColumn, _, floatColumn := common.GenDefaultColumnData(0, common.DefaultNb, common.DefaultDim)
varColumn := common.GenColumnData(0, common.DefaultNb, entity.FieldTypeVarChar, common.DefaultVarcharFieldName)
sparseColumn := common.GenColumnData(0, common.DefaultNb, entity.FieldTypeSparseVector, common.DefaultSparseVecFieldName, common.WithSparseVectorLen(20))
mc.Insert(ctx, collName, "", intColumn, varColumn, floatColumn, sparseColumn)
mc.Flush(ctx, collName, false)
mc.LoadCollection(ctx, collName, false)
// count(*)
countRes, _ := mc.Query(ctx, collName, []string{}, fmt.Sprintf("%s >=0", common.DefaultIntFieldName), []string{common.QueryCountFieldName})
require.Equal(t, int64(common.DefaultNb), countRes.GetColumn(common.QueryCountFieldName).(*entity.ColumnInt64).Data()[0])
// query
queryResult, err := mc.Query(ctx, collName, []string{}, fmt.Sprintf("%s in [0, 1]", common.DefaultIntFieldName), []string{"*"})
common.CheckErr(t, err, true)
common.CheckOutputFields(t, queryResult, []string{common.DefaultIntFieldName, common.DefaultVarcharFieldName, common.DefaultFloatVecFieldName, common.DefaultSparseVecFieldName})
common.CheckQueryResult(t, queryResult, []entity.Column{intColumn.Slice(0, 2), varColumn.Slice(0, 2), floatColumn.Slice(0, 2), sparseColumn.Slice(0, 2)})
}
}
Expected Behavior
No response
Steps To Reproduce
No response
Environment
No response
Anything else?
No response