PaLM API: Java를 사용한 임베딩 빠른 시작

이 빠른 시작을 통해 PaLM API의 임베딩 서비스를 사용할 수 있습니다. 임베딩 서비스를 사용해 다양한 자연어 애플리케이션에서 사용할 수 있는 텍스트 임베딩을 생성합니다.

API 키 가져오기

시작하려면 API 키를 가져와야 합니다.

임베딩이란 무엇인가요?

임베딩은 텍스트 (예: 단어, 문장 또는 전체 단락)를 배열의 부동 소수점 숫자 목록으로 표현하는 데 사용되는 기법입니다. 핵심 아이디어는 비슷한 의미를 가진 텍스트도 유사한 임베딩을 갖는다는 것입니다. 여러 중요한 작업에 두 서비스 간의 관계를 사용할 수 있습니다.

API 클라이언트 설치

이 안내를 따라 로컬 Maven 저장소에 PaLM 자바 SDK가 설치되므로 Gradle 프로젝트에 종속 항목으로 추가할 수 있습니다.

  1. google-cloud-ai-generativelanguage-v1-java.tar.gz 파일을 다운로드합니다.
  2. 파일의 압축을 풀고 mavenLocal에 설치합니다.

    # Extract the files
    tar
    -xzvf google-cloud-ai-generativelanguage-v1-java.tar.gz
    cd google
    -cloud-ai-generativelanguage-v1-java

    # Install to mavenLocal
    ./gradlew publishToMavenLocal
  3. Gradle 구성 파일을 열고 mavenLocal()repositories 아래에 있는지 확인합니다.

    repositories {
        mavenCentral
    ()
       
    // ...

       
    // Add the Maven Local repository
        mavenLocal
    ()
    }
  4. 또한 Gradle 구성 파일에서 필요한 라이브러리를 dependencies 블록에 추가합니다.

    dependencies {
       
    // ...

       
    // Add these dependencies to use Generative AI
        implementation
    ("com.google.cloud:gapic-google-cloud-ai-generativelanguage-v1-java:0.0.0-SNAPSHOT")
        implementation
    ("io.grpc:grpc-okhttp:1.53.0")
    }

텍스트 서비스 클라이언트 초기화

자바 프로그램에서 API 키를 TextServiceSettings에서 사용할 TransportChannelProvider에 헤더로 전달하여 TextServiceClient를 초기화합니다.

HashMap<String, String> headers = new HashMap<>();
headers
.put("x-goog-api-key", "API_KEY");

TransportChannelProvider provider = InstantiatingGrpcChannelProvider.newBuilder()
   
.setHeaderProvider(FixedHeaderProvider.create(headers))
   
.build();

TextServiceSettings settings = TextServiceSettings.newBuilder()
   
.setTransportChannelProvider(provider)
   
.setCredentialsProvider(FixedCredentialsProvider.create(null))
   
.build();

TextServiceClient client = TextServiceClient.create(settings);

임베딩 생성

이 섹션에서는 embedText 메서드를 사용하여 텍스트 조각의 임베딩을 생성하는 방법을 보여줍니다.

embedText 메서드를 사용하려면 모델 이름과 삽입할 텍스트를 전달합니다. 부동 소수점 값 목록이 표시됩니다.

EmbedTextRequest request = EmbedTextRequest.newBuilder()
   
.setModel("models/embedding-gecko-001") // Required, which model to use to generate the result
   
.setText("What do squirrels eat?") // Required
   
.build();

EmbedTextResponse response = client.embedText(request);

List<Float> embedding = response.getEmbedding().getValueList();

System.out.println(embedding);