Đơn vị:

Mục nhúng

HaoHao

Gemini API cung cấp các mô hình nhúng để tạo các mục nhúng cho văn bản, hình ảnh, video và nội dung khác. Sau đó, bạn có thể dùng các vectơ nhúng thu được cho những tác vụ như tìm kiếm ngữ nghĩa, phân loại và phân cụm, mang lại kết quả chính xác hơn và nhận biết được ngữ cảnh so với các phương pháp dựa trên từ khoá.

Mô hình mới nhất, gemini-embedding-2, là mô hình nhúng đa phương thức đầu tiên trong Gemini API. Mô hình này ánh xạ văn bản, hình ảnh, video, âm thanh và tài liệu vào một không gian nhúng thống nhất, cho phép tìm kiếm, phân loại và phân cụm đa phương thức trên hơn 100 ngôn ngữ. Hãy xem phần về các vectơ nhúng đa phương thức để tìm hiểu thêm. Đối với các trường hợp sử dụng chỉ có văn bản, bạn vẫn có thể dùng gemini-embedding-001.

Xây dựng hệ thống Tạo sinh tăng cường truy xuất (RAG) là một trường hợp sử dụng phổ biến cho các sản phẩm AI. Dữ liệu nhúng đóng vai trò quan trọng trong việc cải thiện đáng kể kết quả của mô hình nhờ độ chính xác về thông tin thực tế, tính nhất quán và mức độ phong phú về ngữ cảnh được cải thiện. Nếu bạn muốn sử dụng một giải pháp RAG được quản lý, chúng tôi đã tạo công cụ Tìm kiếm tệp để giúp bạn quản lý RAG dễ dàng hơn và tiết kiệm chi phí hơn.

Tạo các vectơ nhúng

Dùng phương thức embedContent để tạo các vectơ nhúng văn bản:

Lưu ý: Mặc dù gemini-embedding-001 cho phép bạn tạo các vectơ nhúng riêng lẻ cho một danh sách chuỗi, nhưng Gemini Embedding 2 tạo ra một vectơ nhúng tổng hợp duy nhất cho nhiều dữ liệu đầu vào. Bạn có thể tìm thêm thông tin trong phần Nhúng tính năng tổng hợp hoặc bạn có thể sử dụng Batch API nếu muốn tạo nhiều mục nhúng cùng một lúc.

Chỉ định loại việc cần làm để cải thiện hiệu suất

Bạn có thể sử dụng các vectơ nhúng cho nhiều tác vụ, từ phân loại đến tìm kiếm tài liệu. Việc chỉ định đúng loại tác vụ sẽ giúp tối ưu hoá các mục nhúng cho các mối quan hệ dự kiến, tối đa hoá độ chính xác và hiệu quả.

Các loại nhiệm vụ có Embeddings 2

Đối với các tác vụ chỉ có văn bản có gemini-embedding-2, bạn nên thêm hướng dẫn cho tác vụ vào câu lệnh. Bạn có thể thực hiện việc này bằng cách định dạng truy vấn và tài liệu bằng tiền tố nhiệm vụ chính xác.

Các bảng sau đây cho thấy ví dụ về cách định dạng truy vấn và tài liệu cho các trường hợp sử dụng đối xứng và bất đối xứng bằng mô hình gemini-embedding-2.

Trường hợp sử dụng truy xuất (Định dạng bất đối xứng)

Trong các trường hợp sử dụng không đối xứng, hãy thêm tiền tố tác vụ vào truy vấn và áp dụng cấu trúc tài liệu cho nội dung bạn muốn nhúng và truy xuất.

Trường hợp sử dụng Cấu trúc truy vấn Cấu trúc tài liệu Truy vấn tìm kiếm task: search result | query: {content} title: {title} | text: {content}Nếu không có tiêu đề, hãy dùng title: none. Trả lời câu hỏi task: question answering | query: {content} title: {title} | text: {content} Kiểm chứng thông tin task: fact checking | query: {content} title: {title} | text: {content} Truy xuất mã task: code retrieval | query: {content} title: {title} | text: {content}

Ví dụ về cách sử dụng

