Die Funktion ai.summarize verwendet Large Language Models (LLMs) wie Gemini, um Eingabetext umzuformulieren und neu zu organisieren, sodass er auf das Wesentliche reduziert wird. Diese Funktion erfasst die Kernthese eines Dokuments und bewahrt dabei den ursprünglichen Ton und die Nuancen des Autors. Mit dieser Funktion können Sie wichtige Ergebnisse und Schlussfolgerungen aus riesigen Datensätzen extrahieren, ohne sie manuell überprüfen zu müssen. Außerdem können Sie die Ausgabelänge steuern, indem Sie im Prompt Einschränkungen wie die Anzahl der Wörter oder die Anzahl der Sätze angeben. Sie können auch die Batchverarbeitung oder cursorbasierte Snapshots verwenden, um Millionen von Zeilen asynchron zu verarbeiten.
Die Funktion zur Zusammenfassung von Inhalten mit AlloyDB AI unterstützt verschiedene Anwendungsfälle, darunter:
- Besprechungsprotokolle: Zusammenfassen von Unterhaltungstexten, um sich auf Entscheidungen und Aufgaben zu konzentrieren.
- Technische Dokumentation: Komplexe Methodik, Ergebnisse und Auswirkungen in allgemeinen Übersichten zusammenfassen.
- Kundensupport-Logs: Mehrere Nutzerrezensionen oder Supporttickets zu einer einzigen einheitlichen Zusammenfassung häufiger Probleme zusammenfassen.
Hinweis
Prüfen Sie, ob die folgenden Anforderungen erfüllt sind, bevor Sie die Funktion ai.summarize verwenden.
Erweiterung aktivieren
Prüfen Sie, ob die aktuelle Version der Erweiterung google_ml_integration.enable_preview_ai_functions (Version 1.5.7 oder höher) installiert ist und die Vorschaufunktion aktiviert ist.
Verwenden Sie den Befehl SET, um das Flag google_ml_integration.enable_preview_ai_functions in AlloyDB Omni zu aktivieren. Mit diesem Flag wird der Zugriff auf Vorschau-KI-Funktionen wie ai.summarize gesteuert.
Prüfen Sie, ob Ihre
google_ml_integration extensionVersion 1.5.7 oder höher hat. Sie können die Version mit dem folgenden Befehl prüfen:SELECT extversion FROM pg_extension WHERE extname = 'google_ml_integration';Wenn Sie auf eine Version aktualisieren müssen, die diese Vorschaufunktionen enthält, rufen Sie Folgendes auf:
CALL google_ml.upgrade_to_preview_version();Aktivieren Sie das Flag für die aktuelle Sitzung oder für die gesamte Datenbank. Führen Sie Folgendes aus, um das Flag für die aktuelle Sitzung zu aktivieren:
SET google_ml_integration.enable_preview_ai_functions = 'on';Für diese Änderung ist kein Neustart der Datenbank erforderlich. Der Standardwert dieses Flags ist
off.
Beispieltabelle erstellen
Wenn Sie die Beispiele für die Zusammenfassungsfunktion in diesem Dokument nachvollziehen möchten, erstellen Sie eine Tabelle und füllen Sie sie mit den folgenden Filmrezensionen.
CREATE TABLE movie_reviews (
id INT PRIMARY KEY,
movie_id INT,
review TEXT
);
INSERT INTO movie_reviews (id, movie_id, review) VALUES
(1, 1, 'The Midnight Echo represents a masterclass in atmospheric tension. The cinematography captures the isolation of the frozen tundra perfectly while the lead actor delivers a superb performance. Although the pacing slows down significantly in the second act, the final twist remains unexpected. This is a truly remarkable experience.'),
(2, 1, 'Neon Velocity delivers high octane action but lacks the narrative depth required to make the stakes feel real. The visual effects are undeniably stunning, creating a vibrant cyberpunk world that pops off the screen. However, the dialogue feels cliched and the secondary characters are thin. This film is a shallow blockbuster.'),
-- more rows are present in this table
Einzelnen String zusammenfassen
Verwenden Sie die skalare Version von ai.summarize, um einen einzelnen Textblock zu verarbeiten.
SELECT ai.summarize(
prompt => 'TEXT_CONTENT',
model_id => 'MODEL_ID' -- Optional
);
Führen Sie die folgende Beispielabfrage aus, um eine kurze Zusammenfassung von Filmrezensionen zu erhalten:
SELECT ai.summarize(review) FROM movie_reviews;
Das ist die Beispielausgabe:
id | summary
----+-----------------------------------------------------------
1 | "Atmospheric thriller with a haunting performance and shocking twist."
2 | "Visually stunning cyberpunk action film lacks narrative depth."
...
Batchweise zusammenfassen
Verwenden Sie die arraybasierte Version, um mehrere Datensätze effizient zu verarbeiten.
SELECT ai.summarize(
prompts => TEXT[],
batch_size => INT, -- Optional. The default is 10.
model_id => VARCHAR(100) -- Optional. The default value is gemini-2.5-flash-lite.
);
Das folgende Beispiel zeigt, wie Sie die arraybasierte Version der Funktion ai.summarize verwenden, um mehrere Textdatensätze in einem einzigen Aufruf effizient zu verarbeiten.
WITH summarized_results AS (
SELECT
ARRAY_AGG(id ORDER BY id) as ids,
ai.summarize(
prompts => array_agg( 'Please summarize this in max 10 words, review : ' || review
ORDER BY id),
batch_size => 15) as summaries
FROM movie_reviews
),
correlated_results AS (
SELECT ids[i] as ID, summaries[i] as summary
FROM summarized_results,
generate_series(1, array_length(ids, 1)) AS i
)
SELECT movie_reviews.id, correlated_results.summary as summary
FROM movie_reviews
JOIN correlated_results ON movie_reviews.id = correlated_results.id
ORDER BY movie_reviews.id DESC ;
Das ist die Beispielausgabe:
id | summary
---+----------------------------------------------------------------------------
1 | "Masterclass in tension, haunting performance with a twist."
2 | "High octane action, stunning visuals, shallow blockbuster."
3 | "Gentle, moving exploration of emotional honesty."
Mit Cursors zusammenfassen
Sie können Cursors verwenden, um potenziell große Mengen von Rezensionen effizient zu verarbeiten. Dazu werden sie in eine KI-Funktion eingespeist und die Ergebnisse dann einzeln verarbeitet, um sie wieder in der Datenbank zu speichern.
Das folgende Beispiel zeigt, wie Sie Cursors mit der Funktion ai.summarize verwenden, um Zeilen aus der Tabelle movie_reviews effizient zu verarbeiten, eine Zusammenfassung für jede Rezension zu erstellen und diese Zusammenfassungen in einer neuen Tabelle namens review_summaries zu speichern.
Dieser cursorbasierte Ansatz ist nützlich für die Verarbeitung großer Datensätze, die möglicherweise zu groß sind, um in einem einzelnen Batch verarbeitet zu werden oder vollständig in den Arbeitsspeicher zu passen.
Der Parameter input_cursor verwendet einen REFCURSOR. Das bedeutet, dass Sie einen Cursornamen angeben müssen, der wie ein Zeiger auf die Ergebnisse einer SQL-Abfrage fungiert. Die Funktion ai.summarize ruft dann Daten aus diesem Cursor ab, die als Eingabe für die Zusammenfassung verwendet werden.
CREATE OR REPLACE FUNCTION ai.summarize(
prompt TEXT,
input_cursor REFCURSOR,
batch_size INT DEFAULT NULL,
model_id VARCHAR(100) DEFAULT NULL)
RETURNS REFCURSOR
Im folgenden Beispiel wird die Tabelle review_summaries erstellt (falls erforderlich). Anschließend werden die Filmrezensionen durchlaufen, für jede Rezension wird mit einer KI-Funktion eine kurze Zusammenfassung erstellt und die Zusammenfassungen werden mit den ursprünglichen Rezensions-IDs in der Tabelle gespeichert.
-- Create a table to store the results
CREATE TABLE IF NOT EXISTS review_summaries (
review_id INT,
summary_text TEXT
);
DO $$
DECLARE
-- Use descriptive cursor and variable names
review_cursor REFCURSOR;
result_record RECORD;
cursor_response REFCURSOR;
id_array INT[];
idx INT := 1;
BEGIN
-- 1. Open cursor for the input text
OPEN review_cursor FOR
SELECT review AS prompt FROM movie_reviews ORDER BY id;
-- 2. Call the AI summarize function
cursor_response := ai.summarize(
prompt => 'Please summarize the following review in max 10 words: ',
input_cursor => review_cursor
);
-- 3. Map IDs into an array to maintain relational integrity during the loop
SELECT ARRAY_AGG(id ORDER BY id) INTO id_array FROM movie_reviews;
-- 4. Iterate through AI results and insert into the results table
LOOP
FETCH cursor_response INTO result_record;
EXIT WHEN NOT FOUND;
INSERT INTO review_summaries (review_id, summary_text)
VALUES (id_array[idx], result_record.output);
idx := idx + 1;
END LOOP;
-- 5. Clean up cursors
CLOSE review_cursor;
CLOSE cursor_response;
END;
$$;
-- Verify results
SELECT * FROM review_summaries;
Das ist die Beispielausgabe:
review_id | summary_text
-----------+---------------------------------------------------------------------------
1 | "Masterclass in atmospheric tension with haunting performance, devastating twist."
2 | "High octane action, stunning visuals, but shallow blockbuster."
3 | "Gentle, moving exploration of grief with poetic screenplay."
Zusammenfassung über mehrere Zeilen hinweg aggregieren
Die Funktion ai.agg_summarize wird auf mehrere Zeilen in einer Spalte angewendet.
Sie aggregiert Werte in einem einheitlichen Prompt, um eine einzelne Zusammenfassung für die gesamte Gruppe zu erstellen.
Die folgende SQL-Abfrage verwendet die Aggregatfunktion ai.agg_summarize, um basierend auf allen Rezensionen in der Tabelle movie_reviews eine einzelne, einheitliche Zusammenfassung für jede movie_id zu erstellen.
select ai.agg_summarize(review) from movie_reviews group by movie_id;
Im Gegensatz zu ai.summarize, bei der jede Zeile einzeln zusammengefasst wird, kombiniert ai.agg_summarize den Text aus mehreren Zeilen zu einer einzigen Eingabe, um eine konsolidierte Zusammenfassung für die gesamte Gruppe von Zeilen zu erstellen.
Das ist die Beispielausgabe:
agg_summarize
"The Midnight Echo is a masterclass in atmospheric tension, featuring haunting performances and stunning cinematography, though its pacing falters in the second act before a final twist. Neon Velocity offers stunning visual effects and high-octane action within a vibrant cyberpunk world, but suffers from shallow narrative depth, cliched dialogue, and underdeveloped characters. Garden of Whispers is a gentle, moving, and emotionally honest exploration of and life, characterized by poetic screenwriting and natural performances. Shadow Protocol ambitiously attempts to reinvent the spy thriller with a non-linear narrative and precise action, but ultimately confuses the audience and presents a derivative central mystery. The Last Alchemist uniquely blends historical drama with subtle fantasy, boasting meticulous production design and electric chemistry between its protagonists."