ai.analyze_sentiment è uno strumento AI integrato di AlloyDB che classifica il sentiment del testo come positivo, negativo o neutro. Incorporando questa funzionalità direttamente nel database, AlloyDB Omni ti consente di elaborare dati non strutturati senza creare pipeline di estrazione, trasformazione e caricamento (ETL) complesse o integrazioni di servizi esterni.
La funzione di analisi del sentiment offre i seguenti vantaggi:
- Conoscenza del mondo: la vasta raccolta di fatti, concetti, relazioni e comprensione contestuale del mondo che i modelli linguistici di grandi dimensioni (LLM) acquisiscono durante la fase di preaddestramento.
- Analisi in tempo reale: porta la conoscenza del mondo di Gemini nei dati aziendali utilizzando SQL.
- Scalabilità: supporta l'elaborazione basata su array e cursori per gestire in modo efficiente migliaia di righe.
- Semplicità: fornisce un'astrazione di alto livello che gestisce automaticamente la chiamata del modello e la preparazione dei dati.
La funzione di analisi del sentiment dell'AI di AlloyDB supporta diversi casi d'uso, tra cui:
- Feedback dei clienti: classifica migliaia di recensioni prodotto non elaborate e non strutturate per identificare i livelli di soddisfazione dei clienti.
- Monitoraggio dei social media: analizza il sentiment delle menzioni o dei commenti sui social per valutare la percezione del pubblico di un brand.
Prima di iniziare
Prima di utilizzare la funzione ai.analyze_sentiment, assicurati di soddisfare i seguenti requisiti.
Attiva l'estensione
Assicurati di aver installato l'estensione google_ml_integration (versione 1.6.3 o successive) con il motore di query AI abilitato.
Per attivare il flag google_ml_integration.enable_ai_query_engine in AlloyDB Omni, utilizza il comando SET. Questo flag controlla l'accesso alle funzioni AI come ai.analyze_sentiment.
Assicurati che l'estensione
google_ml_integrationsia la versione 1.6.3 o successiva. Puoi controllare la versione eseguendo questo comando:SELECT extversion FROM pg_extension WHERE extname = 'google_ml_integration';Se devi aggiornare l'estensione, esegui questo comando:
ALTER EXTENSION google_ml_integration UPDATE;Attiva il flag per la sessione corrente o per l'intero database. Per attivare il flag per la sessione corrente, esegui questo comando:
SET google_ml_integration.enable_ai_query_engine = 'on';Questa modifica non richiede il riavvio del database. Il valore predefinito di questo flag è
off.
Crea una tabella di esempio
Per seguire gli esempi della funzione ANALYZE_SENTIMENT in questo documento, crea una tabella e compilala con le seguenti recensioni di film.
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');
Analizza il sentiment di una singola stringa
Per valutare il sentiment di un singolo input di testo, utilizza la versione scalare di ai.analyze_sentiment.
SELECT ai.analyze_sentiment(
input => 'TEXT_CONTENT',
model_id => 'MODEL_ID' -- Optional. The default value is gemini-3.5-flash-lite.
);
L'esempio seguente mostra come eseguire l'analisi del sentiment a livello di riga sui dati di testo archiviati in una tabella denominata reviews con le colonne id e review_content per archiviare i dati delle recensioni. L'esempio esegue una query SELECT che applica la funzione ai.analyze_sentiment() alla colonna review_content per ogni riga della tabella. Questa funzione elabora ogni recensione singolarmente e restituisce il sentiment calcolato (positive, negative o neutral).
--- Row Level sentiment analysis
SELECT id, ai.analyze_sentiment(review_content) FROM reviews;
Di seguito è riportato l'output di esempio:
id | analyze_sentiment
----+-------------------
1 | positive
2 | positive
3 | positive
4 | positive
5 | positive
6 | negative
7 | negative
8 | negative
9 | neutral
10 | neutral
Analizza il sentiment in batch
Per prestazioni migliori su set di dati più grandi, utilizza la versione della funzione basata su array per elaborare più stringhe in una singola chiamata.
SELECT ai.analyze_sentiment(
inputs => 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-3.5-flash-lite.
);
WITH sentiment_results AS (
SELECT
ARRAY_AGG(id ORDER BY id) as ids,
ai.analyze_sentiment(
inputs => array_agg(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;
Di seguito è riportato l'output di esempio:
id | sentiment
----+-----------
1 | positive
2 | positive
3 | positive
4 | positive
5 | positive
6 | negative
7 | negative
8 | negative
9 | neutral
10 | neutral
Analizza il sentiment utilizzando i cursori
La funzione basata su cursore è progettata per elaborare in modo efficiente set di dati di grandi dimensioni, perché consente al sistema di trasmettere i dati in streaming attraverso il modello di AI in batch gestibili senza richiedere il caricamento di tutti i dati in memoria contemporaneamente.
CREATE OR REPLACE FUNCTION ai.analyze_sentiment(
input_cursor REFCURSOR,
batch_size INT DEFAULT NULL,
model_id VARCHAR(100) DEFAULT NULL)
RETURNS REFCURSOR
Ora puoi utilizzare la funzione ai.analyze_sentiment. Poiché prevede un REFCURSOR, devi aprire un cursore per i dati di input che vuoi analizzare. In questo esempio, analizzi review_content dalla tabella reviews.
L'esempio seguente mostra come inserire i dati nella funzione ai.analyze_sentiment riga per riga utilizzando un cursore:
-- 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(
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;
L'output è il seguente:
input | output
----------------------------------+----------
This movie is very good | positive
The actors play the parts well | positive
I like the music in this film | positive
The story is easy to follow | positive
Many people will enjoy this show | positive
The film is too long | negative
I do not like the ending | negative
This movie is very boring | negative
The story is okay | neutral
Some parts are fine | neutral