Poznámka
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
PLATÍ PRO: Flexibilní server Azure Database for PostgreSQL
V tomto praktickém kurzu se dozvíte, jak vytvořit doporučovací aplikaci pomocí Azure Database for PostgreSQL a Azure OpenAI. Doporučení mají uplatnění v různých oblastech. Poskytovatelé služeb obvykle poskytují doporučení pro produkty a služby, které nabízejí na základě předchozí historie a kontextových informací shromážděných ze zákazníka a prostředí.
Systémy doporučení můžete modelovat různými způsoby. Tento kurz zkoumá nejjednodušší formu: doporučení založené na produktu, který odpovídá (například) předchozímu nákupu. Tento kurz používá datovou sadu receptu, kterou kurz používá pro sémantické vyhledávání . Doporučujeme recepty, které jsou založeny na receptu, který si zákazník v minulosti oblíbil nebo hledal.
Požadavky
- Vytvořte účet OpenAI a požádejte o přístup k Azure OpenAI.
- Udělte přístup k Azure OpenAI v požadovaném předplatném.
- Udělte oprávnění k vytváření prostředků Azure OpenAI a nasazení modelů.
- Vytvoření a nasazení prostředku Azure OpenAI a modelu Nasaďte model vkládání text-embedding-ada-002. Zkopírujte název nasazení, protože ho potřebujete k vytvoření embeddingů.
Povolení rozšíření azure_ai a pgvectoru
Než budete moci povolit azure_ai
a pgvector
na vašem flexibilním serveru Azure Database for PostgreSQL, musíte je přidat do seznamu povolených položek. Spuštěním SHOW azure.extensions;
příkazu se ujistěte, že jsou správně přidané.
Rozšíření pak můžete nainstalovat připojením k cílové databázi a spuštěním příkazu CREATE EXTENSION . Opakujte příkaz zvlášť pro každou databázi, ve které chcete mít rozšíření k dispozici.
CREATE EXTENSION azure_ai;
CREATE EXTENSION vector;
Konfigurace koncového bodu OpenAI a klíče
Ve službách Azure AI, v části Správa prostředků> a Klíče a koncové body, najdete koncový bod a klíče pro prostředek Azure AI. Pomocí koncového bodu a jednoho z klíčů povolte rozšíření azure_ai
k vyvolání nasazení modelu.
select azure_ai.set_setting('azure_openai.endpoint','https://<endpoint>.openai.azure.com');
select azure_ai.set_setting('azure_openai.subscription_key', '<API Key>');
Stažení dat
Stáhněte si data z Kaggle.
Vytvoření tabulky
Připojte se k serveru a vytvořte test
databázi. V této databázi pomocí následujícího příkazu vytvořte tabulku, ve které importujete data:
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)
);
Import dat
Nastavte v okně klienta následující proměnnou prostředí, která nastaví kódování na UTF-8. Tento krok je nezbytný, protože tato konkrétní datová sada používá kódování Windows-1252.
Rem on Windows
Set PGCLIENTENCODING=utf-8;
# on Unix based operating systems
export PGCLIENTENCODING=utf-8
Importujte data do tabulky, kterou jste vytvořili. Všimněte si, že tato datová sada obsahuje řádek záhlaví.
psql -d <database> -h <host> -U <user> -c "\copy recipes FROM <local recipe data file> DELIMITER ',' CSV HEADER"
Přidání sloupce pro uložení vložených objektů
Přidejte do tabulky sloupec pro vkládání:
ALTER TABLE recipes ADD COLUMN embedding vector(1536);
Generování vložených objektů
Generujte embeddingy pro svá data pomocí rozšíření azure_ai
. Následující příklad vektorizuje několik polí a je zřetězen.
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;
Opakujte příkaz, dokud nebudou k dispozici žádné další řádky ke zpracování.
Návod
Pohrajte si s LIMIT
hodnotou. S vysokou hodnotou může příkaz selhat v polovině kvůli omezování, které Azure OpenAI ukládá. Pokud příkaz selže, počkejte aspoň jednu minutu a spusťte příkaz znovu.
Hledání
Vytvořte ve své databázi funkci vyhledávání, která vám vyhovuje:
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;
Teď stačí vyvolat funkci a vyhledat doporučení:
select out_recipename, out_similarityscore from recommend_recipe(1, 20); -- search for 20 recipe recommendations that closest to recipeId 1
A prozkoumejte výsledky:
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)
Související obsah
- Integrujte Azure Database pro PostgreSQL se službou Azure Cognitive Services
- Integrace služby Azure Database for PostgreSQL se službami Azure Machine Learning
- Generování vektorových vkládání pomocí Azure OpenAI ve službě Azure Database for PostgreSQL
- Rozšíření Azure AI ve službě Azure Database for PostgreSQL
- Generování umělé inteligence s využitím Azure Database for PostgreSQL
- Vytvoření sémantického vyhledávání pomocí Azure Database for PostgreSQL a Azure OpenAI
- Povolení a použití nástroje pgvector ve službě Azure Database for PostgreSQL