From b25bf6728aabbb3e38e79ad412a9e1bed7a9a4fc Mon Sep 17 00:00:00 2001 From: N3ko Date: Thu, 7 Aug 2025 15:10:24 +0800 Subject: [PATCH] fix: sparse vector field init error when using viking embedding (#621) --- .../searchstore/vikingdb/vikingdb_manager.go | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) 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)) }