Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
DOTYCZY: Azure Database for PostgreSQL — serwer elastyczny
W tym samouczku praktycznym pokazano, jak utworzyć aplikację polecaną przy użyciu usług Azure Database for PostgreSQL i Azure OpenAI. Zalecenia znajdują zastosowanie w różnych obszarach. Dostawcy usług mają tendencję do dostarczania rekomendacji dotyczących produktów i usług oferowanych na podstawie wcześniejszej historii i kontekstowych informacji zebranych od klienta i środowiska.
Istnieją różne sposoby modelowania systemów rekomendacji. W tym samouczku przedstawiono najprostszą formę rekomendacji: opartą na produkcie zgodnym z (na przykład) poprzednim zakupem. Ten samouczek wykorzystuje zestaw danych przepisów, który jest także wykorzystywany w samouczku do wyszukiwania semantycznego. Zalecenie dotyczy przepisów na podstawie przepisu, który klient lubił lub szukał w przeszłości.
Wymagania wstępne
- Utwórz konto openAI i zażądaj dostępu do usługi Azure OpenAI.
- Udziel dostępu do usługi Azure OpenAI w żądanej subskrypcji.
- Udzielanie uprawnień do tworzenia zasobów usługi Azure OpenAI i wdrażania modeli.
- Tworzenie i wdrażanie zasobu usługi Azure OpenAI i modelu. Uruchom model osadzania text-embedding-ada-002. Skopiuj nazwę wdrożenia, ponieważ jest ona potrzebna do utworzenia embeddingów.
Włączanie rozszerzeń azure_ai i pgvector
Aby włączyć azure_ai
i pgvector
na elastycznym serwerze Azure Database for PostgreSQL, należy dodać je do listy dozwolonych adresów. Upewnij się, że zostały one poprawnie dodane, uruchamiając polecenie SHOW azure.extensions;
.
Następnie możesz zainstalować rozszerzenie, łącząc się z docelową bazą danych i uruchamiając polecenie CREATE EXTENSION . Powtórz polecenie oddzielnie dla każdej bazy danych, w której ma być dostępne rozszerzenie.
CREATE EXTENSION azure_ai;
CREATE EXTENSION vector;
Skonfiguruj punkt końcowy i klucz OpenAI
W usługach azure AI w obszarze Klucze zarządzania>zasobami i punkty końcowe można znaleźć punkt końcowy i klucze dla zasobu usługi Azure AI. Użyj punktu końcowego i jednego z kluczy, aby umożliwić azure_ai
rozszerzeniu wywoływanie wdrożenia 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>');
Pobieranie danych
Pobierz dane z narzędzia Kaggle.
Tworzenie tabeli
Połącz się z serwerem test
i utwórz bazę danych. W tej bazie danych użyj następującego polecenia, aby utworzyć tabelę, w której zaimportujesz dane:
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)
);
Importowanie danych
Ustaw następującą zmienną środowiskową w oknie klienta, aby ustawić kodowanie na UTF-8. Ten krok jest niezbędny, ponieważ ten konkretny zestaw danych używa kodowania Windows-1252.
Rem on Windows
Set PGCLIENTENCODING=utf-8;
# on Unix based operating systems
export PGCLIENTENCODING=utf-8
Zaimportuj dane do utworzonej tabeli. Należy pamiętać, że ten zestaw danych zawiera wiersz nagłówka.
psql -d <database> -h <host> -U <user> -c "\copy recipes FROM <local recipe data file> DELIMITER ',' CSV HEADER"
Dodawanie kolumny do przechowywania osadzania
Dodaj kolumnę osadzania do tabeli:
ALTER TABLE recipes ADD COLUMN embedding vector(1536);
Generowanie osadzania
Generuj wektory osadzające dla swoich danych, używając rozszerzenia azure_ai
. Poniższy przykład wektoryzuje kilka pól, które są następnie połączone.
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;
Powtórz to polecenie, dopóki nie będzie więcej wierszy do przetworzenia.
Napiwek
Pobaw się wartością LIMIT
. Przy wysokiej wartości, zapytanie może zakończyć się niepowodzeniem w połowie z powodu ograniczeń przepustowości nałożonych przez usługę Azure OpenAI. Jeśli instrukcja zakończy się niepowodzeniem, zaczekaj co najmniej minutę i ponownie uruchom polecenie.
Szukaj
Utwórz funkcję wyszukiwania w bazie danych dla wygody:
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;
Teraz po prostu wywołaj funkcję, aby wyszukać zalecenie:
select out_recipename, out_similarityscore from recommend_recipe(1, 20); -- search for 20 recipe recommendations that closest to recipeId 1
Zapoznaj się z wynikami:
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)
Powiązana zawartość
- Integrowanie usługi Azure Database for PostgreSQL z usługami Azure Cognitive Services
- Integrowanie usługi Azure Database for PostgreSQL z usługami Azure Machine Learning
- Generowanie osadzania wektorów za pomocą usługi Azure OpenAI w usłudze Azure Database for PostgreSQL
- Rozszerzenie azure AI w usłudze Azure Database for PostgreSQL
- Generowanie sztucznej inteligencji za pomocą usługi Azure Database for PostgreSQL
- Tworzenie wyszukiwania semantycznego za pomocą usług Azure Database for PostgreSQL i Azure OpenAI
- Włączanie i używanie narzędzia pgvector w usłudze Azure Database for PostgreSQL