全部产品
Search
文档中心

ApsaraDB RDS:Gunakan Kemampuan AI dari Ekstensi rds_ai

更新时间:Jul 02, 2025

ApsaraDB RDS for PostgreSQL mendukung ekstensi rds_ai yang mengintegrasikan model canggih dari Alibaba Cloud Model Studio, termasuk Qwen dan model text embedding. Ekstensi ini memungkinkan berbagai aplikasi seperti layanan Q&A berbasis LLM, konversi teks-ke-vektor, pengambilan vektor mirip top-N, serta layanan Q&A berbasis generasi yang diperkaya dengan pengambilan data (RAG). Selain itu, Anda dapat menerapkan model kustom melalui ekstensi rds_ai untuk mengembangkan berbagai aplikasi berbasis AI di RDS for PostgreSQL. Topik ini menjelaskan cara menerapkan ekstensi ini dan menggunakan kemampuan AI-nya.

Prasyarat

  • Versi mesin utama dan versi mesin minor instance RDS Anda harus memenuhi persyaratan dalam tabel berikut:

    Versi mesin utama

    Versi mesin minor

    PostgreSQL 16

    20241230 dan setelahnya

    PostgreSQL 14, PostgreSQL 15, dan PostgreSQL 17

    20250430 atau setelahnya

    Untuk informasi lebih lanjut tentang cara memperbarui versi mesin minor, lihat Perbarui Versi Mesin Minor.

  • Akun istimewa telah dibuat untuk instance RDS Anda. Untuk informasi lebih lanjut tentang cara membuat akun istimewa, lihat Buat Akun.

  • Alibaba Cloud Model Studio telah diaktifkan dan kunci API tersedia. Untuk informasi lebih lanjut, lihat Dapatkan Kunci API.

Konfigurasi jaringan

Secara default, instance RDS for PostgreSQL hanya dapat mengakses sumber daya melalui jaringan internal. Oleh karena itu, Anda harus membuat Gateway NAT untuk virtual private cloud (VPC) tempat instance RDS berada agar instance RDS dapat mengakses model eksternal. Untuk informasi lebih lanjut tentang Gateway NAT, lihat Gunakan Fitur SNAT dari Gateway NAT Internet untuk Mengakses Internet.

Buat dan hapus rds_ai

Penting

Sebelum membuat ekstensi rds_ai, pastikan bahwa instance RDS for PostgreSQL Anda memenuhi persyaratan yang dijelaskan di Prasyarat.

  • Buat dan hapus ekstensi rds_ai di halaman Plug-in:

    1. Masuk ke Konsol ApsaraDB RDS dan buka halaman Instances. Di bilah navigasi atas, pilih wilayah tempat instance RDS berada. Kemudian, temukan instance RDS dan klik ID-nya.

    2. Di panel navigasi sisi kiri, klik Plug-ins.

    3. Di tab Extension Marketplace, klik Install di bagian rds_ai.

    4. Di kotak dialog yang muncul, pilih database dan akun. Kemudian, klik Install untuk membuat ekstensi rds_ai di database yang dipilih.

    (Opsional) Jika Anda tidak lagi memerlukan ekstensi rds_ai, Anda dapat menghapusnya di halaman Installed Extensions dari tab Extension Management.

  • Buat dan hapus ekstensi rds_ai dengan mengeksekusi pernyataan SQL:

    • Buat ekstensi:

      CREATE EXTENSION IF NOT EXISTS rds_ai CASCADE;
      Catatan
      • Hanya akun istimewa yang memiliki izin untuk mengeksekusi pernyataan tersebut. Untuk informasi lebih lanjut tentang cara membuat akun istimewa, lihat Buat Akun.

      • Saat Anda membuat ekstensi rds_ai, ekstensi pgvector dan pgsql-http secara otomatis dibuat.

      • Anda dapat mengeksekusi pernyataan SELECT * FROM pg_extension; untuk melihat ekstensi yang telah dibuat.

    • Hapus ekstensi:

      DROP EXTENSION rds_ai;

