全部产品
Search
文档中心

ApsaraDB RDS:Pembuatan Vektor (rds_embedding)

更新时间:Nov 10, 2025

Ekstensi rds_embedding untuk RDS PostgreSQL mengonversi teks menjadi vektor langsung di dalam database Anda. Ekstensi ini mendukung konfigurasi model kustom dan pemanggilan model, menyederhanakan serta mempercepat konversi teks-ke-vektor untuk memenuhi kebutuhan pemrosesan data Anda.

Latar Belakang

Penyematan adalah proses pemetaan data berdimensi tinggi ke representasi berdimensi rendah. Dalam pembelajaran mesin dan pemrosesan bahasa alami (NLP), penyematan merepresentasikan simbol atau objek diskrit sebagai titik dalam ruang vektor kontinu.

Saat menghasilkan penyematan, nilai dari data vektor bergantung pada data dalam model yang dirujuk. RDS PostgreSQL mendukung ekstensi rds_embedding, yang menghasilkan data vektor dari teks dalam database berdasarkan model eksternal yang diimpor. Ekstensi ini juga mendukung penggunaan operator kesamaan vektor untuk menghitung kesamaan antara teks dalam database dan teks tertentu dalam model, memungkinkan lebih banyak skenario bisnis.

Prasyarat

  • Instance RDS menjalankan PostgreSQL 14 atau yang lebih baru.

  • Jika versi mesin utama Anda memenuhi persyaratan tetapi ekstensi tidak didukung, tingkatkan versi mesin minor. Sebagai contoh, untuk instance RDS yang menjalankan PostgreSQL 17, versi mesin minor harus 20241030 atau yang lebih baru. Untuk informasi lebih lanjut, lihat Tingkatkan Versi Mesin Minor.

  • Topik ini menggunakan model penyematan teks dari Alibaba Cloud Model Studio. Aktifkan Alibaba Cloud Model Studio dan dapatkan Kunci API. Untuk informasi lebih lanjut, lihat Dapatkan Kunci API Anda.

    Catatan

    Selain model penyematan teks yang digunakan dalam topik ini, Anda dapat menggunakan fungsi yang disediakan oleh ekstensi rds_embedding untuk menambahkan model lainnya. Untuk informasi lebih lanjut, lihat Fungsi yang Disediakan oleh Ekstensi rds_embedding.

  • Secara default, database RDS PostgreSQL tidak dapat mengakses Internet. Untuk mengizinkan akses ke model eksternal, konfigurasikan Gateway NAT untuk VPC tempat instance RDS PostgreSQL berada. Untuk informasi lebih lanjut tentang Gateway NAT, lihat Gunakan Fitur SNAT dari Gateway NAT Internet untuk Mengakses Internet.

    Langkah-langkah Konfigurasi Gateway NAT

    1. Buat Gateway NAT.

      1. Masuk ke Konsol Gateway NAT.

      2. Di halaman Internet NAT Gateway, klik Create Internet NAT Gateway.

      3. Opsional. Di bagian Create Service-Linked Role pada halaman Internet NAT Gateway, klik Create Service-Linked Role untuk membuat peran terkait layanan. Jika ini adalah pertama kalinya Anda membuat Gateway NAT Internet, langkah ini diperlukan. Setelah peran terkait layanan dibuat, Anda dapat membuat Gateway NAT Internet.

      4. Di halaman pembelian, konfigurasikan parameter berikut dan klik Buy Now.

        Catatan

        Tabel berikut hanya menjelaskan parameter utama. Untuk informasi lebih lanjut tentang semua parameter, lihat Gunakan Fitur SNAT dari Gateway NAT Internet untuk Mengakses Internet.

        Parameter

        Deskripsi

        Region

        Pilih wilayah tempat Anda ingin membuat Gateway NAT Internet. Wilayah tersebut harus sama dengan wilayah instance RDS Anda.

        VPC

        Pilih VPC tempat Gateway NAT Internet berada. VPC tersebut harus sama dengan VPC instance RDS Anda. Anda dapat pergi ke halaman Database Connection di Konsol ApsaraDB RDS untuk melihat VPC instance RDS Anda.

        Associate vSwitch

        Pilih vSwitch tempat Gateway NAT Internet berada. vSwitch tersebut harus sama dengan vSwitch instance RDS Anda. Anda dapat pergi ke halaman Database Connection di Konsol ApsaraDB RDS untuk melihat vSwitch instance RDS Anda.

        Access Mode

        Dalam contoh ini, Configure Later dipilih.

      5. Di halaman Confirm, konfirmasi informasi, pilih kotak centang Ketentuan Layanan, lalu klik Confirm.

        Anda dapat menemukan Gateway NAT Internet di halaman Internet NAT Gateway.创建NAT网关

    2. Asosiasikan EIP dengan Gateway NAT Internet.

      1. Di halaman Gateway NAT Internet, temukan Gateway NAT Internet baru dan klik ID-nya untuk pergi ke tab Informasi Dasar.

      2. Di tab Associated Elastic IP Address, klik Bind Elastic IP Address.

      3. Di kotak dialog Associate EIP, pilih Purchase and Associate EIP.绑定弹性公网IP

      4. Klik OK.

        Setelah Anda mengasosiasikan EIP dengan Gateway NAT Internet, EIP akan ditampilkan di tab Associated Elastic IP Address.已绑定的弹性公网IP

    3. Buat Entri SNAT

      1. Di halaman Gateway NAT Internet, temukan Gateway NAT Internet baru dan klik ID-nya untuk pergi ke tab Informasi Dasar.

      2. Di tab SNAT Management, klik Create SNAT Entry.

      3. Di halaman Create SNAT Entry, konfigurasikan parameter berikut dan klik OK.

        Parameter

        Deskripsi

        SNAT Entry

        Tentukan apakah Anda ingin membuat entri SNAT untuk VPC, vSwitch, Instance ECS, atau blok CIDR kustom. Dalam contoh ini, Specify vSwitch dipilih. Opsi ini menentukan bahwa hanya instance RDS yang terpasang ke vSwitch tertentu yang dapat mengakses Internet menggunakan alamat IP publik tertentu.

        Select vSwitch

        Pilih vSwitch instance RDS Anda dari daftar drop-down.

        Select EIP

        Pilih satu atau lebih EIP untuk mengakses Internet. Dalam contoh ini, satu EIP dipilih dari daftar drop-down.

        Setelah entri SNAT dibuat, Anda dapat melihat entri SNAT di bagian SNAT Entry List.已配置的SNAT

