Membuat dan mengelola embedding vektor otomatis untuk tabel besar

Pilih versi dokumentasi:

Anda dapat membuat dan mengelola penyematan vektor untuk seluruh kolom tabel, yang memberi Anda solusi skalabel untuk pembuatan penyematan vektor skala besar. Solusi ini sangat berguna untuk memfasilitasi penelusuran semantik dan Retrieval Augmented Generation (RAG) pada konten teks, termasuk berikut ini:

  • Membuat embedding vektor awal untuk tabel baru
  • Membuat embedding setelah mengimpor data dalam jumlah besar
  • Memperbarui embedding setelah perubahan data yang signifikan
  • Mempertahankan embedding secara inkremental

Memahami embedding vektor otomatis

Embedding vektor otomatis di AlloyDB Omni menyediakan cara yang skalabel untuk mengotomatiskan pembuatan dan pemeliharaan embedding vektor untuk data Anda. Daripada membuat embedding secara manual untuk setiap teks baru atau yang diperbarui, Anda dapat mengonfigurasi embedding vektor otomatis untuk menangani proses ini. Hal ini sangat berguna untuk aplikasi yang mengandalkan embedding terbaru untuk penelusuran semantik, Retrieval Augmented Generation (RAG), dan fitur lainnya yang didukung AI.

Dengan embedding vektor otomatis, Anda dapat melakukan hal berikut:

  • Menginisialisasi embedding untuk seluruh tabel: membuat embedding untuk semua data yang ada di kolom tabel dengan satu perintah.
  • Menjaga sinkronisasi sematan: memperbarui sematan secara otomatis saat data sumber berubah, sehingga memastikan aplikasi AI Anda selalu bekerja dengan informasi terbaru.
  • Membuat embedding dalam skala besar: buat embedding secara efisien untuk tabel besar dengan jutaan baris.
  • Konfigurasi dan kelola sematan untuk beberapa kolom dalam tabel yang sama dengan memanggil fungsi pengelolaan untuk setiap kolom sematan.

Fitur ini menyederhanakan pengembangan dan pemeliharaan aplikasi AI dengan menghilangkan kompleksitas pembuatan dan pemeliharaan embedding vektor.

Sebelum memulai

Sebelum Anda dapat membuat dan mengelola embedding vektor untuk tabel besar, ikuti langkah-langkah berikut:

  • Periksa dan tingkatkan kuota Vertex AI: Untuk memastikan performa optimal dan menghindari operasi yang lambat, QPS rendah, atau beberapa percobaan ulang, verifikasi dan, jika perlu, tingkatkan kuota Vertex AI Anda.

    Untuk memeriksa dan meningkatkan kuota, ikuti langkah-langkah berikut:

    1. Di konsol Google Cloud , buka halaman Quotas.
    2. Filter metrik berikut yang relevan dengan model dan wilayah Anda:
      • Untuk permintaan per menit (RPM): Regional online prediction requests per base model per minute per region per base_model
      • Untuk token Gemini: Embed content input tokens per minute per region per base_model
    3. Jika batas saat ini tidak mencukupi untuk ukuran tabel Anda, temukan nilai kuota yang ingin Anda perbarui dan centang kotak di samping kuota tersebut.
    4. Klik Edit. Dialog Quota changes akan muncul.

      Untuk mengetahui informasi selengkapnya, lihat Meminta penyesuaian kuota.

    Untuk batas model embedding Vertex AI, lihat Batas token model embedding Gemini.

    Untuk daftar lengkap kuota, lihat Kuota dan batas Vertex AI.

  • Hubungkan ke database Anda menggunakan psql sebagai pengguna postgres.

  • Pastikan ekstensi google_ml_integration telah diinstal dan versinya adalah 1.5.6 atau yang lebih tinggi.

  • Verifikasi bahwa flag google_ml_integration.enable_model_support dan google_ml_integration.enable_faster_embedding_generation ditetapkan ke on.

  • Sebelum dapat membuat embedding dari database AlloyDB Omni, Anda harus mengonfigurasi AlloyDB Omni agar dapat berfungsi dengan Vertex AI. Untuk mengetahui informasi selengkapnya, lihat Mengintegrasikan database Anda dengan Vertex AI.

  • Untuk mengelola dan memantau pembuatan penyematan otomatis, pengguna memiliki akses Select ke tabel google_ml.embed_gen_progress dan google_ml.embed_gen_settings secara default.

    Untuk mengizinkan pengguna mengelola pembuatan penyematan otomatis, berikan izin INSERT, UPDATE, dan DELETE pada tabel google_ml.embed_gen_progress dan google_ml.embed_gen_settings:

    GRANT INSERT, UPDATE, DELETE ON google_ml.embed_gen_progress TO 'USER_NAME';
    

    Ganti kode berikut:

    • USER_NAME: nama pengguna yang diberi izin.
  • Selesaikan penyiapan awal yang dijelaskan dalam Membuat embedding teks.

  • Pastikan AUTOCOMMIT disetel ke ON di klien PostgreSQL yang Anda gunakan.