Gunakan model default untuk mengimplementasikan kemampuan AI

Ekstensi rds_ai mendukung model default yang dijelaskan dalam tabel berikut. Anda juga dapat membuat model kustom sesuai dengan kebutuhan Anda.

Jenis antarmuka

Parameter

Tipe data

Model default

Prompt API

rds_ai.default_prompt_model

enum

  • Qwen-Plus (nilai default)

  • Qwen-Max

  • Qwen-Turbo

Embedding API

rds_ai.default_embed_model

enum

text-embedding-v3

Catatan

Untuk mengubah model default dari ekstensi, tambahkan rds_ai ke Running Value parameter shared_preload_libraries. Untuk informasi lebih lanjut tentang cara mengonfigurasi parameter instance, lihat Ubah Parameter Instance ApsaraDB RDS for PostgreSQL.

Contohnya, Anda dapat mengatur Running Value parameter shared_preload_libraries menjadi 'pg_stat_statements,auto_explain,rds_ai'.

Model default dari ekstensi rds_ai dapat menyediakan kemampuan AI berikut:

Pengaturan dasar

  1. Sebelum Anda menggunakan rds_ai untuk memanggil model bahasa besar (LLM), konfigurasikan kunci API.

    -- Konfigurasikan kunci API untuk model tertentu.
    SELECT rds_ai.update_model('qwen-plus', 'token', 'sk-****'); 
    
    -- Konfigurasikan kunci API untuk semua model yang ditentukan oleh rds_ai.model_list.
    SELECT rds_ai.update_model(model_name,'token','sk-****') FROM rds_ai.model_list;
  2. Eksekusi pernyataan berikut untuk mengonfigurasi URL untuk model default:

    --model qwen-plus
    SELECT rds_ai.update_model('qwen-plus', 'uri', 'https://dashscope-intl.aliyuncs.com/api/v1/services/aigc/text-generation/generation'); 
    
    --model qwen-max
    SELECT rds_ai.update_model('qwen-max', 'uri', 'https://dashscope-intl.aliyuncs.com/api/v1/services/aigc/text-generation/generation'); 
    
    --model qwen-turbo
    SELECT rds_ai.update_model('qwen-turbo', 'uri', 'https://dashscope-intl.aliyuncs.com/api/v1/services/aigc/text-generation/generation'); 
    
    --model text-embedding-v3
    SELECT rds_ai.update_model('text-embedding-v3', 'uri', 'https://dashscope-intl.aliyuncs.com/api/v1/services/embeddings/text-embedding/text-embedding'); 
  3. Ekstensi rds_ai menggunakan ekstensi pgsql-http untuk memanggil model secara remote. Eksekusi pernyataan berikut untuk mengonfigurasi pengaturan timeout untuk menginterupsi pemanggilan yang berjalan lama.

    Catatan

    Pengaturan timeout berikut hanya tersedia dalam sesi saat ini. Anda harus mengonfigurasinya kembali saat Anda membuat koneksi baru.

    -- Konfigurasikan periode timeout permintaan dalam milidetik. 
    SET http.timeout_msec TO 200000;
    
    SELECT http.http_set_curlopt('CURLOPT_TIMEOUT', '200000');
    
    -- Konfigurasikan periode timeout koneksi.
    SELECT http.http_set_curlopt('CURLOPT_CONNECTTIMEOUT_MS', '200000');

LLM-based Q&A

