Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bu uygulamalı öğreticide, PostgreSQL için Azure Veritabanı ve Azure OpenAI kullanarak nasıl bir öneri uygulaması oluşturabileceğiniz gösterilmektedir. Önerilerin farklı etki alanlarında uygulamaları vardır. Hizmet sağlayıcıları, müşteriden ve ortamdan toplanan geçmişe ve bağlamsal bilgilere dayanarak sundukları ürün ve hizmetler için öneriler sağlama eğilimindedir.
Öneri sistemlerini modellemenin çeşitli yolları vardır. Bu öğreticide en basit form inceleniyor: önceki bir satın alma işlemine karşılık gelen bir ürüne dayalı öneri. Bu öğreticide, anlamsal arama öğreticisinde kullanılan tarif veri kümesi kullanılır. Öneri, bir müşterinin geçmişte sevdiği veya arama yaptığı bir tarifi temel alan tarifler içindir.
Önkoşullar
- Bir OpenAI hesabı oluşturun ve Azure OpenAI'ye erişim isteyin.
- İstenen abonelikte Azure OpenAI'ye erişim izni verin.
- Azure OpenAI kaynakları oluşturma ve modelleri dağıtma izinleri verin.
- Azure OpenAI kaynağı ve modeli oluşturma ve dağıtma. Embeddings modelini text-embedding-ada-002 dağıtın. Eklemeler oluşturmak için ihtiyacınız olduğundan dağıtım adını kopyalayın.
azure_ai ve pgvector uzantılarını etkinleştirme
PostgreSQL için Azure Veritabanı esnek sunucu örneğinizi etkinleştirebilmeniz azure_aipgvector için önce bunları izin verilenler listenize eklemeniz gerekir. komutunu çalıştırarak SHOW azure.extensions;bunların doğru şekilde eklendiğinden emin olun.
Ardından hedef veritabanınıza bağlanıp CREATE EXTENSION komutunu çalıştırarak uzantıyı yükleyebilirsiniz. Uzantının kullanılabilir olmasını istediğiniz her veritabanı için komutu ayrı ayrı yineleyin.
CREATE EXTENSION azure_ai;
CREATE EXTENSION vector;
OpenAI uç noktasını ve anahtarını yapılandırma
Azure AI hizmetlerinde , Kaynak Yönetimi>Anahtarları ve Uç Noktaları altında Azure AI kaynağınızın uç noktasını ve anahtarlarını bulabilirsiniz. Uzantının model dağıtımını çağırmasını sağlamak azure_ai için uç noktayı ve anahtarlardan birini kullanın:
select azure_ai.set_setting('azure_openai.endpoint','https://<endpoint>.openai.azure.com');
select azure_ai.set_setting('azure_openai.subscription_key', '<API Key>');
Verileri indirme
Tabloyu oluşturma
Sunucunuza bağlanın ve bir test veritabanı oluşturun. Bu veritabanında, verileri içeri aktaracağınız bir tablo oluşturmak için aşağıdaki komutu kullanın:
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)
);
Verileri içeri aktarma
kodlamayı UTF-8 olarak ayarlamak için istemci penceresinde aşağıdaki ortam değişkenini ayarlayın. Bu veri kümesi Windows-1252 kodlaması kullandığından bu adım gereklidir.
Rem on Windows
Set PGCLIENTENCODING=utf-8;
# on Unix based operating systems
export PGCLIENTENCODING=utf-8
Verileri oluşturduğunuz tabloya aktarın. Bu veri kümesinin üst bilgi satırı içerdiğini unutmayın.
psql -d <database> -h <host> -U <user> -c "\copy recipes FROM <local recipe data file> DELIMITER ',' CSV HEADER"
Eklemeleri depolamak için sütun ekleme
Tabloya ekleme sütunu ekleyin:
ALTER TABLE recipes ADD COLUMN embedding vector(1536);
Eklemeler oluşturma
Uzantıyı azure_ai kullanarak verileriniz için eklemeler oluşturun. Aşağıdaki örnek birkaç alanı vektörleştirir ve birleştirilir.
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;
İşlenmek üzere başka satır kalmayıncaya kadar komutu yineleyin.
İpucu
Değeriyle LIMIT oynayın. Yüksek bir değer kullanıldığında, Azure OpenAI'nin uyguladığı kısıtlamalar nedeniyle ifade süreç sırasında başarısız olabilir. Deyimi başarısız olursa, en az bir dakika bekleyin ve komutu yeniden çalıştırın.
Arama yap
Kolaylık sağlamak için veritabanınızda bir arama işlevi oluşturun:
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;
Şimdi öneriyi aramak için işlevini çağırın:
select out_recipename, out_similarityscore from recommend_recipe(1, 20); -- search for 20 recipe recommendations that closest to recipeId 1
Ve sonuçları keşfedin:
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)
İlgili içerik
- PostgreSQL için Azure Veritabanı'nı Azure Bilişsel Hizmetler ile tümleştirme
- PostgreSQL için Azure Veritabanı'nı Azure Machine Learning hizmetleriyle tümleştirme
- PostgreSQL için Azure Veritabanı'nda Azure OpenAI ile vektör eklemeleri oluşturma
- PostgreSQL için Azure Veritabanı'nda Azure AI uzantısı
- PostgreSQL için Azure Veritabanı ile üretken yapay zeka
- PostgreSQL için Azure Veritabanı ve Azure OpenAI ile anlamsal arama oluşturma
- PostgreSQL için Azure Veritabanı'nda pgvector'ı etkinleştirme ve kullanma