github.com/weaviate/weaviate@v1.24.6/modules/text2vec-palm/vectorizer/texts_test.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 vectorizer 13 14 import ( 15 "context" 16 "testing" 17 18 "github.com/stretchr/testify/assert" 19 "github.com/stretchr/testify/require" 20 ) 21 22 // as used in the nearText searcher 23 func TestVectorizingTexts(t *testing.T) { 24 type testCase struct { 25 name string 26 input []string 27 expectedPalmModel string 28 palmModel string 29 } 30 31 tests := []testCase{ 32 { 33 name: "single word", 34 input: []string{"hello"}, 35 palmModel: "textembedding-gecko@001", 36 expectedPalmModel: "textembedding-gecko@001", 37 }, 38 { 39 name: "multiple words", 40 input: []string{"hello world, this is me!"}, 41 palmModel: "textembedding-gecko@001", 42 expectedPalmModel: "textembedding-gecko@001", 43 }, 44 { 45 name: "multiple sentences (joined with a dot)", 46 input: []string{"this is sentence 1", "and here's number 2"}, 47 palmModel: "textembedding-gecko@001", 48 expectedPalmModel: "textembedding-gecko@001", 49 }, 50 { 51 name: "multiple sentences already containing a dot", 52 input: []string{"this is sentence 1.", "and here's number 2"}, 53 palmModel: "textembedding-gecko@001", 54 expectedPalmModel: "textembedding-gecko@001", 55 }, 56 { 57 name: "multiple sentences already containing a question mark", 58 input: []string{"this is sentence 1?", "and here's number 2"}, 59 palmModel: "textembedding-gecko@001", 60 expectedPalmModel: "textembedding-gecko@001", 61 }, 62 { 63 name: "multiple sentences already containing an exclamation mark", 64 input: []string{"this is sentence 1!", "and here's number 2"}, 65 palmModel: "textembedding-gecko@001", 66 expectedPalmModel: "textembedding-gecko@001", 67 }, 68 { 69 name: "multiple sentences already containing comma", 70 input: []string{"this is sentence 1,", "and here's number 2"}, 71 palmModel: "textembedding-gecko@001", 72 expectedPalmModel: "textembedding-gecko@001", 73 }, 74 } 75 76 for _, test := range tests { 77 t.Run(test.name, func(t *testing.T) { 78 client := &fakeClient{} 79 80 v := New(client) 81 82 cfg := &fakeClassConfig{ 83 apiEndpoint: "", 84 projectID: "", 85 endpointID: "", 86 modelID: test.palmModel, 87 } 88 vec, err := v.Texts(context.Background(), test.input, cfg) 89 90 require.Nil(t, err) 91 assert.Equal(t, []float32{0.1, 1.1, 2.1, 3.1}, vec) 92 assert.Equal(t, test.input, client.lastInput) 93 assert.Equal(t, DefaultApiEndpoint, client.lastConfig.ApiEndpoint) 94 assert.Equal(t, test.palmModel, client.lastConfig.Model) 95 }) 96 } 97 }