Secara default, ekstensi rds_ai menggunakan model generasi teks yang disediakan oleh Qwen untuk mengimplementasikan LLM-based Q&A.

  1. (Opsional) Konfigurasikan model default yang digunakan untuk mengimplementasikan LLM-based Q&A. Secara default, model Qwen-Plus digunakan.

    Catatan

    Untuk mengubah model default dari ekstensi, tambahkan rds_ai ke Running Value parameter shared_preload_libraries. Untuk informasi lebih lanjut tentang cara mengonfigurasi parameter instance, lihat Ubah Parameter Instance ApsaraDB RDS for PostgreSQL.

    Contohnya, Anda dapat mengatur Running Value parameter shared_preload_libraries menjadi 'pg_stat_statements,auto_explain,rds_ai'.

    SET rds_ai.default_prompt_model TO "qwen-max" ;
  2. Gunakan fungsi rds_ai.prompt untuk memanggil model default untuk layanan Q&A.

    Perintah contoh:

    SELECT rds_ai.prompt('Berikan saya resep untuk hidangan menggunakan kentang, terong, dan lobak. ');

    Perintah lengkap:

    SELECT rds_ai.prompt(
      model_name=>'qwen-plus', -- Tentukan LLM yang digunakan untuk layanan Q&A.
      content=>'Berikan saya resep untuk hidangan menggunakan kentang, terong, dan lobak. ',  -- Tentukan pertanyaan.
      args=>'{"top_p": 0.7}'::jsonb -- Tentukan parameter yang diperlukan untuk memanggil model.
    );

Konversi teks-ke-vektor

Secara default, ekstensi rds_ai menggunakan model text-embedding-v3 untuk mengonversi teks menjadi vektor.

  1. Konversikan teks input menjadi vektor.

    • Anda dapat memanggil fungsi rds_ai.embed untuk mengonversi teks input menjadi vektor tanpa menentukan parameter. Secara default, teks dikonversi menjadi vektor padat.

      SELECT rds_ai.embed(
          'Kualitas pakaian sangat baik, sangat indah, layak untuk ditunggu, saya suka dan akan membeli lagi di sini' -- Tentukan teks yang ingin Anda konversi.
      );
    • Anda juga dapat menentukan parameter untuk mengonversi teks input menjadi vektor jarang.

      -- Konversikan teks input menjadi vektor jarang yang memiliki 250.002 dimensi secara default.
      SELECT rds_ai.embed(
          content=>'Kualitas pakaian sangat baik, sangat indah, layak untuk ditunggu, saya suka dan akan membeli lagi di sini',
          args=>'{"output_type": "sparse"}'::jsonb -- Tentukan parameter untuk konversi.
      );
  2. Simpan vektor ke tabel yang ditentukan.

    1. Buat tabel untuk menyimpan vektor. Dalam contoh ini, tabel bernama test_embed dibuat.

      CREATE TABLE test_embed(a text, b vector(1024), c sparsevec(250002));
    2. Masukkan teks yang ingin Anda konversi ke dalam tabel.

      INSERT INTO test_embed (a) values ('hello world');
    3. Gunakan fungsi rds_ai.embed untuk memanggil model text-embedding-v3 untuk konversi teks-ke-vektor. Kemudian, tulis vektor ke tabel test_embed.

      • Tulis vektor padat ke tabel.

        UPDATE test_embed 
        SET b = rds_ai.embed(a, '{"output_type": "dense"}'::jsonb)::vector;
      • Tulis vektor jarang ke tabel.

        UPDATE test_embed 
        SET c = rds_ai.embed(a, '{"output_type": "sparse"}'::jsonb)::sparsevec;

Pengambilan vektor mirip top-N

