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.
A következőkre vonatkozik: Azure Database for PostgreSQL – Rugalmas kiszolgáló
Ez a gyakorlati oktatóanyag bemutatja, hogyan hozhat létre szemantikai keresőalkalmazást az Azure Database for PostgreSQL és az Azure OpenAI használatával.
A szemantikai keresés szemantikán alapuló kereséseket végez. A standard lexikális keresés a lekérdezésben megadott kulcsszavak alapján végez keresést. Előfordulhat például, hogy a receptadatkészlet nem tartalmaz olyan címkéket, mint a gluténmentes, a vegán, a tejmentes, a gyümölcsmentes vagy a desszert, de ezek a jellemzők az összetevőkből következtethetők. Az ötlet az ilyen szemantikai lekérdezések kiadása és a releváns keresési eredmények lekérése.
Ebben az útmutatóban Ön:
- Azonosítsa a keresési forgatókönyveket és a keresésben részt vevő adatmezőket.
- A keresésben részt vevő összes adatmezőhöz hozzon létre egy megfelelő vektormezőt az adatmezőben tárolt érték beágyazásának tárolásához.
- Beágyazásokat hozhat létre a kijelölt adatmezőkben lévő adatokhoz, és tárolhatja a beágyazásokat a megfelelő vektormezőkben.
- Hozza létre a beágyazást bármely bemeneti keresési lekérdezéshez.
- Keresse meg a vektor adatmezőt, és listázze a legközelebbi szomszédokat.
- Alkalmazza a megfelelő relevancia-, rangsorolási és személyre szabási modelleket a végső rangsor létrehozásához. Ilyen modellek hiányában rangsorolja az eredményeket a dot-product sorrend csökkentésében.
- Monitorozza a modellt, az eredmények minőségét és az üzleti metrikákat, például az átkattintási arányt és a tartózkodási időt. Visszajelzési mechanizmusok beépítése a keresési verem hibakereséséhez és javításához, az adatok minőségétől, az adatok frissességétől és a személyre szabástól a felhasználói élményig.
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
Azelőtt, hogy a azure_ai
és pgvector
funkciókat engedélyezhetné a rugalmas Azure Database for PostgreSQL-kiszolgálón, fel kell vennie őket az engedélyezési listá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. A parancsot minden olyan adatbázis esetében külön kell megismételnie, 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és
Hozzon létre egy keresési függvényt az adatbázisban a kényelem érdekében:
create function
recipe_search(searchQuery text, numResults int)
returns table(
recipeId int,
recipe_name text,
nutrition text,
score real)
as $$
declare
query_embedding vector(1536);
begin
query_embedding := (azure_openai.create_embeddings('text-embedding-ada-002', searchQuery));
return query
select
r.rid,
r.recipe_name,
r.nutrition,
(r.embedding <=> query_embedding)::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 kereséshez:
select recipeid, recipe_name, score from recipe_search('vegan recipes', 10);
És vizsgálja meg az eredményeket:
recipeid | recipe_name | score
----------+--------------------------------------------------------------+------------
829 | Avocado Toast (Vegan) | 0.15672222
836 | Vegetarian Tortilla Soup | 0.17583494
922 | Vegan Overnight Oats with Chia Seeds and Fruit | 0.17668104
600 | Spinach and Banana Power Smoothie | 0.1773768
519 | Smokey Butternut Squash Soup | 0.18031077
604 | Vegan Banana Muffins | 0.18287598
832 | Kale, Quinoa, and Avocado Salad with Lemon Dijon Vinaigrette | 0.18368931
617 | Hearty Breakfast Muffins | 0.18737361
946 | Chia Coconut Pudding with Coconut Milk | 0.1884186
468 | Spicy Oven-Roasted Plums | 0.18994217
(10 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
- Javaslati rendszer 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