Memverifikasi versi ekstensi

Untuk memeriksa versi ekstensi google_ml_integration, jalankan perintah berikut:

SELECT extversion FROM pg_extension WHERE extname = 'google_ml_integration';

Jika Anda perlu mengupdate ekstensi, jalankan perintah berikut:

ALTER EXTENSION google_ml_integration UPDATE;

Pastikan bahwa tanda database ditetapkan ke on

Untuk memverifikasi bahwa flag database telah ditetapkan dengan benar, jalankan perintah berikut:

SHOW google_ml_integration.enable_model_support;
SHOW google_ml_integration.enable_faster_embedding_generation;

Jika flag ini disetel ke off, lihat Mengonfigurasi flag database instance. Untuk mengetahui informasi selengkapnya tentang tanda ini, lihat Tanda database yang didukung.

Menyiapkan tabel

Sebelum dapat membuat embedding otomatis, Anda harus membuat kolom di tabel untuk menyimpan vektor yang dihasilkan. Kolom ini biasanya menggunakan jenis vector(DIMENSION) dan harus memiliki nilai DEFAULT NULL.

Misalnya, untuk menambahkan kolom embedding 768 dimensi ke tabel bernama user_reviews:

ALTER TABLE user_reviews ADD COLUMN IF NOT EXISTS content_embeddings vector(768) DEFAULT NULL;

Menginisialisasi embedding untuk tabel

Fungsi untuk mengelola sematan vektor otomatis tersedia dalam skema ai dan google_ml. Skema ai menyediakan antarmuka yang disederhanakan untuk fitur AI terbaru di AlloyDB Omni.

Gunakan fungsi SQL ai.initialize_embeddings() untuk membuat embedding untuk kolom konten tabel. Ini adalah panggilan pemblokiran, yang berarti sesi database menunggu operasi selesai sebelum menampilkan hasil dan memungkinkan Anda mengeluarkan perintah baru dalam sesi tersebut. Namun, koneksi lain ke database tidak diblokir dan dapat terus bekerja dengan tabel:

  • Jika fungsi menampilkan keberhasilan, pembuatan sematan vektor telah selesai.
  • Fungsi ini akan otomatis mencoba memulihkan diri dari masalah sementara seperti error kuota model. Kegagalan hanya akan dikembalikan kepada Anda jika upaya pemulihan ini gagal. Untuk masalah persisten, seperti batch_size yang salah dikonfigurasi yang menyebabkan permintaan melebihi batas ukuran, atau jika operasi dibatalkan secara manual, Anda harus mengeluarkan ulang panggilan secara manual.

Fungsi ini mendukung model yang disediakan Google—misalnya, text-embedding-005 Vertex AI—serta model kustom yang Anda daftarkan.

Melakukan pembuatan batch