Trường hợp sử dụng một đầu vào (Định dạng đối xứng)

Trong các trường hợp sử dụng đối xứng, đối với cùng một tác vụ, hãy sử dụng cùng một định dạng cho cụm từ tìm kiếm và tài liệu.

Trường hợp sử dụng Cấu trúc đầu vào Phân loại task: classification | query: {content} Tạo cụm task: clustering | query: {content} Tính tương đồng về mặt ngữ nghĩa task: sentence similarity | query: {content}Không dùng mã này để tìm kiếm hoặc truy xuất. Mô hình này được thiết kế để đo mức độ tương đồng về ngữ nghĩa giữa các văn bản.

Ví dụ về cách sử dụng

Điều quan trọng là bạn phải sử dụng tác vụ này một cách nhất quán. Ví dụ: nếu tài liệu được nhúng bằng f'task: classification | query: {content}', thì truy vấn cũng phải được nhúng theo định dạng tác vụ này.

Các loại nhiệm vụ có tính năng Nhúng 1

Đối với gemini-embedding-001, bạn có thể chỉ định task_type trong phương thức embedContent. Để biết danh sách đầy đủ các loại tác vụ được hỗ trợ, hãy xem bảng Các loại tác vụ được hỗ trợ.

Lưu ý: Bạn không thể sử dụng trường task_type cho mô hình gemini-embedding-2. Thay vào đó, hãy thêm nhiệm vụ này dưới dạng một chỉ dẫn trong câu lệnh của bạn, như được trình bày chi tiết trong phần trên.

Ví dụ sau đây cho thấy cách bạn có thể dùng SEMANTIC_SIMILARITY để kiểm tra mức độ tương đồng về ý nghĩa của các chuỗi văn bản.

Các đoạn mã sẽ cho biết mức độ tương đồng giữa các khối văn bản khi chạy.

Lưu ý: Độ tương tự về cosin là một chỉ số khoảng cách phù hợp vì chỉ số này tập trung vào hướng thay vì độ lớn, phản ánh chính xác hơn mức độ gần gũi về khái niệm. Giá trị dao động từ -1 (ngược lại) đến 1 (mức độ tương đồng cao nhất).

Các loại việc cần làm được hỗ trợ

Các loại nhiệm vụ được hỗ trợ cho gemini-embedding-001:

Loại việc cần làm Mô tả Ví dụ SEMANTIC_SIMILARITY Các vectơ nhúng được tối ưu hoá để đánh giá mức độ tương đồng của văn bản. Hệ thống đề xuất, phát hiện nội dung trùng lặp PHÂN LOẠI Các vectơ nhúng được tối ưu hoá để phân loại văn bản theo nhãn đặt sẵn. Phân tích cảm xúc, phát hiện tin nhắn rác PHÂN CỤM Các vectơ nhúng được tối ưu hoá để phân cụm văn bản dựa trên mức độ tương đồng. Sắp xếp tài liệu, nghiên cứu thị trường, phát hiện điểm bất thường RETRIEVAL_DOCUMENT Các vectơ nhúng được tối ưu hoá cho tính năng tìm kiếm tài liệu. Lập chỉ mục các bài viết, sách hoặc trang web để tìm kiếm. RETRIEVAL_QUERY Các vectơ được tối ưu hoá cho các cụm từ tìm kiếm chung. Sử dụng RETRIEVAL_QUERY cho các truy vấn; RETRIEVAL_DOCUMENT cho các tài liệu cần truy xuất. Tìm kiếm tùy chỉnh CODE_RETRIEVAL_QUERY Các vectơ nhúng được tối ưu hoá để truy xuất các khối mã dựa trên truy vấn bằng ngôn ngữ tự nhiên. Sử dụng CODE_RETRIEVAL_QUERY cho các câu hỏi; RETRIEVAL_DOCUMENT cho các khối mã cần truy xuất. Đề xuất và tìm kiếm mã QUESTION_ANSWERING Các vectơ nhúng cho câu hỏi trong hệ thống trả lời câu hỏi, được tối ưu hoá để tìm tài liệu trả lời câu hỏi. Sử dụng QUESTION_ANSWERING cho câu hỏi; RETRIEVAL_DOCUMENT cho tài liệu cần truy xuất. Hộp trò chuyện FACT_VERIFICATION Các câu cần được xác minh sẽ được nhúng, tối ưu hoá để truy xuất những tài liệu có bằng chứng hỗ trợ hoặc bác bỏ câu đó. Sử dụng FACT_VERIFICATION cho văn bản mục tiêu; RETRIEVAL_DOCUMENT cho tài liệu cần truy xuất Hệ thống kiểm chứng tự động