Aktifkan dan nonaktifkan ekstensi

Catatan

Gunakan akun istimewa untuk menjalankan perintah berikut.

  • Aktifkan ekstensi.

    Sebelum mengaktifkan ekstensi rds_embedding, Anda harus mengaktifkan ekstensi vector. Ekstensi vector menyediakan dukungan tipe data vektor yang diperlukan dan operasi vektor dasar, seperti menghitung jarak dan kesamaan antara vektor. Ekstensi rds_embedding berfokus pada mengonversi data teks berdimensi tinggi menjadi vektor.

    CREATE EXTENSION vector;
    CREATE EXTENSION rds_embedding;
  • Nonaktifkan ekstensi.

    DROP EXTENSION rds_embedding;
    DROP EXTENSION vector;

Contoh penggunaan

Topik ini menggunakan model text-embedding-v3 yang disediakan oleh Alibaba Cloud Model Studio sebagai contoh. Untuk informasi lebih lanjut tentang model penyematan teks, lihat Pengenalan Model.

  1. Buat tabel uji bernama test.

    CREATE TABLE test(info text, vec vector(1024) NOT NULL);
  2. Tambahkan model.

    SELECT rds_embedding.add_model(
        'text-embedding-v3',
        'https://dashscope-intl.aliyuncs.com/api/v1/services/embeddings/text-embedding/text-embedding',
        'Authorization: Bearer sk-****',
        '{"input":{"texts":["%s"]},"model":"text-embedding-v3","parameters":{"text_type":"query"}}',
        '->''output''->''embeddings''->0->>''embedding'''
    );
    Catatan

    Untuk informasi lebih lanjut tentang fungsi rds_embedding.add_model(), lihat rds_embedding.add_model().

  3. Masukkan teks dan data vektor yang sesuai.

    INSERT INTO test SELECT 'Angin kencang, langit tinggi, monyet menangis sedih', rds_embedding.get_embedding_by_model('text-embedding-v3', 'sk-****', 'Angin kencang, langit tinggi, monyet menangis sedih')::real[];
    INSERT INTO test SELECT 'Pulau jernih, pasir putih, burung terbang kembali', rds_embedding.get_embedding_by_model('text-embedding-v3', 'sk-****', 'Pulau jernih, pasir putih, burung terbang kembali')::real[];
    INSERT INTO test SELECT 'Daun-daun tak terbatas berderak jatuh', rds_embedding.get_embedding_by_model('text-embedding-v3', 'sk-****', 'Daun-daun tak terbatas berderak jatuh')::real[];
    INSERT INTO test SELECT 'Sungai Yangtze tanpa henti mengalir', rds_embedding.get_embedding_by_model('text-embedding-v3', 'sk-****', 'Sungai Yangtze tanpa henti mengalir')::real[];
    Catatan

    Untuk informasi lebih lanjut tentang fungsi rds_embedding.get_embedding_by_model(), lihat rds_embedding.get_embedding_by_model().

  4. Hitung kesamaan vektor antara teks Sungai Yangtze tanpa henti mengalir dan setiap entri teks dalam tabel uji.

    SELECT 
        info, 
        vec <=> rds_embedding.get_embedding_by_model(
            'text-embedding-v3', 
            'sk-****', 
            'Sungai Yangtze tanpa henti mengalir'
        )::real[]::vector AS distance 
    FROM 
        test 
    ORDER BY 
        vec <=> rds_embedding.get_embedding_by_model(
            'text-embedding-v3', 
            'sk-****', 
            'Sungai Yangtze tanpa henti mengalir'
        )::real[]::vector;

    Hasil sampel:

                   info                 |      distance
    ------------------------------------+--------------------
     Sungai Yangtze tanpa henti mengalir     |                  0
     Daun-daun tak terbatas berderak jatuh | 0.42740682200152647
     Angin kencang, langit tinggi, monyet menangis sedih     | 0.5247695147991147
     Pulau jernih, pasir putih, burung terbang kembali | 0.5161883811726116
    (4 baris)

