github.com/weaviate/weaviate@v1.24.6/usecases/modulecomponents/additional/rank/rank.go (about) 1 // _ _ 2 // __ _____ __ ___ ___ __ _| |_ ___ 3 // \ \ /\ / / _ \/ _` \ \ / / |/ _` | __/ _ \ 4 // \ V V / __/ (_| |\ V /| | (_| | || __/ 5 // \_/\_/ \___|\__,_| \_/ |_|\__,_|\__\___| 6 // 7 // Copyright © 2016 - 2024 Weaviate B.V. All rights reserved. 8 // 9 // CONTACT: hello@weaviate.io 10 // 11 12 package rank 13 14 import ( 15 "context" 16 "errors" 17 18 "github.com/tailor-inc/graphql" 19 "github.com/tailor-inc/graphql/language/ast" 20 "github.com/weaviate/weaviate/entities/moduletools" 21 "github.com/weaviate/weaviate/entities/search" 22 "github.com/weaviate/weaviate/usecases/modulecomponents/ent" 23 ) 24 25 // const maximumNumberOfGoroutines = 10 26 type ReRankerClient interface { 27 Rank(ctx context.Context, query string, documents []string, cfg moduletools.ClassConfig) (*ent.RankResult, error) 28 } 29 30 type ReRankerProvider struct { 31 client ReRankerClient 32 } 33 34 func New(reranker ReRankerClient) *ReRankerProvider { 35 return &ReRankerProvider{reranker} 36 } 37 38 func (p *ReRankerProvider) AdditionalPropertyDefaultValue() interface{} { 39 return &Params{} 40 } 41 42 func (p *ReRankerProvider) ExtractAdditionalFn(param []*ast.Argument) interface{} { 43 return p.parseReRankerArguments(param) 44 } 45 46 func (p *ReRankerProvider) AdditionalFieldFn(classname string) *graphql.Field { 47 return p.additionalReRankerField(classname) 48 } 49 50 func (p *ReRankerProvider) AdditionalPropertyFn(ctx context.Context, 51 in []search.Result, params interface{}, limit *int, 52 argumentModuleParams map[string]interface{}, cfg moduletools.ClassConfig, 53 ) ([]search.Result, error) { 54 if parameters, ok := params.(*Params); ok { 55 return p.getScore(ctx, cfg, in, parameters) 56 } 57 return nil, errors.New("wrong parameters") 58 }