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ı'nı ve Azure OpenAI'yi kullanarak anlamsal arama uygulaması oluşturmayı öğreneceksiniz.
Anlamsal arama, semantiği temel alan aramalar yapar. Standart sözcük temelli arama, sorguda sağlanan anahtar sözcüklere göre arama yapar. Örneğin, tarif veri kümeniz glütensiz, vegan, sütsüz, meyvesiz veya tatlı gibi etiketler içermeyebilir, ancak bu özellikler bileşenlerden çıkarılabilir. Fikir, bu tür anlamsal sorgular yapmak ve ilgili arama sonuçlarını almaktır.
Bu eğitimde, siz:
- Arama senaryolarını ve aramada yer alacak veri alanlarını belirleyin.
- Aramada yer alan her veri alanı için, veri alanında depolanan değerin eklemelerini depolamak için karşılık gelen bir vektör alanı oluşturun.
- Seçili veri alanlarındaki veriler için eklemeler oluşturun ve eklemeleri ilgili vektör alanlarında depolayın.
- Herhangi bir arama sorgusu için gömme oluşturun.
- Vektör veri alanını arayın ve en yakın komşuları listeleyin.
- Son derecelendirmeyi oluşturmak için sonuçları uygun ilgi, derecelendirme ve kişiselleştirme modellerinde çalıştırın. Bu tür modellerin olmaması halinde sonuçları noktalı ürün sırasının azalmasına göre sıralar.
- Modeli, sonuç kalitesini ve tıklama oranı ve bekleme süresi gibi iş ölçümlerini izleyin. Veri kalitesi, veri güncelliği ve kişiselleştirmeden kullanıcı deneyimine kadar arama yığınında hata ayıklamak ve geliştirmek için geri bildirim mekanizmalarını birleştirin.
Ö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ı yinelemeniz gerekir.
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. Model dağıtımını çağırmak için azure_ai uzantısını etkinleştirirken, 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
LIMIT değerini değiştirerek oynayın. Azure OpenAI tarafından uygulanan kısıtlama nedeniyle, yüksek bir değer kullanıldığında deyim yarıda 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
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;
Şimdi arama yapmak için işlevini çağırın:
select recipeid, recipe_name, score from recipe_search('vegan recipes', 10);
Ve sonuçları keşfedin:
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)
İ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 öneri sistemi oluşturma
- PostgreSQL için Azure Veritabanı'nda pgvector'ı etkinleştirme ve kullanma