Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
GÄLLER FÖR: Azure Database for PostgreSQL – flexibel server
Den här praktiska självstudien visar hur du skapar ett semantiskt sökprogram med hjälp av Azure Database for PostgreSQL och Azure OpenAI.
Semantisk sökning gör sökningar baserat på semantik. Standardlexisk sökning gör sökningar baserat på nyckelord som anges i en fråga. Till exempel kanske din receptdatauppsättning inte innehåller etiketter som glutenfri, vegansk, mjölkfri, fruktfri eller efterrätt, men dessa egenskaper kan härledas från ingredienserna. Tanken är att utfärda sådana semantiska frågor och få relevanta sökresultat.
I den här handledningen kommer du att:
- Identifiera sökscenarier och de datafält som ska ingå i en sökning.
- För varje datafält som ingår i en sökning skapar du ett motsvarande vektorfält för att lagra inbäddningarna av värdet som lagras i datafältet.
- Generera inbäddningar för data i de valda datafälten och lagra inbäddningarna i motsvarande vektorfält.
- Generera inbäddningen för alla indatasökfrågor.
- Sök efter vektordatafältet och visa en lista över närmaste grannar.
- Kör resultaten genom lämpliga relevans-, rangordnings- och anpassningsmodeller för att skapa den slutliga rangordningen. I avsaknad av sådana modeller rangordnar du resultatet i fallande punktproduktordning.
- Övervaka modellen, resultatkvaliteten och affärsmåtten, till exempel klickfrekvens och uppehållstid. Använd feedbackmekanismer för att felsöka och förbättra sökstacken, från datakvalitet, dataåterställning och anpassning till användarupplevelse.
Förutsättningar
- Skapa ett OpenAI-konto och begär åtkomst till Azure OpenAI.
- Bevilja åtkomst till Azure OpenAI i önskad prenumeration.
- Bevilja behörigheter för att skapa Azure OpenAI-resurser och distribuera modeller.
- Skapa och distribuera en Azure OpenAI-resurs och en modell. Distribuera inbäddningsmodellen text-embedding-ada-002. Kopiera distributionsnamnet eftersom du behöver det för att skapa inbäddningar.
Aktivera tilläggen azure_ai och pgvector
Innan du kan aktivera azure_ai
och pgvector
på din flexibla Azure Database for PostgreSQL-server måste du lägga till dem i listan över tillåtna. Kontrollera att de har lagts till korrekt genom att köra SHOW azure.extensions;
.
Sedan kan du installera tillägget genom att ansluta till måldatabasen och köra kommandot CREATE EXTENSION . Du måste upprepa kommandot separat för varje databas där du vill att tillägget ska vara tillgängligt.
CREATE EXTENSION azure_ai;
CREATE EXTENSION vector;
Konfigurera en OpenAI-slutpunkt och nyckel
Under Resurshanteringsnycklar>och slutpunkter i Azure AI-tjänster hittar du slutpunkten och nycklarna för din Azure AI-resurs. Använd slutpunkten och en av nycklarna för att aktivera azure_ai
tillägget för att starta modellimplementationen:
select azure_ai.set_setting('azure_openai.endpoint','https://<endpoint>.openai.azure.com');
select azure_ai.set_setting('azure_openai.subscription_key', '<API Key>');
Ladda ned data
Ladda ned data från Kaggle.
Skapa tabellen
Anslut till servern och skapa en test
databas. I databasen använder du följande kommando för att skapa en tabell där du importerar 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)
);
Importera data
Ange följande miljövariabel i klientfönstret för att ange kodning till UTF-8. Det här steget är nödvändigt eftersom den här datauppsättningen använder Windows-1252-kodning.
Rem on Windows
Set PGCLIENTENCODING=utf-8;
# on Unix based operating systems
export PGCLIENTENCODING=utf-8
Importera data till den tabell som du skapade. Observera att den här datamängden innehåller en rubrikrad.
psql -d <database> -h <host> -U <user> -c "\copy recipes FROM <local recipe data file> DELIMITER ',' CSV HEADER"
Lägg till en kolumn för att lagra inbäddningarna
Lägg till en inbäddningskolumn i tabellen:
ALTER TABLE recipes ADD COLUMN embedding vector(1536);
Generera inbäddningar
Generera inbäddningar för dina data med hjälp av azure_ai
-tillägget. I följande exempel vektoriseras några fält och sammanfogas.
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;
Upprepa kommandot tills det inte finns några fler rader att bearbeta.
Dricks
Leka med värdet LIMIT
. Med ett högt värde kan instruktionen misslyckas halvvägs på grund av begränsningar som Azure OpenAI inför. Om instruktionen misslyckas väntar du i minst en minut och kör kommandot igen.
Sök
Skapa en sökfunktion i databasen för enkelhetens skull:
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;
Anropa nu bara funktionen för att söka:
select recipeid, recipe_name, score from recipe_search('vegan recipes', 10);
Och utforska resultaten:
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)
Relaterat innehåll
- Integrera Azure Database for PostgreSQL med Azure Cognitive Services
- Integrera Azure Database for PostgreSQL med Azure Machine Learning-tjänster
- Generera vektorinbäddningar med Azure OpenAI i Azure Database for PostgreSQL
- Azure AI-tillägg i Azure Database for PostgreSQL
- Generativ AI med Azure Database for PostgreSQL
- Skapa ett rekommendationssystem med Azure Database for PostgreSQL och Azure OpenAI
- Aktivera och använda pgvector i Azure Database for PostgreSQL