Umieszczanie w interfejsie Gemini API

Usługa umieszczania w interfejsie Gemini API generuje najnowocześniejsze wektory dystrybucyjne dla słów, wyrażeń i zdań. Uzyskane wektory dystrybucyjne mogą być następnie wykorzystywane do zadań przetwarzania języka naturalnego (NLP), takich jak wyszukiwanie semantyczne, klasyfikacja tekstu czy grupowanie.

Na tej stronie znajduje się krótki opis reprezentacji właściwościowych oraz najważniejsze przypadki użycia tej usługi, które mogą ułatwić Ci rozpoczęcie pracy.

Czym są wektory dystrybucyjne?

Wektory dystrybucyjne tekstu to technika przetwarzania języka naturalnego (NLP), która przekształca tekst na współrzędne liczbowe (nazywane wektorami), które można rysować w przestrzeni n-wymiarowej. Dzięki temu podejściu możesz traktować fragmenty tekstu jako fragmenty danych relacyjnych, na których możemy potem trenować modele.

Wektory dystrybucyjne rejestrują znaczenie semantyczne i kontekst, przez co tekst o podobnych znaczeniach ma ściślej osadzone reprezentacje. Na przykład zdanie „Zabrałem psa do weterynarza” i „Zabrałem kota do weterynarza” zawierają reprezentacje właściwościowe, które są bardzo blisko siebie w przestrzeni wektorowej, ponieważ oba opisują podobny kontekst.

Dzięki wektorom dystrybucyjnym możesz porównywać różne teksty i sprawdzać, jak są ze sobą powiązane. Jeśli na przykład słowa „kot” i „pies” są blisko siebie, możesz wywnioskować, że są one podobne pod względem znaczenia lub kontekstu. Umożliwia to różne przypadki użycia opisane w następnej sekcji.

Przykłady zastosowań

Wektory dystrybucyjne tekstu są wykorzystywane w wielu zastosowaniach NLP, na przykład:

  • Pobieranie informacji: możesz używać wektorów dystrybucyjnych, aby pobrać tekst podobny semantycznie na podstawie wpisanego tekstu. System pobierania informacji, taki jak wyszukiwanie semantyczne, odpowiadanie na pytania czy podsumowywanie, może obsługiwać wiele zastosowań.
  • Klasyfikacja: możesz wytrenować model przy użyciu wektorów dystrybucyjnych do klasyfikowania dokumentów w kategoriach. Jeśli na przykład chcesz klasyfikować komentarze użytkowników jako negatywne lub pozytywne, możesz użyć usługi wektorów dystrybucyjnych, aby uzyskać reprezentację wektorową każdego komentarza i wytrenować klasyfikator.
  • Grupowanie: porównywanie wektorów tekstu pozwala określić, czy są podobne lub różne. Tej funkcji można używać do trenowania modelu grupowania, który grupuje podobne teksty lub dokumenty, a także do wykrywania anomalii w danych.
  • Baza danych wektorowych: możesz przechowywać wygenerowane wektory dystrybucyjne w bazie danych wektorowych, aby zwiększyć dokładność i wydajność aplikacji NLP. Zapoznaj się z poniższym samouczkiem, aby dowiedzieć się, jak wykorzystać wektorową bazę danych do przekształcania promptów tekstowych na wektory liczbowe.

Modele wektorów dystrybucyjnych Gemini

Interfejs Gemini API udostępnia 2 modele, które generują wektory dystrybucyjne tekstu: Umieszczanie tekstu i Wektory dystrybucyjne. Umieszczanie tekstu to zaktualizowana wersja modelu wektora dystrybucyjnego, która oferuje elastyczne rozmiary wektora dystrybucyjnego mniejsze niż 768. Wektory dystrybucyjne elastyczne generują mniejsze wymiary wyjściowe i potencjalnie pozwalają obniżyć koszty przetwarzania danych i przechowywania danych przy lekkim zmniejszeniu wydajności.

Zastosowanie umieszczania tekstu w nowych projektach lub aplikacjach. Twoja aplikacja powinna używać modelu umieszczania tylko wtedy, gdy nie możesz przeprowadzić jego migracji, aby korzystała z tego modelu.

Generowanie wektorów dystrybucyjnych za pomocą interfejsu Gemini API

Do generowania wektorów dystrybucyjnych tekstu używaj metody embedContent:

Python

result = genai.embed_content(
model="models/text-embedding-004",
content="What is the meaning of life?",
task_type="retrieval_document",
title="Embedding of single string")

# 1 input > 1 vector output
print(str(result['embedding'])[:50], '... TRIMMED]')

Pełny możliwy do uruchomienia przykład znajdziesz w naszym samouczku dla początkujących.

Przeczytaj

ctx := context.Background()
// Access your API key as an environment variable (see our Getting Started tutorial)
client, err := genai.NewClient(ctx, option.WithAPIKey(os.Getenv("API_KEY")))
if err != nil {
log.Fatal(err)
}
defer client.Close()
// For embeddings, use the Text Embeddings model
em := client.EmbeddingModel("text-embedding-004")
res, err := em.EmbedContent(ctx, genai.Text("The quick brown fox jumps over the lazy dog."))

if err != nil {
panic(err)
}
fmt.Println(res.Embedding.Values)

Pełny możliwy do uruchomienia przykład znajdziesz w naszym samouczku dla początkujących.

Node.js

const { GoogleGenerativeAI } = require("@google/generative-ai");

// Access your API key as an environment variable (see our Getting Started tutorial)
const genAI = new GoogleGenerativeAI(process.env.API_KEY);

async function run() {
// For embeddings, use the Text Embeddings model
const model = genAI.getGenerativeModel({ model: "text-embedding-004"});

const text = "The quick brown fox jumps over the lazy dog."

const result = await model.embedContent(text);
const embedding = result.embedding;
console.log(embedding.values);
}

run();

Pełny możliwy do uruchomienia przykład znajdziesz w naszym samouczku dla początkujących.

Rzutki (Flutter)

final model = GenerativeModel(model: 'text-embedding-004', apiKey: apiKey);
final content = Content.text('The quick brown fox jumps over the lazy dog.');
final result = await model.embedContent(content);
print(result.embedding.values);

Pełny możliwy do uruchomienia przykład znajdziesz w naszym samouczku dla początkujących.

curl

curl "https://generativelanguage.googleapis.com/v1beta/models/text-embedding-004:embedContent?key=$GOOGLE_API_KEY" \
-H 'Content-Type: application/json' \
-d '{"model": "models/text-embedding-004",
    "content": {
    "parts":[{
    "text": "Hello world"}]}, }' 2> /dev/null | head

Pełny przykład wdrożenia znajdziesz w naszym krótkim wprowadzeniu do umieszczania na stronie z użyciem REST książki kucharskiej na GitHubie.

Co dalej