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)
}
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))
}