Kiểm soát kích thước nhúng

Cả gemini-embedding-001 và gemini-embedding-2 đều được huấn luyện bằng kỹ thuật Học biểu diễn Matryoshka (MRL), giúp dạy một mô hình học các mục nhúng có nhiều chiều có các phân đoạn ban đầu (hoặc tiền tố) cũng là các phiên bản đơn giản hơn và hữu ích của cùng một dữ liệu.

Sử dụng tham số output_dimensionality để kiểm soát kích thước của vectơ nhúng đầu ra. Việc chọn một chiều đầu ra nhỏ hơn có thể giúp tiết kiệm dung lượng lưu trữ và tăng hiệu quả tính toán cho các ứng dụng hạ nguồn, đồng thời ít ảnh hưởng đến chất lượng. Theo mặc định, cả hai mô hình đều xuất ra một mục nhúng 3072 chiều, nhưng bạn có thể cắt bớt mục nhúng này thành kích thước nhỏ hơn mà không làm giảm chất lượng để tiết kiệm dung lượng lưu trữ. Bạn nên sử dụng kích thước đầu ra là 768, 1536 hoặc 3072.

Ví dụ về đầu ra của đoạn mã:

Length of embedding: 768

Đảm bảo chất lượng cho các kích thước nhỏ hơn

Lưu ý: gemini-embedding-2 giới thiệu tính năng tự động chuẩn hoá lại cho các phương diện không phải là phương diện mặc định.

Mặc dù các mục nhúng 3072 chiều mặc định luôn được chuẩn hoá, nhưng Gemini Embedding 2 cũng tự động chuẩn hoá các chiều bị cắt (ví dụ: 768, 1536). Điều này đảm bảo rằng mức độ tương đồng về ngữ nghĩa được tính toán thông qua hướng vectơ thay vì độ lớn, mang lại kết quả chính xác hơn ngay từ đầu.

Các mô hình cũ: Nếu đang dùng gemini-embedding-001, bạn phải chuẩn hoá các phương diện không phải 3072 theo cách thủ công như sau:

Ví dụ về đầu ra từ đoạn mã này:

Normed embedding length: 768 Norm of normed embedding: 1.000000

Bảng sau đây cho thấy điểm MTEB (một điểm chuẩn thường dùng cho các mục nhúng) cho nhiều phương diện. Đáng chú ý là kết quả cho thấy hiệu suất không hoàn toàn phụ thuộc vào kích thước của phương diện nhúng, với các phương diện thấp hơn đạt được điểm số tương đương với các phương diện cao hơn.

Phương diện MRL Điểm MTEB (Gemini Embedding 001) 2048 68,16 1536 68,17 768 67,99 512 67,55 256 66,19 128 63,31

Nhúng đa phương thức

Mô hình gemini-embedding-2 hỗ trợ dữ liệu đầu vào đa phương thức, cho phép bạn nhúng nội dung hình ảnh, video, âm thanh và tài liệu cùng với văn bản. Tất cả các phương thức đều được ánh xạ vào cùng một không gian nhúng, cho phép tìm kiếm và so sánh đa phương thức.

Các phương thức và giới hạn được hỗ trợ

Giới hạn tổng số mã thông báo đầu vào tối đa là 8192 mã thông báo.