Secara default, ekstensi rds_ai menggunakan model text-embedding-v3 untuk mengambil vektor serupa.

  1. Buat tabel uji.

    -- Buat tabel uji bernama test_rag.
    CREATE TABLE test_rag (
        id SERIAL PRIMARY KEY,
        chunk TEXT
    );
    
    -- Tambahkan kolom embedding untuk menyimpan vektor yang dikonversi dari teks chunk.
    ALTER TABLE test_rag ADD COLUMN embedding VECTOR(1024);
    
    UPDATE test_rag SET embedding=rds_ai.embed(chunk)::vector;
  2. Buat indeks vektor untuk embedding.

    Catatan

    Anda harus menentukan kelas vector_cosine_ops untuk indeks vektor yang ingin Anda buat.

    -- Buat indeks vektor berdasarkan algoritma HNSW.
    CREATE INDEX ON test_rag USING hnsw (embedding vector_cosine_ops);
    -- Buat indeks vektor berdasarkan algoritma IVFFlat. 
    CREATE INDEX ON test_rag USING ivfflat (embedding vector_cosine_ops) WITH (lists = 100);
  3. Gunakan fungsi rds_ai.retrieve untuk memanggil model text-embedding-v3 untuk mengambil vektor dalam tabel uji.

    Perintah contoh:

    SELECT * FROM rds_ai.retrieve
    ('Mengapa PostgreSQL adalah database sumber terbuka paling canggih',
    'public', 'test_rag', 'chunk', 'embedding');

    Perintah lengkap:

    SELECT * FROM rds_ai.retrieve
    (
      embed_model=>'text-embedding-v3', -- Tentukan model vektor yang digunakan untuk pengambilan vektor mirip top-N.
      question=>'Mengapa PostgreSQL adalah database sumber terbuka paling canggih',
      source_schema=>'public', -- Tentukan skema tabel yang menyimpan vektor yang akan diambil.
      source_table=>'test_rag', -- Tentukan tabel yang menyimpan vektor yang akan diambil.
      chunk_col=>'chunk', -- Tentukan kolom yang menyimpan teks chunk.
      vector_col=>'embedding', -- Tentukan kolom yang menyimpan vektor.
      -- Tentukan parameter default berikut.
      topn=>10, -- Tentukan nilai top N untuk pengambilan vektor.
      embed_args=>'{}'::jsonb, -- Tentukan parameter yang diperlukan oleh model.
      distance_type=>'cosine' -- Tentukan algoritma yang digunakan untuk menghitung jarak antar vektor. Nilai valid: L1, L2, cosine, dan negatif.
    );

Q&A berbasis RAG

Secara default, ekstensi rds_ai menggunakan model text-embedding-v3 dan model generasi teks yang disediakan oleh Qwen untuk mengimplementasikan layanan Q&A berbasis RAG.

Perintah contoh:

-- rds_ai menggunakan model text-embedding-v3 untuk operasi terkait vektor. Model generasi teks yang digunakan oleh rds_ai ditentukan oleh parameter rds_ai.default_prompt_model.
SELECT * FROM rds_ai.rag
('Mengapa PostgreSQL adalah database sumber terbuka paling canggih', 
'public', 'test_rag', 'chunk', 'embedding');

Perintah lengkap:

SELECT * FROM rds_ai.rag
(
  embed_model=>'text-embedding-v3', -- Tentukan model vektor yang digunakan untuk layanan Q&A berbasis RAG.
  prompt_model=>'qwen-plus', -- Tentukan model prompt yang digunakan untuk Q&A berbasis RAG.
  question=>'Mengapa PostgreSQL adalah database sumber terbuka paling canggih',
  source_schema=>'public', -- Tentukan skema tabel yang menyimpan vektor yang akan diambil.
  source_table=>'test_rag', -- Tentukan tabel yang menyimpan vektor yang akan diambil.
  chunk_col=>'chunk', -- Tentukan kolom yang menyimpan teks chunk.
  vector_col=>'embedding', -- Tentukan kolom yang menyimpan vektor.
  -- Tentukan parameter default berikut.
  topn=>10,
  embed_args=>'{}'::jsonb,  -- Tentukan parameter yang diperlukan oleh model vektor yang digunakan untuk Q&A berbasis RAG.
  prompt_args=>'{}'::jsonb, -- Tentukan parameter yang diperlukan oleh model prompt yang digunakan untuk Q&A berbasis RAG.
  distance_type=>'L2' -- Tentukan algoritma yang digunakan untuk menghitung jarak antar vektor. Nilai valid: L1, L2, cosine, dan inner product.
);