Secara default, AlloyDB Omni menggunakan batching untuk membuat embedding untuk beberapa input teks dalam satu permintaan, yang meningkatkan efisiensi. Jika Anda tidak memberikan ukuran batch tertentu, AlloyDB Omni akan menerapkan nilai default yang ditentukan secara otomatis.

Ukuran batch petunjuk

Parameter batch_size di ai.initialize_embeddings memungkinkan Anda memandu pengoptimal kueri AlloyDB Omni dengan menyarankan ukuran batch pilihan untuk model yang didukung secara langsung. AlloyDB Omni dapat mengurangi ukuran ini secara dinamis berdasarkan batas atau kuota model, tetapi petunjuk Anda membantu memengaruhi rencana eksekusi kueri.

CALL ai.initialize_embeddings(
    model_id => 'text-embedding-005',
    table_name => 'user_reviews',
    content_column => 'content',
    embedding_column => 'content_embeddings',
    batch_size => 50
);

Menggunakan model penyematan kustom dengan dukungan batch

Jika Anda ingin menggunakan model kustom atau model yang didukung secara eksternal yang mendukung batching, tentukan fungsi transformasi batch dan tentukan sebagai model_batch_in_transform_fn dan model_batch_out_transform_fn saat Anda membuat model. Anda juga dapat menentukan batch_size dalam panggilan initialize_embeddings. Untuk model yang mendukung pengelompokan, sebaiknya gunakan batch_size yang lebih besar dari 1 untuk performa yang lebih baik.

  1. Tentukan fungsi input, output, dan transformasi batch model kustom Anda.

    -- Scalar input transform functions
    CREATE OR REPLACE FUNCTION acme_text_input_transform(model_id TEXT, input TEXT) RETURNS JSON;
    CREATE OR REPLACE FUNCTION acme_text_output_transform(model_id TEXT, model_output JSON) RETURNS real[];
    CREATE OR REPLACE FUNCTION acme_generate_headers(model_id TEXT, input TEXT) RETURNS JSON;
    -- Batch input transform functions
    CREATE OR REPLACE FUNCTION acme_text_batch_input_transform(model_id TEXT, input TEXT[]) RETURNS JSON;
    CREATE OR REPLACE FUNCTION acme_text_batch_output_transform(model_id TEXT, model_output JSON) RETURNS real[][];
    
  2. Untuk membuat model, tentukan fungsi transformasi batch.

    CALL
      ai.create_model(
        model_id => 'custom-embedding-model',
        model_request_url => 'https://acme.com/models/text/embeddings/v1',
        model_type => 'text_embedding',
        model_in_transform_fn => 'acme_text_input_transform',
        model_out_transform_fn => 'acme_text_output_transform',
        generate_headers_fn => 'acme_generate_headers',
        model_batch_in_transform_fn => 'acme_text_batch_input_transform',
        model_batch_out_transform_fn => 'acme_text_batch_output_transform'
      );
    
  3. Buat embedding vektor dengan model kustom Anda.

    CALL
      ai.initialize_embeddings(
        model_id => 'custom-embedding-model',
        table_name => 'user_reviews',
        content_column => 'content',
        embedding_column => 'content_embeddings',
        batch_size => 10
    );
    

Anda juga dapat menggunakan fitur penyematan otomatis dengan model kustom yang tidak secara native mendukung batching. Untuk melakukannya, Anda tetap harus menentukan fungsi transformasi batch model_batch_in_transform_fn dan model_batch_out_transform_fn. Untuk model non-batching, tentukan fungsi ini untuk memproses satu input dalam satu waktu dari array input. Saat Anda memanggil ai.initialize_embeddings untuk model ini, tetapkan batch_size ke 1.

Menggunakan dimensi kustom dengan dukungan batch

Untuk menggunakan fungsi transformasi input batch kustom dengan parameter OUTPUT_DIMENSIONALITY, Anda dapat menentukan fungsi yang menentukan dimensi yang dipilih dalam parameter permintaan. Hal ini berguna untuk mengoptimalkan pembuatan embedding untuk model yang mendukung ukuran output variabel.