Phương thức Quy cách và giới hạn Văn bản Hỗ trợ tối đa 8.192 mã thông báo. Image Tối đa 6 hình ảnh cho mỗi yêu cầu. Các định dạng được hỗ trợ: PNG, JPEG. Âm thanh Thời lượng tối đa là 180 giây. Các định dạng được hỗ trợ: MP3, WAV. Video Thời lượng tối đa là 120 giây. Các định dạng được hỗ trợ: MP4, MOV. Các bộ mã hoá và giải mã được hỗ trợ: H264, H265, AV1, VP9. Hệ thống xử lý tối đa 32 khung hình cho mỗi video: video ngắn (≤32 giây) được lấy mẫu ở tốc độ 1 khung hình/giây, trong khi video dài hơn được lấy mẫu đồng đều thành 32 khung hình. Các tệp video không xử lý bản âm thanh. Tài liệu (PDF) Mỗi yêu cầu có tối đa 1 tệp, tối đa 6 trang.

Nhúng hình ảnh

Ví dụ sau đây cho thấy cách nhúng hình ảnh bằng gemini-embedding-2.

Bạn có thể cung cấp hình ảnh dưới dạng dữ liệu nội tuyến hoặc dưới dạng tệp đã tải lên thông qua Files API.

Tổng hợp dữ liệu nhúng

Khi làm việc với nội dung đa phương thức, cách bạn cấu trúc dữ liệu đầu vào sẽ ảnh hưởng đến kết quả nhúng:

  • Nhiều phần (được tổng hợp): Việc thêm nhiều dữ liệu đầu vào trực tiếp vào tham số contents sẽ tạo ra một vectơ nhúng tổng hợp cho tất cả dữ liệu đầu vào.
  • Nhiều đối tượng Content (riêng biệt): Việc bao bọc từng đầu vào trong một đối tượng Content và truyền các đối tượng đó vào tham số contents sẽ trả về các mục nhúng riêng biệt cho từng mục.
  • Biểu diễn ở cấp bài đăng: Đối với các đối tượng phức tạp như bài đăng trên mạng xã hội có nhiều mục nội dung nghe nhìn, bạn nên tổng hợp các mục nhúng riêng biệt (ví dụ: bằng cách tính trung bình) để tạo một biểu diễn nhất quán ở cấp bài đăng.

Ví dụ sau đây cho thấy cách tạo một vectơ nhúng tổng hợp cho văn bản và dữ liệu đầu vào là hình ảnh. Bạn chỉ cần thêm nhiều dữ liệu đầu vào vào tham số contents:

Mặt khác, nếu bạn sử dụng các đối tượng Content bên trong tham số contents, thì hàm này sẽ trả về các mục nhúng riêng biệt. Ví dụ này tạo nhiều mục nhúng trong một lệnh gọi nhúng:

Nhúng âm thanh

Ví dụ sau đây cho biết cách nhúng một tệp âm thanh bằng gemini-embedding-2.

Bạn có thể cung cấp tệp âm thanh dưới dạng dữ liệu nội tuyến hoặc dưới dạng tệp được tải lên thông qua Files API.

Nhúng video

Ví dụ sau đây cho thấy cách nhúng video bằng gemini-embedding-2.

Bạn có thể cung cấp video dưới dạng dữ liệu nội tuyến hoặc dưới dạng tệp được tải lên thông qua Files API.

Nếu cần nhúng video dài hơn 120 giây, bạn có thể chia video thành các đoạn chồng chéo và nhúng từng đoạn.

Nhúng tài liệu

Bạn có thể nhúng trực tiếp tài liệu ở định dạng PDF. Mô hình này xử lý nội dung trực quan và văn bản của từng trang.

Bạn có thể cung cấp tệp PDF dưới dạng dữ liệu nội tuyến hoặc dưới dạng tệp được tải lên thông qua Files API.

Cách mô hình xử lý tệp PDF

Khi bạn nhúng một tệp PDF, mô hình sẽ xử lý tài liệu bằng cả tính năng hình ảnh và văn bản:

  • Biểu diễn trực quan: Mô hình kết xuất mỗi trang dưới dạng một hình ảnh, tiêu thụ 258 mã thông báo cho mỗi trang.
  • Trích xuất văn bản: Mô hình trích xuất văn bản từ tài liệu. Đối với tệp PDF gốc (chứa văn bản kỹ thuật số), mô hình sẽ trích xuất văn bản trực tiếp. Đối với tệp PDF được quét (chứa hình ảnh văn bản), mô hình sẽ tự động chạy công nghệ nhận dạng ký tự quang học (OCR) để trích xuất văn bản.