Gunakan model kustom untuk mengimplementasikan kemampuan AI

Penting

Hubungi Kami jika Anda mengalami masalah saat menambahkan model kustom.

Anda dapat menambahkan model kustom dengan menyisipkan catatan untuk model tersebut ke dalam tabel metadata rds_ai.model_list. Tabel berikut menunjukkan bidang yang termasuk dalam tabel rds_ai.model_list:

Bidang

Tipe data

Deskripsi

model_name

name

Nama model. Bidang ini adalah kunci utama dari tabel rds_ai.model_list.

request_type

text

Metode permintaan HTTP yang dikirim untuk memanggil model ini.

request_header

http.http_header[]

Header permintaan HTTP yang mencakup informasi otentikasi. Tipe data dari bidang ini didefinisikan oleh ekstensi pgsql-http.

uri

text

URL model.

content_type

text

Tipe konten dari permintaan. Contoh: application/json.

content_template

text

Template badan permintaan. Anda harus mengganti placeholder di template dengan nilai sebenarnya saat memanggil model.

json_path

text

Pernyataan SQL yang digunakan untuk menyelesaikan respons dan mendapatkan informasi yang diperlukan.

token

text

Token yang ditentukan dalam header.

Operasi dasar

  • Tambahkan model kustom:

    SELECT rds_ai.add_model(
        'test-model',                   -- Nama model.
        'POST',                         -- Metode permintaan HTTP.
        ARRAY[('Authorization', 'Bearer %s')]::http.http_header[], -- http_header
        'https://****.com',           -- URL model yang ditentukan dalam permintaan.
        'application/json',            -- Format konten permintaan.
        '{"key":"%s"}',               -- Template badan permintaan.
        'SELECT %L'          -- Pernyataan SQL yang digunakan untuk menyelesaikan respons.
    );
  • Gunakan model kustom:

    • Perintah berikut menunjukkan cara menggunakan fungsi rds_ai.raw_invoke_model untuk memanggil Qwen-Plus berdasarkan pengaturannya dalam tabel metadata. Dalam permintaan, array ditentukan untuk memenuhi template. Respons lengkap dikembalikan.

      SELECT * FROM
      rds_ai.raw_invoke_model('qwen-plus', ARRAY['siapa kamu']);
    • Perintah berikut menunjukkan cara menggunakan fungsi rds_ai.invoke_model untuk memanggil Qwen-Plus berdasarkan pengaturannya dalam tabel metadata. Bidang tertentu diselesaikan dari respons dan dikembalikan berdasarkan bidang json_path yang ditentukan untuk Qwen-Plus.

      SELECT * FROM
      rds_ai.invoke_model('qwen-plus', ARRAY['siapa kamu']);
  • Hapus model kustom:

    SELECT rds_ai.del_model('test-model');

Tambahkan model PAI berbasis RAG