Misalnya, fungsi berikut menentukan transformasi input batch kustom untuk model yang memerlukan dimensi output 768:

CREATE OR REPLACE FUNCTION google_ml.vertexai_text_embedding_batch_input_transform_with_768_dims(model_id VARCHAR(100), input_list TEXT[])
RETURNS JSON
LANGUAGE SQL
AS $$
  SELECT pg_catalog.json_build_object(
    'instances',
    pg_catalog.json_agg(pg_catalog.json_build_object('content', content)),
    'parameters',
    pg_catalog.json_build_object('outputDimensionality', 768)
  ) FROM unnest(input_list) AS content;
$$;

Menggunakan pengoptimalan JSONB dengan model kustom

Anda dapat menggunakan jenis data JSONB dalam fungsi transformasi output kustom untuk meningkatkan performa. Saat Anda membuat model kustom dengan dukungan batch, ekstensi google_ml_integration akan otomatis mencari dan menggunakan varian JSONB dari fungsi transformasi Anda.

Pengoptimalan ini dapat meningkatkan performa pembuatan sematan otomatis secara signifikan karena JSONB adalah format biner yang lebih efisien untuk menyimpan dan memproses data JSON di PostgreSQL.

Untuk memanfaatkan fitur ini, Anda perlu menyediakan versi lain dari fungsi transformasi yang menerima argumen JSONB, bukan JSON.

Misalnya, jika Anda memiliki fungsi transformasi output batch dengan tanda tangan berikut:

CREATE OR REPLACE FUNCTION my_batch_output_transform(model_id TEXT, model_output JSON) RETURNS real[][];

Anda dapat membuat varian JSONB seperti ini:

CREATE OR REPLACE FUNCTION my_batch_output_transform(model_id TEXT, model_output JSONB) RETURNS real[][];

Ekstensi akan otomatis mendeteksi keberadaan fungsi versi JSONB dan menggunakannya untuk pemrosesan batch. Jika Anda telah membuat pendaftaran model yang menggunakan fungsi transformasi JSON, Anda tidak perlu memperbarui panggilan ai.create_model. Selama fungsi JSONB baru menggunakan nama yang sama persis dengan fungsi JSON yang ada, ekstensi akan mendeteksi dan menggunakan varian JSONB secara transparan untuk pemrosesan batch.

Memperbarui embedding secara inkremental

Saat Anda memuat ulang sematan, sematan tersebut akan dibuat ulang berdasarkan nilai terbaru di kolom konten input.

