diff --git a/backend/infra/impl/document/searchstore/vikingdb/vikingdb_manager.go b/backend/infra/impl/document/searchstore/vikingdb/vikingdb_manager.go index d8a07bb6..1d8767a5 100644 --- a/backend/infra/impl/document/searchstore/vikingdb/vikingdb_manager.go +++ b/backend/infra/impl/document/searchstore/vikingdb/vikingdb_manager.go @@ -256,9 +256,9 @@ func (m *manager) mapFields(srcFields []*searchstore.Field) ([]vikingdb.Field, [ return nil, nil, fmt.Errorf("[mapFields] currently only support text field indexing, field=%s", srcField.Name) } if embConfig.UseVikingEmbedding { - vt := vikingdb.NewVectorizeTuple().SetDense(m.newVectorizeModelConf(srcField.Name)) + vt := vikingdb.NewVectorizeTuple().SetDense(m.newVectorizeModelConf(srcField.Name, false)) if embConfig.EnableHybrid { - vt = vt.SetSparse(m.newVectorizeModelConf(srcField.Name)) + vt = vt.SetSparse(m.newVectorizeModelConf(srcField.Name, true)) } vectorizeOpts = append(vectorizeOpts, vt) } else { @@ -310,12 +310,14 @@ func (m *manager) mapFields(srcFields []*searchstore.Field) ([]vikingdb.Field, [ return dstFields, vectorizeOpts, nil } -func (m *manager) newVectorizeModelConf(fieldName string) *vikingdb.VectorizeModelConf { +func (m *manager) newVectorizeModelConf(fieldName string, isSparse bool) *vikingdb.VectorizeModelConf { embConfig := m.config.EmbeddingConfig vmc := vikingdb.NewVectorizeModelConf(). SetTextField(fieldName). - SetModelName(string(embConfig.ModelName)). - SetDim(m.getDims()) + SetModelName(string(embConfig.ModelName)) + if !isSparse { + vmc = vmc.SetDim(m.getDims()) + } if embConfig.ModelVersion != nil { vmc = vmc.SetModelVersion(ptr.From(embConfig.ModelVersion)) }