fix: sparse vector field init error when using viking embedding (#621)

This commit is contained in:
N3ko 2025-08-07 15:10:24 +08:00 committed by GitHub
parent 8cc2a7768c
commit b25bf6728a
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
1 changed files with 7 additions and 5 deletions

View File

@ -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) return nil, nil, fmt.Errorf("[mapFields] currently only support text field indexing, field=%s", srcField.Name)
} }
if embConfig.UseVikingEmbedding { if embConfig.UseVikingEmbedding {
vt := vikingdb.NewVectorizeTuple().SetDense(m.newVectorizeModelConf(srcField.Name)) vt := vikingdb.NewVectorizeTuple().SetDense(m.newVectorizeModelConf(srcField.Name, false))
if embConfig.EnableHybrid { if embConfig.EnableHybrid {
vt = vt.SetSparse(m.newVectorizeModelConf(srcField.Name)) vt = vt.SetSparse(m.newVectorizeModelConf(srcField.Name, true))
} }
vectorizeOpts = append(vectorizeOpts, vt) vectorizeOpts = append(vectorizeOpts, vt)
} else { } else {
@ -310,12 +310,14 @@ func (m *manager) mapFields(srcFields []*searchstore.Field) ([]vikingdb.Field, [
return dstFields, vectorizeOpts, nil 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 embConfig := m.config.EmbeddingConfig
vmc := vikingdb.NewVectorizeModelConf(). vmc := vikingdb.NewVectorizeModelConf().
SetTextField(fieldName). SetTextField(fieldName).
SetModelName(string(embConfig.ModelName)). SetModelName(string(embConfig.ModelName))
SetDim(m.getDims()) if !isSparse {
vmc = vmc.SetDim(m.getDims())
}
if embConfig.ModelVersion != nil { if embConfig.ModelVersion != nil {
vmc = vmc.SetModelVersion(ptr.From(embConfig.ModelVersion)) vmc = vmc.SetModelVersion(ptr.From(embConfig.ModelVersion))
} }