Get text embeddings (Generative AI)

Get text embeddings for a snippet of text using an embedding model.

Code sample

Java

Before trying this sample, follow the Java setup instructions in the Vertex AI quickstart using client libraries . For more information, see the Vertex AI Java API reference documentation .

To authenticate to Vertex AI, set up Application Default Credentials. For more information, see Set up authentication for a local development environment .

  import static 
  
 java.util.stream.Collectors.toList 
 ; 
 import 
  
 com.google.cloud.aiplatform.v1. EndpointName 
 
 ; 
 import 
  
 com.google.cloud.aiplatform.v1. PredictRequest 
 
 ; 
 import 
  
 com.google.cloud.aiplatform.v1. PredictResponse 
 
 ; 
 import 
  
 com.google.cloud.aiplatform.v1. PredictionServiceClient 
 
 ; 
 import 
  
 com.google.cloud.aiplatform.v1. PredictionServiceSettings 
 
 ; 
 import 
  
 com.google.protobuf. Struct 
 
 ; 
 import 
  
 com.google.protobuf. Value 
 
 ; 
 import 
  
 java.io.IOException 
 ; 
 import 
  
 java.util.ArrayList 
 ; 
 import 
  
 java.util.List 
 ; 
 import 
  
 java.util.OptionalInt 
 ; 
 import 
  
 java.util.regex.Matcher 
 ; 
 import 
  
 java.util.regex.Pattern 
 ; 
 public 
  
 class 
 PredictTextEmbeddingsSample 
  
 { 
  
 public 
  
 static 
  
 void 
  
 main 
 ( 
 String 
 [] 
  
 args 
 ) 
  
 throws 
  
 IOException 
  
 { 
  
 // TODO(developer): Replace these variables before running the sample. 
  
 // Details about text embedding request structure and supported models are available in: 
  
 // https://cloud.google.com/vertex-ai/docs/generative-ai/embeddings/get-text-embeddings 
  
 String 
  
 endpoint 
  
 = 
  
 "us-central1-aiplatform.googleapis.com:443" 
 ; 
  
 String 
  
 project 
  
 = 
  
 "YOUR_PROJECT_ID" 
 ; 
  
 String 
  
 model 
  
 = 
  
 "gemini-embedding-001" 
 ; 
  
 predictTextEmbeddings 
 ( 
  
 endpoint 
 , 
  
 project 
 , 
  
 model 
 , 
  
 List 
 . 
 of 
 ( 
 "banana bread?" 
 , 
  
 "banana muffins?" 
 ), 
  
 "QUESTION_ANSWERING" 
 , 
  
 OptionalInt 
 . 
 of 
 ( 
 3072 
 )); 
  
 } 
  
 // Gets text embeddings from a pretrained, foundational model. 
  
 public 
  
 static 
  
 List<List<Float> 
>  
 predictTextEmbeddings 
 ( 
  
 String 
  
 endpoint 
 , 
  
 String 
  
 project 
 , 
  
 String 
  
 model 
 , 
  
 List<String> 
  
 texts 
 , 
  
 String 
  
 task 
 , 
  
 OptionalInt 
  
 outputDimensionality 
 ) 
  
 throws 
  
 IOException 
  
 { 
  
  PredictionServiceSettings 
 
  
 settings 
  
 = 
  
  PredictionServiceSettings 
 
 . 
 newBuilder 
 (). 
 setEndpoint 
 ( 
 endpoint 
 ). 
 build 
 (); 
  
 Matcher 
  
 matcher 
  
 = 
  
 Pattern 
 . 
 compile 
 ( 
 "^(?<Location>\\w+-\\w+)" 
 ). 
 matcher 
 ( 
 endpoint 
 ); 
  
 String 
  
 location 
  
 = 
  
 matcher 
 . 
 matches 
 () 
  
 ? 
  
 matcher 
 . 
 group 
 ( 
 "Location" 
 ) 
  
 : 
  
 "us-central1" 
 ; 
  
  EndpointName 
 
  
 endpointName 
  
 = 
  
  EndpointName 
 
 . 
  ofProjectLocationPublisherModelName 
 
 ( 
 project 
 , 
  
 location 
 , 
  
 "google" 
 , 
  
 model 
 ); 
  
 List<List<Float> 
>  
 floats 
  
 = 
  
 new 
  
 ArrayList 
<> (); 
  
 // You can use this prediction service client for multiple requests. 
  
 try 
  
 ( 
  PredictionServiceClient 
 
  
 client 
  
 = 
  
  PredictionServiceClient 
 
 . 
 create 
 ( 
 settings 
 )) 
  
 { 
  
 // gemini-embedding-001 takes one input at a time. 
  
 for 
  
 ( 
 int 
  
 i 
  
 = 
  
 0 
 ; 
  
 i 
 < 
 texts 
 . 
 size 
 (); 
  
 i 
 ++ 
 ) 
  
 { 
  
  PredictRequest 
 
 . 
 Builder 
  
 request 
  
 = 
  
  
  PredictRequest 
 
 . 
 newBuilder 
 (). 
 setEndpoint 
 ( 
 endpointName 
 . 
  toString 
 
 ()); 
  
 if 
  
 ( 
 outputDimensionality 
 . 
 isPresent 
 ()) 
  
 { 
  
 request 
 . 
 setParameters 
 ( 
  
  Value 
 
 . 
 newBuilder 
 () 
  
 . 
 setStructValue 
 ( 
  
  Struct 
 
 . 
 newBuilder 
 () 
  
 . 
 putFields 
 ( 
  
 "outputDimensionality" 
 , 
  
 valueOf 
 ( 
 outputDimensionality 
 . 
 getAsInt 
 ())) 
  
 . 
 build 
 ())); 
  
 } 
  
 request 
 . 
 addInstances 
 ( 
  
  Value 
 
 . 
 newBuilder 
 () 
  
 . 
 setStructValue 
 ( 
  
  Struct 
 
 . 
 newBuilder 
 () 
  
 . 
 putFields 
 ( 
 "content" 
 , 
  
 valueOf 
 ( 
 texts 
 . 
 get 
 ( 
 i 
 ))) 
  
 . 
 putFields 
 ( 
 "task_type" 
 , 
  
 valueOf 
 ( 
 task 
 )) 
  
 . 
 build 
 ())); 
  
  PredictResponse 
 
  
 response 
  
 = 
  
 client 
 . 
 predict 
 ( 
 request 
 . 
 build 
 ()); 
  
 for 
  
 ( 
  Value 
 
  
 prediction 
  
 : 
  
 response 
 . 
  getPredictionsList 
 
 ()) 
  
 { 
  
  Value 
 
  
 embeddings 
  
 = 
  
 prediction 
 . 
 getStructValue 
 (). 
 getFieldsOrThrow 
 ( 
 "embeddings" 
 ); 
  
  Value 
 
  
 values 
  
 = 
  
 embeddings 
 . 
  getStructValue 
 
 (). 
 getFieldsOrThrow 
 ( 
 "values" 
 ); 
  
 floats 
 . 
 add 
 ( 
  
 values 
 . 
  getListValue 
 
 (). 
 getValuesList 
 (). 
 stream 
 () 
  
 . 
 map 
 ( 
 Value 
 :: 
 getNumberValue 
 ) 
  
 . 
 map 
 ( 
 Double 
 :: 
 floatValue 
 ) 
  
 . 
 collect 
 ( 
 toList 
 ())); 
  
 } 
  
 } 
  
 return 
  
 floats 
 ; 
  
 } 
  
 } 
  
 private 
  
 static 
  
  Value 
 
  
 valueOf 
 ( 
 String 
  
 s 
 ) 
  
 { 
  
 return 
  
  Value 
 
 . 
 newBuilder 
 (). 
 setStringValue 
 ( 
 s 
 ). 
 build 
 (); 
  
 } 
  
 private 
  
 static 
  
  Value 
 
  
 valueOf 
 ( 
 int 
  
 n 
 ) 
  
 { 
  
 return 
  
  Value 
 
 . 
 newBuilder 
 (). 
 setNumberValue 
 ( 
 n 
 ). 
 build 
 (); 
  
 } 
 } 
 