Để tính tổng số mã thông báo cho một tệp PDF, hãy cộng số mã thông báo trực quan (258 mã thông báo cho mỗi trang) với số mã thông báo văn bản. Thông tin đầu vào của bạn phải nằm trong giới hạn 8.192 mã thông báo của mô hình (được chia sẻ trên tất cả các phương thức). Hệ thống sẽ tự động cắt bớt những nội dung đầu vào vượt quá giới hạn này.

Lưu ý: Gemini Developer API luôn bật tính năng OCR cho tệp PDF và không hỗ trợ tắt tính năng này (tham số document_ocr chỉ có trong Vertex AI).

Giới hạn về tệp PDF

  • Số lượng tệp trên mỗi yêu cầu: Bạn có thể gửi tối đa 1 tệp PDF.
  • Giới hạn về số trang: Bạn có thể gửi tối đa 6 trang cho mỗi tệp. Để có chất lượng tốt nhất, bạn nên sử dụng 1 trang cho mỗi tệp PDF.

Ví dụ sau đây cho thấy cách nhúng một tệp PDF bằng gemini-embedding-2:

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

Vectơ hoá văn bản là yếu tố quan trọng đối với nhiều trường hợp sử dụng AI phổ biến, chẳng hạn như:

  • Tạo sinh tăng cường khả năng truy xuất (RAG): Các vectơ nhúng giúp nâng cao chất lượng của văn bản được tạo bằng cách truy xuất và kết hợp thông tin liên quan vào ngữ cảnh của một mô hình.
  • Truy xuất thông tin: Tìm kiếm văn bản hoặc tài liệu có ngữ nghĩa tương tự nhất dựa trên một đoạn văn bản đầu vào.

    Hướng dẫn tìm kiếm tài liệutask

  • Sắp xếp lại kết quả tìm kiếm: Ưu tiên các mục phù hợp nhất bằng cách tính điểm ngữ nghĩa cho kết quả ban đầu dựa trên cụm từ tìm kiếm.

    Hướng dẫn về việc sắp xếp lại kết quả tìm kiếmtask

  • Phát hiện điểm bất thường: Việc so sánh các nhóm vectơ nhúng có thể giúp xác định các xu hướng hoặc điểm ngoại lệ bị ẩn.

    Hướng dẫn phát hiện hoạt động bất thườngbubble_chart

  • Phân loại: Tự động phân loại văn bản dựa trên nội dung, chẳng hạn như phân tích cảm xúc hoặc phát hiện tin nhắn rác

    Hướng dẫn phân loạitoken

  • Phân cụm: Nắm bắt hiệu quả các mối quan hệ phức tạp bằng cách tạo các cụm và hình ảnh trực quan về các thành phần nhúng.

    Hướng dẫn về hình ảnh trực quan của việc phân cụmbubble_chart

Lưu trữ mục nhúng

Khi đưa các mục nhúng vào sản xuất, bạn thường sử dụng cơ sở dữ liệu vectơ để lưu trữ, lập chỉ mục và truy xuất các mục nhúng có nhiều chiều một cách hiệu quả. Google Cloud cung cấp các dịch vụ dữ liệu được quản lý có thể dùng cho mục đích này, bao gồm Gemini Enterprise Agent Platform Vector Search 2.0, BigQuery, AlloyDB và Cloud SQL.

Các hướng dẫn sau đây cho biết cách sử dụng các cơ sở dữ liệu vectơ của bên thứ ba khác với Gemini Embedding.

  • Hướng dẫn về ChromaDBbolt
  • Hướng dẫn về QDrantbolt
  • Hướng dẫn về Weaviatebolt
  • Hướng dẫn về Pineconebolt

Phiên bản mô hình

Đối với các mô hình Nhúng không dùng nữa, hãy truy cập trang Ngừng cung cấp

Di chuyển từ gemini-embedding-001