Untuk memberi Anda kontrol atas konsistensi dan performa, AlloyDB Omni mendukung berbagai mode untuk pembaruan penyematan inkremental. Anda dapat memilih mode menggunakan argumen enum incremental_refresh_mode di ai.initialize_embeddings(). Berikut adalah daftar kemungkinan mode:

  • transactional: embedding diperbarui sebagai bagian dari transaksi yang memperbarui kolom konten. Proses ini, yang sering menggunakan mekanisme yang mirip dengan pemicu database untuk membuat embedding secara otomatis saat kolom konten diperbarui, dapat menimbulkan overhead dan memperlambat operasi pembaruan. Overhead yang diperkenalkan adalah pertukaran untuk mempertahankan semantik transaksional dan memastikan bahwa sematan disinkronkan dengan konten. Mode ini mengandalkan fungsi transformasi skalar model Anda, jadi Anda harus menentukan model_in_transform_fn dan model_out_transform_fn saat membuat model. Untuk menggunakan mode transactional, Anda harus memiliki peran pemilik di tabel.

    CALL
      ai.initialize_embeddings(
        model_id => 'text-embedding-005',
        table_name => 'user_reviews',
        content_column => 'content',
        embedding_column => 'content_embeddings',
        batch_size => 10,
        incremental_refresh_mode => 'transactional'
    );
    

    Dalam mode transactional, fungsi ai.refresh_embeddings() dinonaktifkan karena penyematan disinkronkan secara otomatis menggunakan pemicu. Untuk membuat ulang penyematan untuk seluruh tabel atau untuk memulihkan dari panggilan ai.initialize_embeddings() yang terganggu dalam mode ini, Anda harus menghapus konfigurasi terlebih dahulu menggunakan fungsi ai.drop_embedding_config(), lalu mengeluarkan ulang panggilan ai.initialize_embeddings().

    Mode otomatis ini berguna untuk demo, set data kecil, atau tabel yang volume penyisipan dan pembaruannya rendah dibandingkan dengan pemuatan awal, misalnya, beberapa ratus pembaruan harian pada tabel satu juta baris. Opsi ini cocok jika mempertahankan konsistensi data langsung lebih penting daripada latensi tambahan yang terjadi selama operasi update.

  • manual: Ini adalah mode default. Dalam mode ini, kolom pelacakan boolean baru ditambahkan ke tabel Anda untuk melacak embedding yang tidak valid. Memanggil fungsi ai.refresh_embeddings() akan melakukan refresh inkremental berkala dengan hanya membuat sematan untuk baris baru atau yang diperbarui. Kami merekomendasikan mode ini untuk pengguna yang memerlukan kontrol lebih besar atas performa, terutama saat menangani sejumlah besar penyisipan atau update setelah pemuatan awal. Fitur ini berguna untuk skenario yang memprioritaskan minimisasi latensi penulisan dan yang dapat menerima embedding yang sementara tidak valid atau null hingga refresh inkremental periodik dipicu menggunakan ai.refresh_embeddings. Untuk memperbarui baris yang sudah tidak berlaku atau baris baru, gunakan fungsi ai.refresh_embeddings() seperti yang dijelaskan di bagian Memuat ulang semua sematan untuk tabel.

Memilih mode refresh

Tabel berikut membandingkan dua mode refresh inkremental untuk membantu Anda memilih pendekatan terbaik untuk aplikasi Anda.

Mode Deskripsi Konsistensi dan performa Paling cocok untuk
transactional Penyematan diperbarui sebagai bagian dari transaksi database menggunakan mekanisme yang mirip dengan pemicu. Perhatikan bahwa ai.refresh_embeddings() dinonaktifkan dalam mode ini. Konsistensi langsung. Overhead latensi penulisan yang tinggi karena setiap INSERT atau UPDATE memicu pembuatan penyematan. Demo, set data kecil, atau tabel yang konsistensi datanya sangat penting.
manual (default) Menggunakan kolom pelacakan boolean untuk memantau baris yang tidak aktif atau baru. Anda harus memanggil ai.refresh_embeddings() untuk memicu refresh inkremental berkala. Konsistensi tertunda. Latensi tulis minimal karena penyematan dibuat secara massal pada waktu yang Anda pilih. Set data besar, lingkungan produksi dengan frekuensi penulisan tinggi, atau aplikasi yang sensitif terhadap performa.

Memuat ulang semua embedding untuk tabel

Setelah berhasil menjalankan ai.initialize_embeddings() untuk tabel menggunakan mode refresh inkremental manual, Anda dapat melakukan refresh inkremental berkala pada sematan, yang dipicu menggunakan ai.refresh_embeddings. Anda dapat menggunakan operasi refresh untuk memperbarui penyematan untuk baris yang diubah secara bersamaan selama panggilan initialize_embeddings awal atau untuk melakukan refresh inkremental berkala.

Jika proses pembuatan penyematan terganggu dalam mode manual, misalnya, oleh pg_cancel, panggil fungsi ai.refresh_embeddings() untuk menyelesaikan pembuatan baris yang tersisa.

Fungsi refresh menggunakan kembali setelan dari panggilan awal, sehingga Anda hanya perlu menentukan tabel dan kolom sematan. Anda juga dapat memberikan batch_size opsional untuk mengganti nilai default.

CALL ai.refresh_embeddings(
    table_name => 'user_reviews',
    embedding_column => 'content_embeddings',
    batch_size => 50  -- Optional override
);