Untuk menambahkan model PAI berbasis RAG, kami sarankan Anda menerapkan instance RDS for PostgreSQL Anda dan modul Elastic Algorithm Service (EAS) dari Platform for AI (PAI) di VPC yang sama, dan konfigurasikan endpoint VPC dari PAI dalam pengaturan rds_ai. Selain itu, Anda harus menggunakan endpoint VPC dari instance RDS for PostgreSQL untuk terhubung ke modul EAS dari PAI. Dengan cara ini, layanan yang berbeda hanya berkomunikasi dalam VPC untuk memastikan keamanan data.

  1. Terapkan laykan layanan berbasis RAG di modul EAS dari PAI. Untuk informasi lebih lanjut, lihat Gunakan Modul EAS dari PAI dan ApsaraDB RDS for PostgreSQL untuk Menerapkan Chatbot LLM Berbasis RAG.

  2. Dapatkan informasi pemanggilan layanan berbasis RAG.

    1. Klik nama layanan berbasis RAG untuk membuka halaman Service Details.

    2. Di bagian Basic Information, klik View Endpoint Information.

    3. Di kotak dialog Invocation Method, dapatkan endpoint dan token dari layanan.

  3. Tambahkan model PAI berbasis RAG.

    SELECT rds_ai.add_model(
        'pai-rag',      -- Nama model.
        'POST',         -- Metode permintaan HTTP.
        ARRAY[('Authorization','%s')]::http.http_header[],  -- Header permintaan.
        'http://rds-pai-rag-demo.****.cn-hangzhou.pai-eas.aliyuncs.com/service/query',  -- URL model yang ditentukan dalam permintaan.
        'application/json',  -- Tipe konten permintaan.
        '{
            "question": "%s"
        }',  -- Template badan permintaan.
        'SELECT (%L::jsonb->''answer'')::text'  -- Pernyataan SQL yang digunakan untuk menyelesaikan respons.
    );
    Catatan
  4. Konfigurasikan token model PAI berbasis RAG.

    SELECT rds_ai.update_model('pai-rag', 'token','MTFkYjMwZjgzYzA1YmE2N2YyNWMxM2NkNDVjMjEzNjYxMDAzMzE5****');
  5. (Opsional) Uji model PAI berbasis RAG.

    Perintah contoh:

    SELECT rds_ai.invoke_model('pai-rag', ARRAY['Parameter mana yang dapat menyebabkan akumulasi log WAL']);

Tambahkan model Function Compute berbasis RAG

  1. Terapkan aplikasi AgentCraft di Function Compute.

  2. Buat agen dan konfigurasikan client access information untuk agen.

  3. Tambahkan model Function Compute berbasis RAG.

    SELECT rds_ai.add_model(
        'fc-rag',      -- Nama model.
        'POST',         -- Metode permintaan HTTP.
        ARRAY[('Authorization','Bearer %s')]::http.http_header[],  -- Header permintaan.
        'https://agentcrckend-de-obnhjsknam.cn-hangzhou.fcapp.run/v1/chat/completions',  -- URL model yang ditentukan dalam permintaan.
        'application/json',  -- Tipe konten permintaan.
        '{ 
            "messages":[ { "role": "user", "content": "%s" } ], 
            "stream": false, 
            "max_tokens": 1024 
         }', 
        'SELECT (%L::jsonb->''choices''->0->''message''->>''content'')::text'  -- Pernyataan SQL yang digunakan untuk menyelesaikan respons.
    );
    Catatan

    Ganti URL dalam contoh di atas dengan URL model aktual yang ditambahkan dengan /completions.

  4. Konfigurasikan token model Function Compute berbasis RAG.

    SELECT rds_ai.update_model('fc-rag', 'token','8UiGAziWgYGPxM3qR5sAChBfDJRt****');
  5. (Opsional) Uji model Function Compute berbasis RAG.

    Perintah contoh:

    SELECT rds_ai.invoke_model('fc-rag', ARRAY['Parameter mana yang dapat menyebabkan akumulasi log WAL']);

Fungsi yang disediakan oleh rds_ai

rds-ai.raw_invoke_model: Memanggil model kustom dan mengembalikan respons HTTP lengkap.

rds-ai.raw_invoke_model(
    model_name TEXT, 
    params_list TEXT[]
) 
RETURNS http.http_response

Parameter

Tipe data

Deskripsi

Contoh

model_name

text

Nama model.

'qwen-plus'

param_list

text[]

Daftar berurutan yang mencakup parameter yang ditentukan dalam bidang content_template dari model yang dipanggil.

ARRAY['siapa kamu', '{}']

rds_ai.invoke_model: Memanggil model kustom dan mengembalikan hasil yang diselesaikan dari respons HTTP menggunakan pernyataan SQL yang ditentukan untuk bidang json_path.

rds-ai.invoke_model(
    model_name TEXT, 
    params_list TEXT[]
) 
RETURNS http.http_response

Parameter

Tipe data