Các khoảng trống nhúng giữa gemini-embedding-001 và gemini-embedding-2 là không tương thích. Điều này có nghĩa là bạn không thể so sánh trực tiếp các vectơ nhúng do một mô hình tạo ra với các vectơ nhúng do mô hình khác tạo ra. Nếu đang nâng cấp lên gemini-embedding-2, bạn phải nhúng lại tất cả dữ liệu hiện có.

Ngoài sự không tương thích, còn có một số điểm khác biệt đáng chú ý khác giữa hai mô hình này:

  • Quy cách về loại tác vụ: Với gemini-embedding-001, bạn chỉ định loại tác vụ bằng cách sử dụng tham số task_type (ví dụ: SEMANTIC_SIMILARITY, RETRIEVAL_DOCUMENT). Với gemini-embedding-2, tham số task_type không được hỗ trợ. Thay vào đó, bạn nên đưa hướng dẫn về nhiệm vụ trực tiếp vào câu lệnh cho các nhiệm vụ chỉ có văn bản. Hãy xem Các loại nhiệm vụ có Embeddings 2 để biết thông tin chi tiết về cách định dạng câu lệnh cho các trường hợp sử dụng khác nhau.

  • Tổng hợp mục nhúng: gemini-embedding-001 tạo các mục nhúng riêng lẻ cho từng chuỗi trong danh sách dữ liệu đầu vào. Ngược lại, gemini-embedding-2 tạo ra một vectơ nhúng tổng hợp duy nhất khi nhiều dữ liệu đầu vào (chẳng hạn như văn bản và hình ảnh) được cung cấp trực tiếp trong một yêu cầu. Để tạo các vectơ nhúng riêng biệt cho từng đầu vào, hãy bao bọc từng đầu vào trong một đối tượng Content hoặc sử dụng Batch API. Hãy xem phần Nhúng tính năng tổng hợp để biết thêm thông tin.

  • Chuẩn hoá: Nếu bạn dùng output_dimensionality để yêu cầu các mục nhúng có ít hơn 3072 phương diện, thì gemini-embedding-2 sẽ tự động chuẩn hoá các mục nhúng bị cắt bớt này. Với gemini-embedding-001, bạn cần thực hiện chuẩn hoá thủ công cho các phương diện khác ngoài 3072. Hãy xem phần Đảm bảo chất lượng cho các kích thước nhỏ hơn để biết thông tin chi tiết.

Nhúng hàng loạt

Nếu không lo ngại về độ trễ, hãy thử sử dụng các mô hình Gemini Embeddings với Batch API. Điều này cho phép công suất cao hơn nhiều ở mức 50% giá Nhúng mặc định. Bạn có thể tìm thấy các ví dụ về cách bắt đầu trong sổ tay về Batch API.

Thông báo về việc sử dụng có trách nhiệm

Không giống như các mô hình AI tạo sinh tạo ra nội dung mới, Mô hình nhúng Gemini chỉ nhằm mục đích chuyển đổi định dạng dữ liệu đầu vào của bạn thành một biểu diễn bằng số. Mặc dù Google chịu trách nhiệm cung cấp một mô hình nhúng giúp chuyển đổi định dạng dữ liệu đầu vào của bạn sang định dạng số được yêu cầu, nhưng người dùng vẫn hoàn toàn chịu trách nhiệm về dữ liệu mà họ nhập và các mục nhúng thu được. Khi sử dụng mô hình Gemini Embedding, bạn xác nhận rằng bạn có các quyền cần thiết đối với mọi nội dung mình tải lên. Đừng tạo nội dung vi phạm quyền tài sản trí tuệ hoặc quyền riêng tư của người khác. Khi sử dụng dịch vụ này, bạn phải tuân thủ Chính sách về các hành vi bị cấm khi sử dụng và Điều khoản dịch vụ của Google.

Bắt đầu xây dựng bằng các thành phần nhúng

Hãy xem notebook bắt đầu nhanh về các vectơ nhúng để khám phá các chức năng của mô hình và tìm hiểu cách tuỳ chỉnh cũng như trực quan hoá các vectơ nhúng.