Referensi

Ambil penyematan teks menggunakan permintaan HTTP

Jalankan perintah curl untuk mengirim permintaan POST ke URL model text-embedding-v3 guna mengambil penyematan untuk teks yang sesuai.

curl --location 'https://dashscope-intl.aliyuncs.com/api/v1/services/embeddings/text-embedding/text-embedding' \
--header 'Authorization: Bearer <API-KEY>' \
--header 'Content-Type: application/json' \
--data '{
    "model": "text-embedding-v3",
    "input": {
        "texts": [
        "Angin kencang, langit tinggi, monyet menangis sedih",
        "Pulau jernih, pasir putih, burung terbang kembali", 
        "Daun-daun tak terbatas berderak jatuh", 
        "Sungai Yangtze tanpa henti mengalir"
        ]
    },
    "parameters": {
    		"text_type": "query"
    }
}'

Tabel berikut menjelaskan parameter yang dilewatkan dalam permintaan POST.

Parameter

Nilai sampel

Deskripsi

location

https://dashscope-intl.aliyuncs.com/api/v1/services/embeddings/text-embedding/text-embedding

URL model. Ini adalah URL permintaan HTTP untuk model penyematan teks.

header

  • Authorization: Bearer sk-****

  • Content-Type: application/json

  • Konten Authorization dari permintaan POST.

    Format: Authorization: Bearer <API-KEY>.

    Catatan

    Untuk informasi lebih lanjut tentang cara mendapatkan Kunci API, lihat Dapatkan Kunci API Anda.

  • Content-Type: Jenis permintaan. Nilainya tetap sebagai application/json.

data

  • "model": "text-embedding-v3"
  • "input": {
        "texts": [
        "Angin kencang, langit tinggi, monyet menangis sedih",
        "Pulau jernih, pasir putih, burung terbang kembali", 
        "Daun-daun tak terbatas berderak jatuh", 
        "Sungai Yangtze tanpa henti mengalir"
       ]
    }
  • "parameters": {
        "text_type": "query"
    }

Konten body permintaan POST. Pergi ke model penyematan teks untuk melihat konten body untuk model yang berbeda.

  • model: Nama model yang akan dipanggil.

  • input.texts: Konten teks.

  • parameters: Parameter permintaan lainnya. Parameter ini bervariasi menurut model.

Fungsi yang disediakan oleh ekstensi rds_embedding

