Nhúng

Gemini API hỗ trợ một số mô hình nhúng tạo ra các phần nhúng cho từ, cụm từ, mã và câu. Sau đó, bạn có thể sử dụng các nội dung nhúng thu được cho các tác vụ như tìm kiếm ngữ nghĩa, phân loại văn bản và tạo cụm, cùng nhiều tác vụ khác.

Nhúng là gì?

Nội dung nhúng là nội dung đại diện bằng số của văn bản (hoặc các định dạng nội dung nghe nhìn khác) giúp ghi lại mối quan hệ giữa các dữ liệu đầu vào. Tính năng nhúng văn bản hoạt động bằng cách chuyển đổi văn bản thành các mảng số dấu phẩy động, được gọi là vectơ. Các vectơ này được thiết kế để nắm bắt ý nghĩa của văn bản. Độ dài của mảng nhúng được gọi là phương diện của vectơ. Một đoạn văn bản có thể được biểu thị bằng một vectơ chứa hàng trăm phương diện.

Các phần nhúng ghi lại ngữ nghĩa và ngữ cảnh, nhờ đó, văn bản có ý nghĩa tương tự sẽ có các phần nhúng "gần hơn". Ví dụ: câu "Tôi đưa chó đến bác sĩ thú y" và "Tôi đưa mèo đến bác sĩ thú y" sẽ có các phần nhúng gần nhau trong không gian vectơ.

Bạn có thể sử dụng tính năng nhúng để so sánh các văn bản khác nhau và tìm hiểu mối quan hệ giữa các văn bản đó. Ví dụ: nếu các phần nhúng của văn bản "mèo" và "chó" nằm gần nhau, bạn có thể suy luận rằng các từ này tương tự nhau về ý nghĩa, ngữ cảnh hoặc cả hai. Điều này cho phép nhiều trường hợp sử dụng AI phổ biến.

Tạo nội dung nhúng

Sử dụng phương thức embedContent để tạo các văn bản nhúng:

from google import genai

client = genai.Client(api_key="GEMINI_API_KEY")

result = client.models.embed_content(
        model="gemini-embedding-exp-03-07",
        contents="What is the meaning of life?")

print(result.embeddings)
import { GoogleGenAI } from "@google/genai";

async function main() {

    const ai = new GoogleGenAI({ apiKey: "GEMINI_API_KEY" });

    const response = await ai.models.embedContent({
        model: 'gemini-embedding-exp-03-07',
        contents: 'What is the meaning of life?',
    });

    console.log(response.embeddings);
}

main();
ctx := context.Background()

client, err := genai.NewClient(ctx, option.WithAPIKey(os.Getenv("GEMINI_API_KEY")))
if err != nil {
    log.Fatal(err)
}
defer client.Close()

em := client.EmbeddingModel("gemini-embedding-exp-03-07")
res, err := em.EmbedContent(ctx, genai.Text("What is the meaning of life?"))

if err != nil {
    panic(err)
}
fmt.Println(res.Embedding.Values)
curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-embedding-exp-03-07:embedContent?key=$GEMINI_API_KEY" \
-H 'Content-Type: application/json' \
-d '{"model": "models/gemini-embedding-exp-03-07",
     "content": {
     "parts":[{
     "text": "What is the meaning of life?"}]}
    }'

Bạn cũng có thể tạo các phần nhúng cho nhiều đoạn cùng một lúc bằng cách truyền các đoạn đó dưới dạng danh sách các chuỗi.

Loại việc cần làm

Khi xây dựng hệ thống Tạo dữ liệu tăng cường truy xuất (RAG), một thiết kế phổ biến là sử dụng các văn bản nhúng để thực hiện tìm kiếm tương đồng. Trong một số trường hợp, điều này có thể dẫn đến chất lượng giảm vì câu hỏi và câu trả lời không tương đồng về ngữ nghĩa. Ví dụ: một câu hỏi như "Tại sao trời lại xanh?" và câu trả lời "Sự tán xạ ánh sáng mặt trời tạo ra màu xanh dương" có ý nghĩa khác nhau rõ ràng khi là câu lệnh, nghĩa là hệ thống RAG sẽ không tự động nhận ra mối quan hệ giữa chúng.

Các loại tác vụ cho phép bạn tạo các mục nhúng được tối ưu hoá cho các tác vụ cụ thể, giúp bạn tiết kiệm thời gian và chi phí cũng như cải thiện hiệu suất.

from google import genai
from google.genai import types

client = genai.Client(api_key="GEMINI_API_KEY")

result = client.models.embed_content(
        model="gemini-embedding-exp-03-07",
        contents="What is the meaning of life?",
        config=types.EmbedContentConfig(task_type="SEMANTIC_SIMILARITY")
)
print(result.embeddings)
import { GoogleGenAI } from "@google/genai";

async function main() {

    const ai = new GoogleGenAI({ apiKey: "GEMINI_API_KEY" });

    const response = await ai.models.embedContent({
        model: 'gemini-embedding-exp-03-07',
        contents: 'What is the meaning of life?',
        config: {
            taskType: "SEMANTIC_SIMILARITY",
        }
    });

    console.log(response.embeddings);
}

main();
curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-embedding-exp-03-07:embedContent?key=$GEMINI_API_KEY" \
-H 'Content-Type: application/json' \
-d '{"model": "models/gemini-embedding-exp-03-07",
     "content": {
     "parts":[{
     "text": "What is the meaning of life?"}]},
     "taskType": "SEMANTIC_SIMILARITY"
    }'

Các loại tác vụ được hỗ trợ

Loại việc cần làm Mô tả
SEMANTIC_SIMILARITY Dùng để tạo các nội dung nhúng được tối ưu hoá để đánh giá mức độ tương đồng của văn bản.
CLASSIFICATION Dùng để tạo các giá trị nhúng được tối ưu hoá để phân loại văn bản theo nhãn đặt trước.
CLUSTERING Dùng để tạo các giá trị nhúng được tối ưu hoá để nhóm các văn bản dựa trên sự tương đồng của chúng.
RETRIEVAL_DOCUMENT, RETRIEVAL_QUERY, QUESTION_ANSWERINGFACT_VERIFICATION Dùng để tạo các nội dung nhúng được tối ưu hoá cho việc tìm kiếm tài liệu hoặc truy xuất thông tin.
CODE_RETRIEVAL_QUERY Dùng để truy xuất một khối mã dựa trên truy vấn bằng ngôn ngữ tự nhiên, chẳng hạn như sắp xếp một mảng hoặc đảo ngược một danh sách liên kết. Các phần nhúng của khối mã được tính toán bằng RETRIEVAL_DOCUMENT.

Trường hợp sử dụng

Nội dung nhúng văn bản được dùng trong nhiều trường hợp sử dụng AI phổ biến, chẳng hạn như:

Nhúng mô hình

Gemini API cung cấp 3 mô hình tạo văn bản nhúng:

Bước tiếp theo

Hãy xem sổ tay bắt đầu nhanh về nội dung nhúng.