Fungsi ai.analyze_sentiment adalah alat AI AlloyDB bawaan yang mengklasifikasikan
sentimen teks sebagai positif, negatif, atau netral. Dengan menyematkan kemampuan ini langsung ke dalam database, AlloyDB untuk PostgreSQL memungkinkan Anda memproses data tidak terstruktur tanpa membuat pipeline Extract, Transform, and Load (ETL) yang rumit atau integrasi layanan eksternal.
Fungsi analisis sentimen memberikan manfaat berikut:
- Pengetahuan dunia: kumpulan fakta, konsep, hubungan, dan pemahaman kontekstual tentang dunia yang diperoleh Model Bahasa Besar (LLM) selama fase pra-pelatihan.
- Analisis real-time: menghadirkan pengetahuan dunia Gemini ke data perusahaan menggunakan SQL.
- Skalabilitas: mendukung pemrosesan berbasis array dan berbasis kursor untuk menangani ribuan baris secara efisien.
- Kesederhanaan: menyediakan abstraksi tingkat tinggi yang mengelola pemanggilan model dan persiapan data secara otomatis.
Fungsi analisis sentimen AlloyDB AI mendukung beberapa kasus penggunaan, termasuk:
- Masukan pelanggan: mengklasifikasikan ribuan ulasan produk mentah yang tidak terstruktur untuk mengidentifikasi tingkat kepuasan pelanggan.
- Pemantauan media sosial: menganalisis sentimen pada penyebutan atau komentar di media sosial untuk mengukur persepsi publik terhadap suatu merek.
Sebelum memulai
Pastikan Anda memenuhi persyaratan berikut sebelum menggunakan fungsi ai.analyze_sentiment.
Mengaktifkan ekstensi
Pastikan Anda telah menginstal ekstensi
google_ml_integration.enable_preview_ai_functions versi terbaru (versi 1.5.7 atau lebih tinggi) dengan fungsi Pratinjau diaktifkan.
Untuk mengaktifkan tanda google_ml_integration.enable_preview_ai_functions di AlloyDB,
Anda menggunakan perintah SET. Flag ini mengontrol akses ke fungsi AI pratinjau seperti
ai.analyze_sentiment.
Pastikan
google_ml_integration extensionAnda adalah versi 1.5.7 atau yang lebih tinggi. Anda dapat memeriksa versi dengan menjalankan perintah berikut:SELECT extversion FROM pg_extension WHERE extname = 'google_ml_integration';Jika Anda perlu mengupgrade ke versi yang menyertakan fungsi pratinjau ini, panggil berikut:
CALL google_ml.upgrade_to_preview_version();Aktifkan tanda untuk sesi saat ini atau untuk seluruh database. Untuk mengaktifkan tanda untuk sesi saat ini, jalankan perintah berikut:
SET google_ml_integration.enable_preview_ai_functions = 'on';Perubahan ini tidak memerlukan mulai ulang database. Nilai default flag ini adalah
off.
Membuat tabel contoh
Untuk mengikuti contoh fungsi analisis sentimen dalam dokumen ini, buat tabel dan isi dengan ulasan film berikut.
CREATE TABLE IF NOT EXISTS reviews (
id INT PRIMARY KEY,
review_content TEXT
);
INSERT INTO reviews (id, review_content) VALUES
(1, 'This movie is very good'),
(2, 'The actors play the parts well'),
(3, 'I like the music in this film'),
(4, 'The story is easy to follow'),
(5, 'Many people will enjoy this show'),
(6, 'The film is too long'),
(7, 'I do not like the ending'),
(8, 'This movie is very boring'),
(9, 'The story is okay'),
(10, 'Some parts are fine');
Menganalisis sentimen string tunggal
Untuk mengevaluasi sentimen satu input teks, gunakan versi skalar
ai.analyze_sentiment.
SELECT ai.analyze_sentiment(
prompt => 'TEXT_CONTENT',
model_id => 'MODEL_ID' -- Optional. The default value is gemini-2.5-flash-lite.
);
Contoh berikut menunjukkan cara melakukan analisis sentimen
tingkat baris pada data teks yang disimpan dalam tabel
bernama reviews dengan kolom id dan review_content
untuk menyimpan data ulasan. Contoh ini menjalankan kueri SELECT yang menerapkan fungsi ai.analyze_sentiment()
ke kolom review_content untuk setiap baris dalam tabel. Fungsi
ini memproses setiap ulasan satu per satu dan menampilkan sentimen yang dihitung
(positive, negative, atau neutral).
--- Row Level sentiment analysis
SELECT ai.analyze_sentiment(review_content) FROM reviews;
Berikut adalah contoh output-nya:
id | analyze_sentiment
----+-------------------
1 | positive
2 | positive
3 | positive
4 | positive
5 | positive
6 | negative
7 | negative
8 | negative
9 | neutral
10 | neutral
Menganalisis sentimen dalam batch
Untuk performa yang lebih baik pada set data yang lebih besar, gunakan versi berbasis array dari fungsi untuk memproses beberapa string dalam satu panggilan.
SELECT ai.analyze_sentiment(
prompts => ARRAY['TEXT_1', 'TEXT_2'],
batch_size => BATCH_SIZE, -- Optional. The default value is 10.
model_id => 'MODEL_ID' -- Optional. The default value is gemini-2.5-flash-lite.
);
Contoh berikut menganalisis sentimen ulasan pelanggan dari tabel
bernama reviews.
WITH sentiment_results AS (
SELECT
ARRAY_AGG(id ORDER BY id) as ids,
ai.analyze_sentiment(
prompts => array_agg( 'Please analyze the sentiment of this review : ' || review_content
ORDER BY id),
batch_size => 15) as sentiments
FROM reviews
),
correlated_results AS (
SELECT ids[i] as id, sentiments[i] as sentiment
FROM sentiment_results,
generate_series(1, array_length(ids, 1)) AS i
)
SELECT reviews.id, correlated_results.sentiment as sentiment
FROM reviews
JOIN correlated_results ON reviews.id = correlated_results.id
ORDER BY reviews.id DESC;
Berikut adalah contoh output-nya:
id | sentiment
----+-----------
1 | positive
2 | positive
3 | positive
4 | positive
5 | positive
6 | negative
7 | negative
8 | negative
9 | neutral
10 | neutral
Menganalisis sentimen menggunakan kursor
Fungsi berbasis kursor ditujukan untuk memproses set data besar secara efisien, karena memungkinkan sistem mengalirkan data melalui model AI dalam batch yang mudah dikelola tanpa mengharuskan semua data dimuat ke dalam memori sekaligus.
Tanda tangan fungsi untuk versi berbasis kursor dari ai.analyze_sentiment adalah
sebagai berikut:
CREATE OR REPLACE FUNCTION ai.analyze_sentiment(
prompt TEXT,
input_cursor REFCURSOR,
batch_size INT DEFAULT NULL,
model_id VARCHAR(100) DEFAULT NULL)
RETURNS REFCURSOR
Anda kini dapat menggunakan fungsi ai.analyze_sentiment. Karena memerlukan REFCURSOR,
Anda harus membuka kursor untuk data input yang ingin dianalisis. Dalam contoh ini,
Anda menganalisis review_content dari tabel reviews.
Contoh berikut menunjukkan cara memasukkan data ke fungsi ai.analyze_sentiment baris demi baris menggunakan kursor:
-- Start a transaction
BEGIN;
-- Declare a cursor for the review content
DECLARE review_cursor REFCURSOR;
-- Open the cursor with the query to fetch the review content
OPEN review_cursor FOR SELECT review_content FROM reviews;
-- Call the AI function, passing the cursor
-- This function will return another cursor containing the results
DECLARE result_cursor REFCURSOR;
SELECT ai.analyze_sentiment(
prompt => 'Analyze the sentiment of the following movie review:',
input_cursor => review_cursor,
batch_size => 5 -- Optional: Process in batches of 5
) INTO result_cursor;
-- Fetch and display results from the result_cursor
-- The exact way to fetch from a REFCURSOR depends on the SQL environment.
-- This is a conceptual example.
FETCH ALL FROM result_cursor;
-- Close the cursors
CLOSE review_cursor;
CLOSE result_cursor;
-- End the transaction
COMMIT;
Berikut adalah output-nya:
review_content | sentiment | score
------------------------------+-----------+-------
This movie is very good | Positive | 0.9
The actors play the parts well | Positive | 0.8
I like the music in this film | Positive | 0.8
The story is easy to follow | Positive | 0.7
Many people will enjoy this show | Positive | 0.8
The film is too long | Negative | -0.6
I do not like the ending | Negative | -0.8
This movie is very boring | Negative | -0.9
The story is okay | Neutral | 0.1
Some parts are fine | Neutral | 0.2