Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
VAN TOEPASSING OP: Azure Database for PostgreSQL - Flexibele server
In deze praktische zelfstudie leert u hoe u een aanbevolen toepassing bouwt met behulp van Azure Database for PostgreSQL en Azure OpenAI. Aanbevelingen hebben toepassingen in verschillende domeinen. Serviceproviders bieden vaak aanbevelingen voor producten en services die ze aanbieden op basis van de eerdere geschiedenis en contextuele informatie die wordt verzameld van de klant en omgeving.
Er zijn verschillende manieren om aanbevelingssystemen te modelleren. In deze zelfstudie wordt de eenvoudigste vorm verkend: een aanbeveling op basis van een product dat overeenkomt met (bijvoorbeeld) een eerdere aankoop. In deze zelfstudie wordt de receptgegevensset gebruikt die in de zelfstudie voor semantische zoekopdrachten wordt gebruikt. De aanbeveling is voor recepten op basis van een recept dat een klant in het verleden leuk vond of zocht.
Vereisten
- Maak een OpenAI-account en vraag toegang tot Azure OpenAI aan.
- Ververleent toegang tot Azure OpenAI in het gewenste abonnement.
- Verken machtigingen om Azure OpenAI-resources te maken en modellen te implementeren.
- Een Azure OpenAI-resource en een model maken en implementeren. Implementeer het insluitingsmodel text-embedding-ada-002. Kopieer de naam van de implementatie, omdat u deze nodig hebt om insluitingen te maken.
De extensies azure_ai en pgvector inschakelen
Voordat u azure_ai
en pgvector
op uw Azure Database for PostgreSQL flexibele server kunt inschakelen, moet u deze toevoegen aan uw toegestane lijst. Zorg ervoor dat ze correct zijn toegevoegd door uit te voeren SHOW azure.extensions;
.
Vervolgens kunt u de extensie installeren door verbinding te maken met uw doeldatabase en de opdracht CREATE EXTENSION uit te voeren. Herhaal de opdracht afzonderlijk voor elke database waar u de extensie beschikbaar wilt maken.
CREATE EXTENSION azure_ai;
CREATE EXTENSION vector;
Een OpenAI-eindpunt en -sleutel configureren
In Azure AI-services vindt u onder Resourcebeheersleutels>en -eindpunten het eindpunt en de sleutels voor uw Azure AI-resource. Gebruik het eindpunt en een van de sleutels om de azure_ai
extensie in te schakelen voor het aanroepen van de modelimplementatie:
select azure_ai.set_setting('azure_openai.endpoint','https://<endpoint>.openai.azure.com');
select azure_ai.set_setting('azure_openai.subscription_key', '<API Key>');
De gegevens downloaden
Download de gegevens van Kaggle.
De tabel maken
Maak verbinding met uw server en maak een test
database. Gebruik in die database de volgende opdracht om een tabel te maken waarin u gegevens importeert:
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)
);
De gegevens importeren
Stel de volgende omgevingsvariabele in het clientvenster in om codering in te stellen op UTF-8. Deze stap is nodig omdat deze specifieke gegevensset gebruikmaakt van Windows-1252-codering.
Rem on Windows
Set PGCLIENTENCODING=utf-8;
# on Unix based operating systems
export PGCLIENTENCODING=utf-8
Importeer de gegevens in de tabel die u hebt gemaakt. Let op dat deze gegevensset een koprij bevat.
psql -d <database> -h <host> -U <user> -c "\copy recipes FROM <local recipe data file> DELIMITER ',' CSV HEADER"
Een kolom toevoegen om de insluitingen op te slaan
Voeg een insluitkolom toe aan de tabel:
ALTER TABLE recipes ADD COLUMN embedding vector(1536);
Insluitingen genereren
Genereer insluitingen voor uw gegevens met behulp van de azure_ai
extensie. In het volgende voorbeeld worden enkele velden gevectoreerd en samengevoegd.
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;
Herhaal de opdracht totdat er geen rijen meer zijn om te verwerken.
Aanbeveling
Speel rond met de LIMIT
waarde. Bij een hoge waarde kan de instructie halverwege mislukken vanwege beperking die door Azure OpenAI wordt opgelegd. Als de instructie mislukt, wacht u minstens één minuut en voert u de opdracht opnieuw uit.
Zoeken
Maak voor het gemak een zoekfunctie in uw database:
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;
Roep nu de functie aan om te zoeken naar de aanbeveling:
select out_recipename, out_similarityscore from recommend_recipe(1, 20); -- search for 20 recipe recommendations that closest to recipeId 1
En verken de resultaten:
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)
Gerelateerde inhoud
- Azure Database for PostgreSQL integreren met Azure Cognitive Services
- Azure Database for PostgreSQL integreren met Azure Machine Learning-services
- Vector embeddings genereren met Azure OpenAI in Azure Database for PostgreSQL
- Azure AI-extensie in Azure Database for PostgreSQL
- Generatieve AI met Azure Database for PostgreSQL
- Een semantische zoekopdracht maken met Azure Database for PostgreSQL en Azure OpenAI
- Pgvector inschakelen en gebruiken in Azure Database for PostgreSQL