Inhalte zusammenfassen

Die Funktion ai.summarize nutzt Large Language Models (LLMs) wie Gemini, um Eingabetext neu zu formulieren und in seine wesentlichen Bestandteile zu zerlegen. Diese Funktion erfasst die Kernaussage 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 umfangreichen Datasets 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 Wortanzahl oder Satzlimits angeben. Sie können auch die Batchverarbeitung oder cursorbasierte Snapshots verwenden, um Millionen von Zeilen asynchron zu verarbeiten.

Die AlloyDB AI-Funktion zur Zusammenfassung von Inhalten unterstützt verschiedene Anwendungsfälle, darunter:

  • Besprechungstranskripte: Unterhaltungstexte zusammenfassen, um sich auf Entscheidungen und Aufgaben zu konzentrieren.
  • Technische Dokumentation: Fassen Sie komplexe Methoden, Ergebnisse und Auswirkungen in allgemeinen Übersichten zusammen.
  • Kundensupportprotokolle: Mehrere Nutzerrezensionen oder Supporttickets werden in einer einzigen zusammenfassenden Übersicht häufiger Probleme zusammengefasst.

Hinweis

Prüfen Sie, ob die folgenden Anforderungen erfüllt sind, bevor Sie die ai.summarize-Funktion verwenden.

Erweiterung aktivieren

Achten Sie darauf, dass Sie die aktuelle Version der google_ml_integration.enable_preview_ai_functions-Erweiterung (Version 1.5.7 oder höher) installiert haben und die Vorschaufunktion aktiviert ist.

Wenn Sie das Flag google_ml_integration.enable_preview_ai_functions in AlloyDB aktivieren möchten, verwenden Sie den Befehl SET. Mit diesem Flag wird der Zugriff auf KI-Vorschaufunktionen wie ai.summarize gesteuert.

  1. Achten Sie darauf, dass Ihre google_ml_integration extension-Version mindestens 1.5.7 ist. Sie können die Version mit dem folgenden Befehl prüfen:

    SELECT extversion FROM pg_extension WHERE extname = 'google_ml_integration';
    

    Wenn Sie ein Upgrade auf eine Version durchführen müssen, die diese Vorschaufunktionen enthält, rufen Sie Folgendes auf:

    CALL google_ml.upgrade_to_preview_version();
    
  2. 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 Ihre 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;

Hier sehen Sie die Beispielausgabe:

 id |                         summary
----+-----------------------------------------------------------
  1 | "Atmospheric thriller with a haunting performance and shocking twist."
  2 | "Visually stunning cyberpunk action film lacks narrative depth."
...

In Batches zusammenfassen

Wenn Sie mehrere Datensätze effizient verarbeiten möchten, verwenden Sie die arraybasierte Version.

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 ;

Hier sehen Sie 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

Mit Cursors können Sie potenziell große Mengen an Rezensionen effizient verarbeiten, sie in eine KI-Funktion einfügen und die Ergebnisse dann einzeln verarbeiten, um sie wieder in der Datenbank zu speichern.

Im folgenden Beispiel wird gezeigt, wie Sie mit der Funktion ai.summarize Cursor verwenden, um Zeilen aus der Tabelle movie_reviews effizient zu verarbeiten, für jede Rezension eine Zusammenfassung zu erstellen und diese Zusammenfassungen in einer neuen Tabelle mit dem Namen review_summaries zu speichern. Dieser cursorbasierte Ansatz ist nützlich für die Verarbeitung großer Datasets, die möglicherweise zu groß sind, um in einem einzelnen Batch verarbeitet oder auf einmal in den Arbeitsspeicher geladen zu werden.

Für den Parameter input_cursor wird ein REFCURSOR verwendet. 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 bei Bedarf die Tabelle review_summaries erstellt. Anschließend werden die Filmrezensionen durchlaufen, für jede wird mithilfe einer KI-Funktion eine kurze Zusammenfassung erstellt und die Zusammenfassungen werden mit den ursprünglichen Rezensions-IDs in der Tabelle verknüpft.

-- 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;

Hier sehen Sie 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 von Aggregaten über Zeilen hinweg

Die Funktion ai.agg_summarize wird für mehrere Zeilen in einer Spalte ausgeführt. Die Werte werden in einem einheitlichen Prompt zusammengefasst, um eine einzelne Zusammenfassung für die gesamte Gruppe zu generieren.

In der folgenden SQL-Abfrage wird die Aggregatfunktion ai.agg_summarize verwendet, um für jeden movie_id eine einzelne, einheitliche Zusammenfassung auf Grundlage aller Rezensionen in der Tabelle movie_reviews zu erstellen.

select ai.agg_summarize(review) from movie_reviews group by movie_id;

Im Gegensatz zu ai.summarize, bei dem jede Zeile einzeln zusammengefasst wird, werden bei ai.agg_summarize die Texte aus mehreren Zeilen zu einer einzigen Eingabe kombiniert, um eine konsolidierte Zusammenfassung für die gesamte Gruppe von Zeilen zu erstellen.

Hier sehen Sie 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."

Nächste Schritte