diff --git a/index_update.go b/index_update.go index 5666d035b..e224a1431 100644 --- a/index_update.go +++ b/index_update.go @@ -507,6 +507,9 @@ func compareFieldMapping(original, updated *mapping.FieldMapping) (*index.Update if original.VectorIndexOptimizedFor != updated.VectorIndexOptimizedFor { return nil, fmt.Errorf("vectorIndexOptimizedFor cannot be updated for vector and vector_base64 fields") } + if original.UseGPU != updated.UseGPU { + return nil, fmt.Errorf("useGPU cannot be updated for vector and vector_base64 fields") + } } if original.IncludeInAll != updated.IncludeInAll { return nil, fmt.Errorf("includeInAll cannot be changed") diff --git a/mapping/field.go b/mapping/field.go index 0b6074910..ffbde6b8a 100644 --- a/mapping/field.go +++ b/mapping/field.go @@ -83,6 +83,9 @@ type FieldMapping struct { VectorIndexOptimizedFor string `json:"vector_index_optimized_for,omitempty"` SynonymSource string `json:"synonym_source,omitempty"` + + // Flag that indicates whether to use GPU for field indexing and searching + UseGPU bool `json:"gpu,omitempty"` } // NewTextFieldMapping returns a default field mapping for text @@ -226,6 +229,9 @@ func (fm *FieldMapping) Options() index.FieldIndexingOptions { if fm.SkipFreqNorm { rv |= index.SkipFreqNorm } + if fm.UseGPU { + rv |= index.GPU + } return rv } @@ -479,6 +485,11 @@ func (fm *FieldMapping) UnmarshalJSON(data []byte) error { if err != nil { return err } + case "gpu": + err := util.UnmarshalJSON(v, &fm.UseGPU) + if err != nil { + return err + } default: invalidKeys = append(invalidKeys, k) } diff --git a/mapping/mapping_vectors.go b/mapping/mapping_vectors.go index 20cbac6a8..3ee7b800b 100644 --- a/mapping/mapping_vectors.go +++ b/mapping/mapping_vectors.go @@ -237,6 +237,11 @@ func validateVectorFieldAlias(field *FieldMapping, parentName string, "(different similarity values %s and %s)", fieldAlias.Name, field.Similarity, fieldAlias.Similarity) } + if field.UseGPU != fieldAlias.UseGPU { + return fmt.Errorf("field: '%s', invalid alias "+ + "(different useGPU values %v and %v)", fieldAlias.Name, + field.UseGPU, fieldAlias.UseGPU) + } return nil }