Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
GILT FÜR: Azure Database for PostgreSQL – Flexible Server
In diesem praktischen Lernprogramm erfahren Sie, wie Sie eine Empfehlungsanwendung mithilfe von Azure Database für PostgreSQL und Azure OpenAI erstellen. Empfehlungen weisen Anwendungen in verschiedenen Domänen auf. Dienstleister neigen dazu, Empfehlungen für Produkte und Dienstleistungen bereitzustellen, die sie basierend auf früheren Verlaufs- und Kontextinformationen anbieten, die vom Kunden und der Umgebung gesammelt werden.
Es gibt verschiedene Möglichkeiten zum Modellieren von Empfehlungssystemen. In diesem Lernprogramm wird die einfachste Form untersucht: eine Empfehlung basierend auf einem Produkt, das (z. B.) einem vorherigen Kauf entspricht. In diesem Lernprogramm wird das Rezept-Dataset verwendet, das das Lernprogramm für die semantische Suche verwendet. Die Empfehlung ist für Rezepte, die auf einem Rezept basieren, das ein Kunde in der Vergangenheit gefällt oder gesucht hat.
Voraussetzungen
- Erstellen Sie ein OpenAI-Konto, und fordern Sie den Zugriff auf Azure OpenAI an.
- Gewähren des Zugriffs auf Azure OpenAI im gewünschten Abonnement.
- Zuweisung der Zugriffsberechtigungen zum Erstellen von Azure OpenAI-Ressourcen und zum Bereitstellen von Modellen.
- Erstellen und Bereitstellen einer Azure OpenAI-Ressource und eines Modells. Stellen Sie das Einbettungsmodell "text-embedding-ada-002" bereit. Kopieren Sie den Bereitstellungsnamen, weil Sie ihn zum Erstellen von Einbettungen benötigen.
Aktivieren der azure_ai- und pgvector-Erweiterungen
Bevor Sie azure_ai
und pgvector
auf Ihrem flexiblen Server für die Azure-Datenbank für PostgreSQL aktivieren können, müssen Sie diese Ihrer Zulassungsliste hinzufügen. Stellen Sie sicher, dass sie ordnungsgemäß hinzugefügt werden, indem Sie SHOW azure.extensions;
ausführen.
Anschließend können Sie die Erweiterung installieren, indem Sie eine Verbindung mit Ihrer Zieldatenbank herstellen und den Befehl CREATE EXTENSION ausführen. Wiederholen Sie den Befehl separat für jede Datenbank, in der die Erweiterung verfügbar sein soll.
CREATE EXTENSION azure_ai;
CREATE EXTENSION vector;
Konfigurieren eines OpenAI-Endpunkts und eines Schlüssels
In Azure AI-Diensten finden Sie unter Ressourcenverwaltungsschlüssel>und Endpunkte den Endpunkt und die Schlüssel für Ihre Azure AI-Ressource. Verwenden Sie den Endpunkt und einen der Schlüssel, um der Erweiterung azure_ai
das Aufrufen der Modellimplementierung zu ermöglichen.
select azure_ai.set_setting('azure_openai.endpoint','https://<endpoint>.openai.azure.com');
select azure_ai.set_setting('azure_openai.subscription_key', '<API Key>');
Herunterladen der Daten
Herunterladen der Daten aus Kaggle.
Erstellen der Tabelle
Stellen Sie eine Verbindung mit Ihrem Server her, und erstellen Sie eine test
Datenbank. Verwenden Sie in dieser Datenbank den folgenden Befehl, um eine Tabelle zu erstellen, in der Sie Daten importieren:
CREATE TABLE public.recipes(
rid integer NOT NULL,
recipe_name text,
prep_time text,
cook_time text,
total_time text,
servings integer,
yield text,
ingredients text,
directions text,
rating real,
url text,
cuisine_path text,
nutrition text,
timing text,
img_src text,
PRIMARY KEY (rid)
);
Importieren der Daten
Legen Sie die folgende Umgebungsvariable im Clientfenster fest, um die Codierung auf UTF-8 festzulegen. Dieser Schritt ist erforderlich, da dieses bestimmte Dataset die Windows-1252-Codierung verwendet.
Rem on Windows
Set PGCLIENTENCODING=utf-8;
# on Unix based operating systems
export PGCLIENTENCODING=utf-8
Importieren Sie die Daten in die von Ihnen erstellte Tabelle. Beachten Sie, dass dieses Dataset eine Kopfzeile enthält.
psql -d <database> -h <host> -U <user> -c "\copy recipes FROM <local recipe data file> DELIMITER ',' CSV HEADER"
Hinzufügen einer Spalte zum Speichern der Einbettungen
Fügen Sie der Tabelle eine Einbettungsspalte hinzu:
ALTER TABLE recipes ADD COLUMN embedding vector(1536);
Generieren von Einbettungen
Generieren Sie Einbettungen für Ihre Daten mithilfe der azure_ai
Erweiterung. Im folgenden Beispiel werden einige Felder vektorisiert und verkettet.
WITH ro AS (
SELECT ro.rid
FROM
recipes ro
WHERE
ro.embedding is null
LIMIT 500
)
UPDATE
recipes r
SET
embedding = azure_openai.create_embeddings('text-embedding-ada-002', r.recipe_name||' '||r.cuisine_path||' '||r.ingredients||' '||r.nutrition||' '||r.directions)
FROM
ro
WHERE
r.rid = ro.rid;
Wiederholen Sie den Befehl, bis keine weiteren Zu verarbeitenden Zeilen vorhanden sind.
Tipp
Spielen Sie mit dem LIMIT
Wert um. Bei einem hohen Wert kann die Anweisung aufgrund der von Azure OpenAI auferlegten Drosselung möglicherweise vorzeitig fehlschlagen. Wenn die Anweisung fehlschlägt, warten Sie mindestens eine Minute, und führen Sie den Befehl erneut aus.
Suche
Erstellen Sie eine Suchfunktion in Ihrer Datenbank zur Vereinfachung:
create function
recommend_recipe(sampleRecipeId int, numResults int)
returns table(
out_recipeName text,
out_nutrition text,
out_similarityScore real)
as $$
declare
queryEmbedding vector(1536);
sampleRecipeText text;
begin
sampleRecipeText := (select
recipe_name||' '||cuisine_path||' '||ingredients||' '||nutrition||' '||directions
from
recipes where rid = sampleRecipeId);
queryEmbedding := (azure_openai.create_embeddings('text-embedding-ada-002',sampleRecipeText));
return query
select
distinct r.recipe_name,
r.nutrition,
(r.embedding <=> queryEmbedding)::real as score
from
recipes r
order by score asc limit numResults; -- cosine distance
end $$
language plpgsql;
Rufen Sie nun einfach die Funktion auf, um nach der Empfehlung zu suchen:
select out_recipename, out_similarityscore from recommend_recipe(1, 20); -- search for 20 recipe recommendations that closest to recipeId 1
Untersuchen Sie die Ergebnisse:
out_recipename | out_similarityscore
---------------------------------------+---------------------
Apple Pie by Grandma Ople | 0
Easy Apple Pie | 0.05137232
Grandma's Iron Skillet Apple Pie | 0.054287136
Old Fashioned Apple Pie | 0.058492836
Apple Hand Pies | 0.06449003
Apple Crumb Pie | 0.07290977
Old-Fashioned Apple Dumplings | 0.078374185
Fried Apple Pies | 0.07918481
Apple Pie Filling | 0.084320426
Apple Turnovers | 0.08576391
Dutch Apple Pie with Oatmeal Streusel | 0.08779895
Apple Crisp - Perfect and Easy | 0.09170883
Delicious Cinnamon Baked Apples | 0.09384012
Easy Apple Crisp with Pie Filling | 0.09477234
Jump Rope Pie | 0.09503954
Easy Apple Strudel | 0.095167875
Apricot Pie | 0.09634114
Easy Apple Crisp with Oat Topping | 0.09708358
Baked Apples | 0.09826993
Pear Pie | 0.099974394
(20 rows)
Verwandte Inhalte
- Integrieren der Azure-Datenbank für PostgreSQL in Azure Cognitive Services
- Integrieren von Azure-Datenbank für PostgreSQL in Azure Machine Learning-Dienste
- Generieren von Vektoreinbettungen mit Azure OpenAI in Azure Database for PostgreSQL
- Azure AI-Erweiterung in Azure Database for PostgreSQL
- Generative KI mit Azure-Datenbank für PostgreSQL
- Erstellen einer semantischen Suche mit Azure Database für PostgreSQL und Azure OpenAI
- Aktivieren und Verwenden von pgvector in Azure-Datenbank für PostgreSQL