Menggunakan data tabel selama pembuatan embedding vektor

Meskipun ai.initialize_embeddings() adalah panggilan pemblokiran untuk sesi yang dijalankannya, koneksi lain dapat terus berfungsi dengan tabel. Proses penyematan vektor otomatis memperbarui baris dalam batch menggunakan penguncian tingkat baris standar. Artinya, operasi Bahasa Modifikasi Data (DML) serentak — seperti UPDATE atau DELETE — dari koneksi lain hanya diblokir sebentar jika mencoba mengubah baris yang sama yang ditargetkan oleh tugas penyematan aktif. Kueri SELECT yang tidak mengubah tidak diblokir.

Menghapus setelan penyematan vektor otomatis

Jika Anda perlu menghapus konfigurasi penyematan vektor otomatis untuk kombinasi kolom penyematan dan tabel tertentu, gunakan fungsi ai.drop_embedding_config(). Fungsi ini dapat berguna untuk pembersihan atau saat Anda mengonfigurasi ulang pengelolaan penyematan untuk kolom.

CALL
  ai.drop_embedding_config(
    table_name => 'user_reviews',
    embedding_column => 'content_embeddings');

Menggunakan tabel berpartisi

Fitur penyematan vektor otomatis mendukung tabel berpartisi. Dengan begitu, Anda dapat mengelola penyematan untuk set data besar yang dipartisi secara efisien. Berikut adalah kasus penggunaan umum untuk bekerja dengan tabel berpartisi.

Menginisialisasi embedding pada tabel berpartisi

Anda hanya dapat menginisialisasi penyematan pada partisi root tabel. Operasi ini adalah operasi satu kali untuk seluruh tabel berpartisi.

CALL ai.initialize_embeddings(
    model_id => 'text-embeddings-005',
    table_name => 'documents', -- This is the root partitioned table
    content_column => 'content',
    embedding_column => 'content_embeddings'
);

Memperbarui embedding pada tabel berpartisi

Setelah inisialisasi, Anda dapat memperbarui sematan pada partisi apa pun, termasuk partisi root, sub-partisi, atau partisi leaf individual. Untuk set data besar, Anda dapat meningkatkan performa dengan memperbarui penyematan untuk partisi yang berbeda secara paralel dari koneksi database yang berbeda:

  • Untuk memuat ulang seluruh tabel, jalankan perintah berikut:
CALL ai.refresh_embeddings(
    table_name => 'documents', -- This is the root partitioned table
    embedding_column => 'content_embeddings'
);
  • Untuk memuat ulang satu partisi, jalankan perintah berikut:
CALL ai.refresh_embeddings(
    table_name => 'documents_eu',
    embedding_column => 'content_embeddings'
);

Memuat ulang sematan untuk partisi yang baru ditambahkan atau dilampirkan

Fitur penyematan otomatis mendukung pembuatan penyematan untuk partisi yang dimasukkan ke dalam tabel utama Anda setelah penyiapan awal. Langkah-langkah spesifik bergantung pada apakah Anda menambahkan partisi yang benar-benar baru atau melampirkan tabel yang sudah ada sebelumnya.

  • Partisi yang baru ditambahkan: jika Anda menambahkan partisi baru ke tabel, Anda dapat membuat sematan untuknya dengan memanggil ai.refresh_embeddings pada partisi baru.
-- Add a new partition
CREATE TABLE documents_africa PARTITION OF documents
    FOR VALUES IN ('africa');

-- Refresh embeddings for the new partition
CALL ai.refresh_embeddings(
    table_name => 'documents_africa',
    embedding_column => 'content_embeddings'
);
  • Partisi yang baru dilampirkan: untuk melampirkan tabel yang ada sebagai partisi, pertama-tama gunakan prosedur ai.embedding_prepare_partition untuk memastikan skemanya kompatibel dengan tabel yang dipartisi. Fitur penyematan otomatis mendukung penambahan atau pelampiran partisi di tingkat mana pun dalam penyiapan partisi hierarkis. Prosedur ai.embedding_prepare_partition memastikan skema kompatibel dengan tabel induk mana pun dalam hierarki.