Deskripsi

Contoh

model_name

text

Nama model.

'qwen-plus'

param_list

text[]

Daftar berurutan yang mencakup parameter yang ditentukan dalam bidang content_template dari model yang dipanggil.

ARRAY['siapa kamu', '{}']

rds_ai.embed: Mengonversi teks tertentu menjadi vektor menggunakan model yang ditentukan dan mengembalikan hasil yang diselesaikan dari respons HTTP menggunakan pernyataan SQL yang ditentukan untuk bidang json_path.

rds_ai.embed(
    model_name TEXT, 
    content TEXT, 
    args jsonb DEFAULT '{}' 
) RETURNS text

Parameter

Tipe data

Deskripsi

Contoh

model_name

text

Nama model.

Catatan

Jika parameter model_name tidak ditentukan, text-embedding-v3 akan dipanggil.

'text-embedding-v3'

content

text

Teks yang ingin Anda konversi menjadi vektor.

'siapa kamu'

args

jsonb

Parameter yang diperlukan untuk memanggil model.

'{"output_type": "dense"}'

rds_ai.prompt: Memanggil model yang ditentukan untuk melakukan operasi berbasis prompt.

rds_ai.prompt(
    model_name TEXT, 
    content TEXT, 
    args jsonb DEFAULT '{}'
) 
RETURNS text

Parameter

Tipe data

Deskripsi

Contoh

model_name

text

Nama model.

Catatan

Jika parameter model_name tidak ditentukan, Qwen-Plus akan dipanggil.

'qwen-plus'

content

text

Teks yang ingin Anda konversi menjadi vektor.

'siapa kamu'

args

jsonb

Parameter yang diperlukan untuk memanggil model.

'{"top_p": 0.2}'

rds_ai.retrieve: Memanggil model yang ditentukan untuk mengambil vektor yang disimpan berdasarkan teks tertentu.

rds_ai.retrieve(
    model_name TEXT, 
    question TEXT, 
    source_schema TEXT, 
    source_table TEXT, 
    chunk_col TEXT, 
    vector_col TEXT, 
    topn INT DEFAULT 10, 
    embed_args jsonb DEFAULT '{}', 
    distance_type TEXT DEFAULT 'L2'
) 
RETURNS TABLE(chunk TEXT, distance float);

Parameter

Tipe data

Deskripsi

Contoh

model_name

text

Nama model.

Catatan

Jika parameter model_name tidak ditentukan, text-embedding-v3 akan dipanggil.

'text-embedding-v3'

question

text

Teks berdasarkan mana Anda ingin mengambil vektor.

'siapa kamu'

source_schema

text

Skema tabel yang menyimpan vektor yang akan diambil.

'public'

source_table

text

Nama tabel yang menyimpan vektor yang akan diambil.

'vec_tbl'

chunk_col

text

Kolom yang menyimpan teks chunk.

'chunk'

vector_col

text

Kolom vektor dari tabel.

'vec'

topn

int

Nilai top N untuk pengambilan vektor. Nilai default: 10.

20

embed_args

jsonb

Parameter yang diperlukan untuk konversi teks-ke-vektor. Parameter ini memiliki peran yang sama dengan parameter args dari fungsi rds_ai.embed.

'{"output_type": "dense"}'

distance_type

text

Algoritma yang digunakan untuk menghitung jarak antar vektor. Nilai default: L2.

'L1'

rds_ai.rag: Memanggil model yang ditentukan untuk melakukan operasi berbasis prompt pada hasil pengambilan vektor.

rds_ai.rag(
    embed_model TEXT,
    prompt_model TEXT,
    question TEXT,
    source_schema TEXT,
    source_table TEXT,
    chunk_col TEXT,
    vector_col TEXT,
    topn INT DEFAULT 10,
    embed_args jsonb DEFAULT '{}',
    prompt_args jsonb DEFAULT '{}',
    distance_type TEXT DEFAULT 'L2'
) 
returns text