Anda dapat menjalankan perintah psql \dx+ rds_embedding untuk menanyakan semua fungsi yang didukung oleh ekstensi tersebut.

             Objek dalam ekstensi "rds_embedding"
                      Deskripsi objek
---------------------------------------------------------------
 function rds_embedding.add_model(text,text,text,text,text)
 function rds_embedding.del_model(text)
 function rds_embedding.get_embedding_by_model(text,text,text)
 function rds_embedding.get_response_by_model(text,text,text)
 function rds_embedding.show_models()
 function rds_embedding.update_model(text,text,text,text,text)
 schema rds_embedding
 table rds_embedding.models
(8 baris)

Deskripsi fungsi:

  • rds_embedding.add_model(): Menambahkan model ke tabel rds_embedding.models.

    Parameter berikut dilewatkan saat fungsi dipanggil:

    Parameter

    Tipe parameter

    Nilai sampel

    Deskripsi

    mname

    text

    text-embedding-v3

    Nama model.

    murl

    text

    https://dashscope-intl.aliyuncs.com/api/v1/services/embeddings/text-embedding/text-embedding

    URL model.

    Ini adalah URL permintaan HTTP untuk model penyematan teks.

    mauth_header_template

    text

    Authorization: Bearer sk-****

    Konten Authorization dari permintaan POST.

    Format: Authorization: Bearer <API-KEY>.

    Catatan

    Untuk informasi lebih lanjut tentang cara mendapatkan Kunci API, lihat Dapatkan Kunci API Anda.

    mbody_template

    text

    {
      "input":{
        "texts":["%s"]
      },
        "model":"text-embedding-v3",
        "parameters":{
           "text_type":"query"
        }
    }

    Konten body permintaan POST. Pergi ke model penyematan teks untuk melihat konten body untuk model yang berbeda.

    • input.texts: Konten teks. Gunakan placeholder %s, yang diganti dengan teks aktual saat digunakan.

    • model: Nama model yang akan dipanggil.

    • parameters: Parameter permintaan lainnya. Parameter ini bervariasi menurut model.

    membedding_path

    text

    ->''output''->''embeddings''->0->>''embedding''

    Jalur untuk mengambil penyematan dari respons.

    Ekspresi sampel digunakan untuk mengekstrak nilai penyematan dari hasil JSON yang dikembalikan.

    • output: Sebuah kunci dalam objek JSON yang nilainya adalah sebuah objek.

    • embeddings: Sebuah kunci dalam objek output yang nilainya adalah array.

    • 0: Elemen pertama dalam array embeddings.

    • embedding: Sebuah kunci dalam elemen array yang nilainya adalah string.

    Penting
    • Sebelum menggunakan ekspresi ini, pastikan bahwa hasil JSON yang dikembalikan memiliki struktur jalur yang sesuai. Jika tidak, ekstraksi mungkin gagal atau terjadi kesalahan.

    • Untuk hasil JSON spesifik yang dikembalikan, lihat contoh respons untuk model dalam dokumen model penyematan teks.

  • rds_embedding.del_model(): Menghapus model dari tabel rds_embedding.models.

    Parameter berikut dilewatkan saat fungsi dipanggil:

    Parameter

    Tipe parameter

    Nilai sampel

    Deskripsi

    mname

    text

    text-embedding-v3

    Nama model.

  • rds_embedding.get_embedding_by_model(): Mengambil nilai vektor dari teks tertentu.

    Parameter berikut dilewatkan saat fungsi dipanggil:

    Parameter

    Tipe parameter

    Nilai sampel

    Deskripsi

    mname

    text

    text-embedding-v3

    Nama model.

    api-key

    text

    sk-****

    Kunci API.

    Untuk informasi lebih lanjut tentang cara mendapatkan Kunci API, lihat Dapatkan Kunci API Anda.

    texts

    text

    Angin kencang, langit tinggi, monyet menangis sedih

    Teks tertentu dari mana nilai vektor akan diambil.

  • rds_embedding.show_models: Menampilkan model dalam tabel rds_embedding.models.

  • rds_embedding.update_model: Memperbarui model dalam tabel rds_embedding.models.

    Parameter yang dilewatkan saat fungsi ini dipanggil sama dengan yang ada pada rds_embedding.add_model.

Catatan

rds_embedding.get_response_by_model belum tersedia.