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.
Semantik yönlendirme, doğal dil isteğini sağ handler, model, araç, istem veya iş akışına gönderir; bu isteği her rota için temsil eden örneklerle karşılaştırır. Bu eğitimde, RedisVL ve Azure Managed Redis ile bir uygulama deseni olarak anlamsal yönlendirme uygularsınız. Semantik yönlendirme, ayrı bir Azure Managed Redis yönetilen özellik değildir. Redis vektör arama ve uygulama kodunu kullanır.
Redis'te vektör araması RediSearch gerektirir ve Azure Managed Redis vektör arama genel bakışında açıklandığı gibi Azure Managed Redis'te mevcuttur. RediSearch dahil Redis modülleri, Azure Managed Redis örneğini oluştururken etkinleştirilmelidir. Desteklenen katmanlar ve ilkeler için bkz. Azure Managed Redis ile Redis modüllerini kullanma ve RediSearch gereksinimleri.
RedisVL, bir isteği bir referans kümesine SemanticRouter karşı sınıflandırmak için Redis aramasını kullanan bir Route arayüz sağlar. Altta yatan vektör modeli için Redis, vektörleri ve meta verileri hash veya JSON nesnelerinde saklar ve bunları vektör alanları, mesafe metrikleri ve KNN veya aralık sorgularıyla arar. Daha fazla bilgi için RedisVL SemanticRouter rehberi ve Redis vektör arama kavramlarına bakınız.
Bu eğitimde şunları öğreniyorsunuz:
- Temsil edici referanslarla adlandırılmış anlamsal yolları tanımlayın.
- Azure Managed Redis tarafından desteklenen bir RedisVL semantik yönlendirici oluşturun.
- Bir veya daha fazla eşleşen güzergaha yönlendirme istekleri.
- Kaçırmaları ve belirsiz eşleşmeleri yönetin.
- Eşikleri ayarla ve üretimde anlamsal yönlendirmeyi çalıştır.
- Yaygın yapay zeka uygulama desenlerine anlamsal yönlendirme uygulayın.
Prerequisites
- Azure aboneliği. Azure aboneliğiniz yoksa ücretsiz hesap oluşturun.
- Oluşturulma sırasında RediSearch etkinleştirilmiş bir Azure Managed Redis örneği. RediSearch, Azure Managed Redis'te vektör aramasını etkinleştiren Redis modülüdür ve örnek oluşturulduğunda modüller seçilmelidir. Azure Managed Redis ile Redis modüllerini kullanın başlığındaki desteklenen modül matrisini ve RediSearch politika gereksinimlerini gözden geçirin.
- Azure Managed Redis örneğiniz için bir bağlantı dizesi veya Redis URL'si. TLS ve uygulamanızın onaylı doğrulama yöntemini kullanın.
- RedisVL ve seçtiğiniz gömüleme modeli için bağımlılıkları kurabilen bir Python ortamı.
- Bir gömüleme veya vektörizasyon stratejisi. Bu eğitim, kısa bir örnek olarak RedisVL'yi
HFTextVectorizerkullanır. Yönlendirici indeksindeki her rota referansı ve gelen her talep için aynı göme modelini kullanın, böylece vektör boyutları ve mesafe metrikleri hizalanmalıdır. Redis vektör indeksleri, vektör alanı için sabitDIMbir veDISTANCE_METRICgerektirir. Daha fazla bilgi için Redis vektör arama kavramlarına bakınız.
RedisVL Yükle:
pip install redisvl
Rotalarınızı tasarlayın
Bir rota, bir uygulama kararını, örneğin bir prompt şablonu, araç, model veya iş akışını temsil eder. Her güzergah şunları içerir:
- Uygulamanızın bir işleyiciye eşlediği sabit bir
name. -
references, o rotayı temsil eden ifadelerdir. - İsteğe bağlı
metadata, örneğin işleyici kimlikleri, istem sürümleri, model tercihleri veya sahip bilgisi. - Rota başına
distance_threshold. RedisVL'de, rota eşikleri RedisCOSINEmesafe birimlerini kullanır ve daha düşük değerler daha sıkı eşleştirme gerektirir. Eşikler modele özeldir ve kendi taleplerinizle doğrulanmalıdır.
Örneğin, bir yapay zeka asistanı şu yolları kullanabilir:
| Güzergâh | Örnek hedef | Temsilci referanslar |
|---|---|---|
billing |
Faturalama iş akışı veya istem | "faturamı güncelle", "neden iki kez ücretlendirildi?" |
technical_support |
Destek önceliklendirme aracı | "önbelleğim zaman aşımına uğruyor", "bağlantı hatalarını hata ayıklamama yardım et" |
sales |
Satış iş akışı | "planları karşılaştır", "fiyatlandırma hakkında satışla konuş" |
Rotanın anlamsal yüzey alanını kapsayan referansları seçin, diğer güzergahlarla örtüşmeden. Gerçek trafik, destek biletleri veya seçilmiş değerlendirme verilerinden örnekler kullanın. "Yardım" veya "soru" gibi çok genel referanslardan kaçının, çünkü birden fazla rotayı eşleştirebilirler.
Anlamsal yönlendirici oluşturun
Redis URL'nizi bir ortam değişkeninde ayarlayın. Tam URL formatı, kimlik doğrulama yönteminize ve istemci yapılandırmanıza bağlıdır. TLS ile bağlantı kurarken bir rediss:// URL kullanın.
import os
from redisvl.extensions.router import Route, SemanticRouter
from redisvl.utils.vectorize import HFTextVectorizer
redis_url = os.environ["REDIS_URL"] # Example: rediss://:<password>@<host>:10000
billing = Route(
name="billing",
references=[
"I need a copy of my invoice",
"why was my card charged twice",
"change the billing email for my account",
],
metadata={"handler": "billing_workflow", "prompt": "billing_v1"},
distance_threshold=0.55,
)
technical_support = Route(
name="technical_support",
references=[
"my cache is timing out",
"help me debug Redis connection errors",
"why am I seeing high server load",
],
metadata={"handler": "support_triage_tool", "prompt": "support_v2"},
distance_threshold=0.50,
)
sales = Route(
name="sales",
references=[
"compare pricing plans",
"I want to talk to sales",
"which tier should I choose for production",
],
metadata={"handler": "sales_workflow", "prompt": "sales_v1"},
distance_threshold=0.60,
)
routes = [billing, technical_support, sales]
routes_by_name = {route.name: route for route in routes}
router = SemanticRouter(
name="ai-request-router",
vectorizer=HFTextVectorizer(),
routes=routes,
redis_url=redis_url,
overwrite=False,
)
Başlatıldığında, RedisVL rota referansları için bir Redis arama indeksi oluşturur ve doldurur. Redis, gömülü referanslar üzerinde benzerlik araması yapmak için indeksteki vektör alanları ve meta veri alanlarını kullanır. Yönlendirici başlatma ve rota alanları hakkında detaylar için RedisVL SemanticRouter rehberine bakınız. Redis vektör indeksleri hakkında detaylar için Redis vektör arama kavramlarına bakınız.
Tip
Her ortam için ayrı bir yönlendirici adı veya Redis anahtar öneki kullanın. Farklı kiracılar farklı rota setlerine ihtiyaç duyuyorsa, onları ayrı yönlendirici indeksleri veya katı kiracıya özgü anahtar adlandırmalarıyla izole edin ki bir kiracının referansları başka bir kiracının yönlendirme sonuçlarını etkilemez.
Bir isteği yönlendirme
Yönlendiriciyi aramak en iyi rota eşleşmesini döndürüyor. Eğer hiçbir rota eşik değerini karşılayacak kadar yakın değilse, RedisVL RouteMatch(name=None, distance=None) benzeri bir sonuç bulunamadı durumu döndürür.
request = "The cache keeps timing out when my app connects."
match = router(request)
if match.name is None:
destination = "fallback_workflow"
else:
route = routes_by_name[match.name]
destination = route.metadata["handler"]
print(match.name, match.distance, destination)
Bunu olasılık olarak değil, benzerlik mesafesi olarak değerlendirin distance . Redis COSINE mesafesinde, daha düşük değerler daha yakın eşleşmelerdir. Eşleşen rota, mesafe, eşik ve seçilmiş varış noktasını uygulama telemetrisinde sakla.
Kaçırılanları ve belirsiz eşleşmeleri ele alın
Semantik yönlendiriciler, hiçbir rota eşleşmediğinde veya birden fazla rota makul olduğunda deterministik davranışa ihtiyaç duyar.
Eksikler için:
- Genel bir asistan istemi, anahtar kelime yönlendiricisi, form veya insan temsilciye aktarma gibi yedek bir iş akışına yönlendirin.
- Kullanıcı niyeti eksik olduğunda açıklayıcı bir soru sorun.
- Çevrimdışı inceleme talebini kaydedin. Bu, eksik bir rota veya eksik referans ortaya çıkarabilir.
Olası çoklu rota eşleşmeleri için, aday güzergahları ve mesafeleri incelemek için kullanın route_many() :
request = "Can you help me choose a production tier and estimate the price?"
matches = router.route_many(request, max_k=3)
for candidate in matches:
print(candidate.name, candidate.distance)
Eğer iki rota da geçerliyse, en düşük mesafe, açık öncelik meta veri veya açıklayıcı bir soru gibi deterministik bir kural seçin. En yüksek mesafeler yakınken ve eylemin iş veya güvenlik etkisi yarattığında sessizce rota seçmekten kaçının.
Yönlendirici yapılandırmasını güncelle ve seri hale getirin
Rota tanımlarını uygulama yapılandırması olarak yönetin. RedisVL, yönlendirici yapılandırmasını bir sözlük veya YAML'ye seri olarak gönderip daha sonra geri yüklemeyi destekler. Bu özelliği rota değişikliklerini incelemek, ortamlar arasında tanıtmak ve rota tanımlarını prompt ve araç sürümleriyle uyumlu tutmak için kullanın. Örneğin, uygulama dağıtım artefaktlarınızla rota yapılandırmasını kaydedebilir ve başlatma sırasında yönlendiriciyi yeniden oluşturabilirsiniz.
RedisVL ayrıca rota referanslarını dinamik olarak eklemeyi, listelemeyi ve silmeyi destekler. Dinamik güncellemeleri dikkatlice kullanın: yeni referansları doğrulayın, kimlerin değiştirdiğini takip edin ve üretime tanıtmadan önce yönlendirme etkisini test edin.
Eşikleri bir değerlendirme setiyle ayarlayın
Eşikler, bir rotanın ne zaman eşleşeceğini belirler. RedisVL rota distance_threshold değerleri Redis COSINE mesafe birimleri kullandığı için düşük eşikler daha katıdır. Doğru değer, gömü modelinize, dilinize, referanslarınıza ve istek dağıtımınıza bağlıdır.
Bu akort sürecini kullanın:
- Her rota için etiketli örnekler ve hiçbir rota ile eşleşmemesi gereken olumsuz örnekleri toplayın.
- Örnekleri akort ve doğrulama setlerine ayırın.
- Her yolu bağımsız olarak değerlendirin ve yanlış kabul etmeleri, yanlış reddleri ve belirsiz eşleşmeleri ölçün.
- Yüksek etkili eylemler için daha sıkı eşiklerle başlayın ve doğrulama verileri desteklediğinde bunları gevşetin.
- Göme modelini, referansları veya rota taksonomisini değiştirdiğinizde eşikleri yeniden değerlendirin.
Farklı göme modelleri kullanan yönlendiriciler arasında mesafe değerlerini karşılaştırmayın. Redis vektör indeksleri, vektör alanı boyutlarıyla eşleşmesi için sorgu vektörleri gerektirir ve model değişiklikleri genellikle yönlendirici indeksini yeniden oluşturmak veya sürüm değiştirmeyi gerektirir. Daha fazla bilgi için Redis vektör arama kavramlarına bakınız.
Mesafeyi, eşikleri ve öncelikleri anlamak
Rota mesafesi, gelen istek gömülmesi ile rota referans gömmeleri arasındaki benzerlik mesafesidir. RedisVL anlamsal yönlendiricisinin COSINE mesafe metriğinde ise, daha küçük bir değer talebin rota referansına daha yakın olduğu anlamına gelir. Yönlendirici, yalnızca elde edilen mesafe o güzergahın içinde distance_thresholdolduğunda bir rotayı kabul eder.
Rota mesafesini güven yüzdesi olarak görmekten kaçının.
0.35’lik bir mesafe, %35 güven düzeyi anlamına gelmez ve bir embedding modeli için işe yarayan bir eşik, başka bir model için işe yaramayabilir. Mesafeleri, etiketlenmiş örneklerle kalibre ettiğiniz sıralama ve kabul sinyali olarak kullanın.
RedisVL rotalarında ayrı bir semantik ağırlık ayarı yok. Bunun yerine şu yönlendirme kollarını kullanın:
| Kaldıraç | Ne zaman kullanılır? | Etkisi |
|---|---|---|
Aşağı distance_threshold |
Bu yol pahalı, hassas veya geri döndürülemez bir eylemi tetikler. | Daha az yanlış kabul ama daha fazla yedek veya açıklama talebi. |
Daha Yüksek distance_threshold |
Güzergah düşük riskli, geniş veya güvenli bir şekilde aşağı akışta geri dönebilir. | Daha fazla eşleşme var, ama rotaya alakasız taleplerin girme riski daha yüksek. |
| Daha iyi referanslar | Güzergah çok dar, çok geniş ya da başka bir güzergahla karıştırılmış. | Güzergahın temsil ettiği şeyi değiştirerek güzergah sınırını değiştirir. |
| Toplama yöntemi | Bir rotanın birden fazla referansı vardır ve eşleşme için bir referans yeterli olmalıdır. |
min en yakın referansı tercih edebilir; ortalama tarzı toplama, referansları sürekli yakın olan rotaları tercih eder. |
| Uygulama öncelikli meta verileri | Anlamsal açıdan geçerli iki rota birbirine yakınsa, iş mantığınızın eşitliği bozacak bir ölçüte ihtiyacı vardır. | Uygulamanın rotanın anlamsal olarak daha yakın olduğunu iddia etmeden deterministik bir kazananı seçmesine izin veriyor. |
Hesap verilerine, arama araçlarına erişim, durum değiştiren veya insanlara yükselten güzergahlar için daha sıkı eşikler seçin. SSS seçimi, dokümantasyon araması veya model seçimi gibi düşük riskli akışlar için, sonraki istem hâlâ netleştirici bir soru sorabiliyorsa daha esnek eşikler seçin. En üstteki iki rota mesafesi birbirine yakınsa, sessizce yüksek etkili bir eylem seçmek yerine bir netleştirme adımını veya deterministik bir öncelik kuralını tercih edin.
Gerçek dünya yapay zeka desenlerinde anlamsal yönlendirme kullanın
Anlamsal yönlendirme, bir yapay zeka uygulamasının model, prompt, araç veya iş akışı çağırmadan önce hızlı ve açıklanabilir bir karar alması gerektiğinde faydalıdır. Yaygın desenler şunlardır:
| Pattern | Semantik yönlendirme nasıl yardımcı olur |
|---|---|
| Model yönlendirme | Basit talepleri daha küçük veya daha düşük maliyetli bir modele gönderin ve daha büyük modelleri karmaşık akıl yürütme, kodlama veya güvenlik açısından hassas görevler için ayırın. |
| Prompt yönlendirme | Faturalandırma, destek, satış, arıza giderme veya politika soruları için doğru sistem istri veya istem şablonunu seçin. |
| Araç yönlendirme | Temsilcinin arama, biletleme, teşhis, faturalandırma, CRM mi yoksa hiç aracı aramaması mı gerektiğine karar verin. |
| RAG yönlendirme | Vektör aramasını çalıştırmadan önce doğru getirim indeksini, bilgi tabanını, kiracı derlemini veya ürün belgeleri kümesini seçin. |
| İnsana aktarma yönlendirmesi | Anlamsal amaç hassas iş akışlarıyla eşleştiğinde, istekleri uzman kuyruklara, eskalasyon yollarına veya insan incelemesine yönlendirin. |
| Güvenlik ve politika yönlendirme | Ana asistanı çağırmadan önce daha sıkı bir koruma, kısıtlı istem, denetim izi veya reddetme iş akışı gerektiren talepleri tespit edin. |
Üretimde anlamsal yönlendirme kullanın
Üretim iş yükleri için bu uygulamaları kullanın:
- Rotaları ayırt et. Örtüşen rotaları ayırın veya yeniden adlandırın. Sürekli belirsiz eşleşmeler üreten yolları birleştirin.
- Seçilmiş referansları tercih edin. Tek bir rotayla eşleşen temsilî ifadeler ekleyin. İlgisiz trafik çeken referansları kaldırın.
- Geri dönüşü kasıtlı kullanın. Uygulama mantığında geri dönüş mekanizmasını uygulayın. Geniş bir yedek rota, normalde ıskalanması gereken istekleri yakalayabilir.
- Sürüm rota yapılandırması. İstem, araç, model ve rota versiyonu meta verilerini ekleyin. Diğer uygulama yapılandırma değişiklikleri gibi rota değişikliklerini geri al.
- Yönlendirme kalitesini gözlemleyin. Rota isabet oranını, kaçırma oranını, en çok kullanılan rotayı, mesafeyi, eşiği, belirsiz eşleşme sayısını, yedek rota kullanım oranını ve alt akış başarı metriklerini izleyin. Rotaya göre mesafe ve güven düzeyi grubu dağılımlarını gözden geçirin.
- Gerektiğinde kiracıları ayırın. Kiracıların farklı rota setleri veya katı veri izolasyon gereksinimleri olduğunda izole yönlendiriciler, anahtar prefikler veya Redis örnekleri kullanın.
- Hassas meta verileri koruyun. Rota meta verilerinde veya referanslarda sırları saklamayın. Rota örneklerini uygulama verisi olarak ele alın.
- Kapasiteyi planlayın. Rota referansları Redis'te gömülü ve indekslenmiştir. Rota setlerini kompakt ve temsilci tutun ve referanslar arttıkça bellek, gecikme ve indeks boyutunu izleyin.
Kaynakları temizle
Bu makalede oluşturduğunuz kaynakları kullanmaya devam etmek istiyorsanız kaynak grubunu koruyun.
Aksi takdirde, kaynaklarla işiniz bittiyse ücretlerden kaçınmak için oluşturduğunuz Azure kaynak grubunu silebilirsiniz.
Important
Bir kaynak grubunu silmek geri alınamaz. Kaynak grubunu sildiğinizde, içindeki tüm kaynaklar kalıcı olarak silinir. Yanlış kaynak grubunu veya kaynakları yanlışlıkla silmediğinizden emin olun. Tutmak istediğiniz kaynakları içeren mevcut bir kaynak grubunun içinde kaynakları oluşturduysanız, kaynak grubunu silmek yerine her kaynağı tek tek silebilirsiniz.
Kaynak grubunu silmek için
Azure portalında oturum açın ve Kaynak grupları’nı seçin.
Silmek istediğiniz kaynak grubunu seçin.
Çok sayıda kaynak grubu varsa Herhangi bir alan için filtre uygula... kutusunu kullanın, bu makale için oluşturduğunuz kaynak grubunuzun adını yazın. Sonuçlar listesinden kaynak grubunu seçin.
Kaynak grubunu sil seçeneğini seçin.
Kaynak grubunun silinmesini onaylamanız istenir. Onaylamak için kaynak grubunuzun adını yazın ve ardından Sil’i seçin.
Birkaç dakika sonra kaynak grubu ve bu gruptaki kaynakların tümü silinir.