Parameter

Tipe data

Deskripsi

Contoh

embed_model

text

Nama model.

Catatan

Jika parameter model_name tidak ditentukan, Qwen-Plus akan dipanggil.

'qwen-plus'

question

text

Teks berdasarkan mana Anda ingin mengambil vektor.

'siapa kamu'

source_schema

text

Skema tabel yang menyimpan vektor yang akan diambil.

'public'

source_table

text

Nama tabel yang menyimpan vektor yang akan diambil.

'vec_tbl'

chunk_col

text

Kolom yang menyimpan teks chunk.

'chunk'

vector_col

text

Kolom vektor dari tabel.

'vec'

topn

int

Nilai top N untuk pengambilan vektor. Nilai default: 10.

20

embed_args

jsonb

Parameter yang diperlukan untuk konversi teks-ke-vektor. Parameter ini memiliki peran yang sama dengan parameter args dari fungsi rds_ai.embed.

'{"output_type": "dense"}'

prompt_args

jsonb

Parameter yang diperlukan untuk operasi berbasis prompt. Parameter ini memiliki peran yang sama dengan parameter args dari fungsi rds_ai.prompt.

'{"top_p": 0.2}'

distance_type

text

Algoritma yang digunakan untuk menghitung jarak antar vektor. Nilai default: L2.

'L1'

rds_ai.show_models: Melihat metadata model yang dikonfigurasi.

rds_ai.show_models() 
RETURNS setof rds_ai.model_list

rds_ai.del_model: Menghapus model.

rds_ai.del_model (model_name text) 
RETURNS void

Parameter

Tipe data

Deskripsi

Contoh

model_name

text

Nama model yang ingin Anda hapus.

'qwen-plus'

rds_ai.add_model: Menambahkan model.

rds_ai.add_model(
    model_name TEXT,
    request_type TEXT,
    request_header http.http_header[],
    uri TEXT,
    content_type TEXT,
    content_template TEXT,
    json_path TEXT
) 
RETURNS TEXT

Parameter

Tipe data

Deskripsi

Contoh

model_name

text

Nama model yang ingin Anda tambahkan.

'text-embedding-v3'

request_type,

text

Metode permintaan.

'POST'

request_header

http.http_header[]

Header dalam permintaan HTTP. Gunakan nilai dari bidang token untuk mengganti placeholder saat digunakan.

ARRAY[('Authorization', 'Bearer %s')]

uri

text

URL model.

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

content_type

text

Tipe konten permintaan.

'application/json'

content_template

text

Template badan permintaan. Saat memanggil fungsi rds-ai.invoke_model, gunakan nilai dari parameter param_list untuk mengganti parameter di template. Nilai dari parameter parameters berada dalam format JSON.

'{

"model": "text-embedding-v3",

"input": {"texts": ["%s"]},

"parameters": %s

}'

json_path

text

Pernyataan SQL yang digunakan untuk menyelesaikan respons. Saat memanggil fungsi rds-ai.invoke_model, pernyataan SQL digunakan untuk menyelesaikan data JSON yang termasuk dalam nilai content_template.

Jika Anda tidak tahu cara mengonfigurasi pernyataan SQL, atur nilai parameter menjadi 'SELECT %L'.

'SELECT %L'

rds_ai.update_model: Memperbarui metadata model yang dikonfigurasi.

rds_ai.update_model(
    model_name TEXT,
    config_name TEXT, 
    value TEXT
) 
RETURNS void

Parameter

Tipe data

Deskripsi

Contoh

model_name

text

Nama model yang ingin Anda perbarui metadatanya.

'text-embedding-v3'

config_name

text

Bidang yang ingin Anda perbarui. Untuk informasi lebih lanjut tentang bidang yang dapat diperbarui, lihat bidang yang dijelaskan di bagian rds_ai.add_model.

'uri'

value

text

Nilai baru dari bidang yang ingin Anda perbarui.

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