Untuk melampirkan tabel yang ada sebagai partisi, pertama-tama gunakan prosedur ai.embedding_prepare_partition untuk memastikan skemanya kompatibel dengan tabel yang dipartisi:

-- Prepare the table to be attached
CALL ai.embedding_prepare_partition(
    parent_table => 'documents',
    child_table => 'documents_misc'
);

-- Attach the partition
ALTER TABLE documents ATTACH partition documents_misc DEFAULT;

-- Refresh embeddings for the newly attached partition
CALL ai.refresh_embeddings(
    table_name => 'documents_misc',
    embedding_column => 'content_embeddings'
);

Fitur penyematan otomatis mendukung penambahan atau pelampiran partisi di tingkat mana pun dalam penyiapan partisi hierarkis. Prosedur ai.embedding_prepare_partition memastikan skema kompatibel dengan tabel induk mana pun dalam hierarki:

-- Prepare a sub-partition for a non-root parent table
CALL ai.embedding_prepare_partition(
    parent_table => 'documents_eu', -- An existing partition
    child_table => 'documents_eu_germany'
);

-- Attach the new sub-partition
ALTER TABLE documents_eu ATTACH PARTITION documents_eu_germany
    FOR VALUES IN ('germany');

-- Refresh embeddings for the new sub-partition
CALL ai.refresh_embeddings(
    table_name => 'documents_eu_germany',
    embedding_column => 'content_embeddings'
);

Memantau progres pembuatan embedding

Anda dapat memantau status real-time panggilan initialize_embeddings dan refresh_embeddings yang aktif dengan membuat kueri ai.embedding_progress_view. Tampilan ini memberikan detail tentang progres operasi, termasuk persentase yang telah selesai, waktu yang telah berlalu, dan perkiraan waktu yang tersisa.

Untuk memeriksa progres, jalankan kueri berikut:

SELECT
  table_name,
  content_column,
  embedding_column,
  model_id,
  percent_progress,
  status,
  elapsed_time,
  rows_processed,
  partition_root
FROM
  ai.embedding_progress_view;

Tampilan ini memberikan informasi berikut:

Kolom Deskripsi
table_name Nama tabel atau partisi yang sedang diproses.
content_column Kolom yang berisi konten sumber untuk penyematan.
embedding_column Kolom tempat sematan disimpan.
model_id Model yang digunakan untuk pembuatan.
percent_progress Persentase operasi yang telah selesai.
status Status operasi saat ini (misalnya, berjalan, berhasil).
elapsed_time Waktu yang telah berlalu sejak operasi dimulai.
rows_processed Jumlah baris yang diproses sejauh ini.
partition_root Nama tabel berpartisi root.

Contoh pembuatan embedding secara otomatis

Bagian ini memberikan contoh untuk membuat embedding secara otomatis menggunakan endpoint model terdaftar.

Model embedding OpenAI

Untuk membuat embedding menggunakan endpoint model text-embedding-3-small terdaftar yang disediakan oleh OpenAI, jalankan pernyataan berikut:

CALL ai.initialize_embeddings(
    model_id => 'text-embedding-3-small',
    table_name => 'user_reviews',
    content_column => 'content',
    embedding_column => 'content_embeddings'
);

Model penyematan kustom

Untuk model Anda sendiri atau model yang didukung secara eksternal, Anda harus menentukan fungsi transformasi input dan output serta mendaftarkannya dengan ai.create_model. Jika Anda berencana menggunakan fitur penyematan otomatis, Anda harus menentukan fungsi transformasi skalar—misalnya, acme_text_input_transform, acme_text_output_transform—dan fungsi transformasi batch—misalnya, acme_text_batch_input_transform, acme_text_batch_output_transform.

Langkah berikutnya