Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Ez a gyakorlati oktatóanyag bemutatja, hogyan hozhat létre ajánlóalkalmazást az Azure Database for PostgreSQL és az Azure OpenAI használatával. A javaslatok különböző területeken alkalmazhatók. A szolgáltatók általában javaslatokat nyújtanak az általuk kínált termékekre és szolgáltatásokra az ügyfél és a környezet által gyűjtött korábbi előzmények és környezeti információk alapján.
A javaslati rendszerek modellezésének különböző módjai vannak. Ez az oktatóanyag a legegyszerűbb űrlapot mutatja be: egy olyan terméken alapuló javaslatot, amely (például) egy korábbi vásárlásnak felel meg. Ez az oktatóanyag a szemantikai kereséshez használt receptadatkészletet használja. A javaslat olyan receptekre épül, amelyeket egy ügyfél kedvelt vagy keresett a múltban.
Előfeltételek
- Hozzon létre egy OpenAI-fiókot, és kérjen hozzáférést az Azure OpenAI-hoz.
- Adjon hozzáférést az Azure OpenAI-hoz a kívánt előfizetésben.
- Engedélyek megadása Azure OpenAI-erőforrások létrehozásához és modellek üzembe helyezéséhez.
- Azure OpenAI-erőforrás és modell létrehozása és üzembe helyezése. A beágyazási modell text-embedding-ada-002 üzembe helyezése. Másolja ki az üzembehelyezési nevet, mert a beágyazások létrehozásához szüksége van rá.
A azure_ai és a pgvector bővítmények engedélyezése
"Az Azure Database for PostgreSQL rugalmas kiszolgálópéldányában csak akkor engedélyezheti a azure_ai és pgvector beállításokat, ha előbb felveszi őket az engedélylistára." Hajtsa végre az SHOW azure.extensions;, hogy megbizonyosodjon arról, hogy helyesen lettek hozzáadva.
Ezután telepítheti a bővítményt a céladatbázishoz való csatlakozással és a CREATE EXTENSION parancs futtatásával. Ismételje meg külön a parancsot minden olyan adatbázis esetében, ahol elérhetővé szeretné tenni a bővítményt.
CREATE EXTENSION azure_ai;
CREATE EXTENSION vector;
OpenAI-végpont és -kulcs konfigurálása
Az Azure AI-szolgáltatások Erőforrás-kezelési>kulcsok és végpontok területén megtalálhatja az Azure AI-erőforrás végpontját és kulcsait. A végpont és az egyik kulcs használatával engedélyezze a bővítmény számára a azure_ai modell üzembe helyezésének meghívását:
select azure_ai.set_setting('azure_openai.endpoint','https://<endpoint>.openai.azure.com');
select azure_ai.set_setting('azure_openai.subscription_key', '<API Key>');
Az adatok letöltése
Töltse le az adatokat a Kaggleből.
A tábla létrehozása
Csatlakozzon a kiszolgálóhoz, és hozzon létre egy adatbázist test . Ebben az adatbázisban az alábbi paranccsal hozzon létre egy táblát, amelyben adatokat fog importálni:
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)
);
Adatok importálása
Állítsa be a következő környezeti változót az ügyfélablakban az UTF-8 kódolásának beállításához. Erre a lépésre azért van szükség, mert ez az adatkészlet Windows-1252 kódolást használ.
Rem on Windows
Set PGCLIENTENCODING=utf-8;
# on Unix based operating systems
export PGCLIENTENCODING=utf-8
Importálja az adatokat a létrehozott táblába. Vegye figyelembe, hogy ez az adatkészlet fejlécsort tartalmaz.
psql -d <database> -h <host> -U <user> -c "\copy recipes FROM <local recipe data file> DELIMITER ',' CSV HEADER"
Oszlop hozzáadása a beágyazások tárolásához
Beágyazási oszlop hozzáadása a táblához:
ALTER TABLE recipes ADD COLUMN embedding vector(1536);
Beágyazások létrehozása
Beágyazásokat hozhat létre az adatokhoz a azure_ai bővítmény használatával. Az alábbi példa vektorizál néhány mezőt, és összefűz.
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;
Ismételje meg a parancsot, amíg nincs több feldolgozandó sor.
Tipp.
Játsszon az LIMIT értékkel. Magas érték esetén előfordulhat, hogy az utasítás az Azure OpenAI által előírt szabályozás miatt félúton meghiúsul. Ha az utasítás sikertelen, várjon legalább egy percet, és futtassa újra a parancsot.
Kereső
Hozzon létre egy keresési függvényt az adatbázisban a kényelem érdekében:
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;
Most egyszerűen hívja meg a függvényt a javaslat kereséséhez:
select out_recipename, out_similarityscore from recommend_recipe(1, 20); -- search for 20 recipe recommendations that closest to recipeId 1
És vizsgálja meg az eredményeket:
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)
Kapcsolódó tartalom
- Az Azure Database for PostgreSQL integrálása az Azure Cognitive Services szolgáltatással
- Az Azure Database for PostgreSQL integrálása az Azure Machine Learning-szolgáltatásokkal
- Vektoros beágyazások létrehozása az Azure OpenAI-val az Azure Database for PostgreSQL-ben
- Azure AI-bővítmény az Azure Database for PostgreSQL-ben
- Generatív AI az Azure Database for PostgreSQL-lel
- Szemantikai keresés létrehozása az Azure Database for PostgreSQL és az Azure OpenAI használatával
- A pgvector engedélyezése és használata az Azure Database for PostgreSQL-ben