Node.js

Before trying this sample, follow the Node.js setup instructions in the Vertex AI quickstart using client libraries . For more information, see the Vertex AI Node.js API reference documentation .

To authenticate to Vertex AI, set up Application Default Credentials. For more information, see Set up authentication for a local development environment .

  async 
  
 function 
  
 main 
 ( 
  
 project 
 , 
  
 model 
  
 = 
  
 'gemini-embedding-001' 
 , 
  
 texts 
  
 = 
  
 'banana bread?;banana muffins?' 
 , 
  
 task 
  
 = 
  
 'QUESTION_ANSWERING' 
 , 
  
 dimensionality 
  
 = 
  
 0 
 , 
  
 apiEndpoint 
  
 = 
  
 'us-central1-aiplatform.googleapis.com' 
 ) 
  
 { 
  
 const 
  
 aiplatform 
  
 = 
  
 require 
 ( 
 ' @google-cloud/aiplatform 
' 
 ); 
  
 const 
  
 { 
 PredictionServiceClient 
 } 
  
 = 
  
 aiplatform 
 . 
 v1 
 ; 
  
 const 
  
 { 
 helpers 
 } 
  
 = 
  
 aiplatform 
 ; 
  
 // helps construct protobuf.Value objects. 
  
 const 
  
 clientOptions 
  
 = 
  
 { 
 apiEndpoint 
 : 
  
 apiEndpoint 
 }; 
  
 const 
  
 location 
  
 = 
  
 'us-central1' 
 ; 
  
 const 
  
 endpoint 
  
 = 
  
 `projects/ 
 ${ 
 project 
 } 
 /locations/ 
 ${ 
 location 
 } 
 /publishers/google/models/ 
 ${ 
 model 
 } 
 ` 
 ; 
  
 async 
  
 function 
  
 callPredict 
 () 
  
 { 
  
 const 
  
 instances 
  
 = 
  
 texts 
  
 . 
 split 
 ( 
 ';' 
 ) 
  
 . 
 map 
 ( 
 e 
  
 = 
>  
  helpers 
 
 . 
 toValue 
 ({ 
 content 
 : 
  
 e 
 , 
  
 task_type 
 : 
  
 task 
 })); 
  
 const 
  
 client 
  
 = 
  
 new 
  
  PredictionServiceClient 
 
 ( 
 clientOptions 
 ); 
  
 const 
  
 parameters 
  
 = 
  
  helpers 
 
 . 
 toValue 
 ( 
  
 dimensionality 
 > 
 0 
  
 ? 
  
 { 
 outputDimensionality 
 : 
  
 parseInt 
 ( 
 dimensionality 
 )} 
  
 : 
  
 {} 
  
 ); 
  
 const 
  
 allEmbeddings 
  
 = 
  
 [] 
  
 // gemini-embedding-001 takes one input at a time. 
  
 for 
  
 ( 
 const 
  
 instance 
  
 of 
  
 instances 
 ) 
  
 { 
  
 const 
  
 request 
  
 = 
  
 { 
 endpoint 
 , 
  
 instances 
 : 
  
 [ 
 instance 
 ], 
  
 parameters 
 }; 
  
 const 
  
 [ 
 response 
 ] 
  
 = 
  
 await 
  
 client 
 . 
 predict 
 ( 
 request 
 ); 
  
 const 
  
 predictions 
  
 = 
  
 response 
 . 
 predictions 
 ; 
  
 const 
  
 embeddings 
  
 = 
  
 predictions 
 . 
 map 
 ( 
 p 
  
 = 
>  
 { 
  
 const 
  
 embeddingsProto 
  
 = 
  
 p 
 . 
 structValue 
 . 
 fields 
 . 
 embeddings 
 ; 
  
 const 
  
 valuesProto 
  
 = 
  
 embeddingsProto 
 . 
 structValue 
 . 
 fields 
 . 
 values 
 ; 
  
 return 
  
 valuesProto 
 . 
 listValue 
 . 
 values 
 . 
 map 
 ( 
 v 
  
 = 
>  
 v 
 . 
 numberValue 
 ); 
  
 }); 
  
 allEmbeddings 
 . 
 push 
 ( 
 embeddings 
 [ 
 0 
 ]) 
  
 } 
  
 console 
 . 
 log 
 ( 
 'Got embeddings: \n' 
  
 + 
  
 JSON 
 . 
 stringify 
 ( 
 allEmbeddings 
 )); 
  
 } 
  
 callPredict 
 (); 
 } 
 

What's next

To search and filter code samples for other Google Cloud products, see the Google Cloud sample browser .

Create a Mobile Website
View Site in Mobile | Classic
Share by: