Öğretici: Redis için Azure Cache anlamsal önbellek olarak kullanma
Bu öğreticide Redis için Azure Cache yapay zeka tabanlı büyük dil modeli (LLM) ile anlamsal önbellek olarak kullanacaksınız. Sorgulara LLM yanıtları oluşturmak ve Redis için Azure Cache kullanarak bu yanıtları önbelleğe almak, daha hızlı yanıtlar sunmak ve maliyetleri düşürmek için Azure OpenAI Hizmeti'ni kullanırsınız.
Redis için Azure Cache yerleşik vektör arama özelliği sunduğundan, anlamsal önbelleğe alma da gerçekleştirebilirsiniz. Metin aynı olmasa bile, özdeş sorgular ve anlam olarak benzer sorgular için önbelleğe alınmış yanıtlar döndürebilirsiniz.
Bu öğreticide aşağıdakilerin nasıl yapılacağını öğreneceksiniz:
- Anlamsal önbelleğe alma için yapılandırılmış bir Redis için Azure Cache örneği oluşturma
- LangChain'i diğer popüler Python kitaplıklarını kullanın.
- Yapay zeka modellerinden metin oluşturmak ve sonuçları önbelleğe almak için Azure OpenAI hizmetini kullanın.
- LLM'lerle önbelleğe alma özelliğini kullanarak elde eden performans kazanımlarına bakın.
Önemli
Bu öğreticide Jupyter Not Defteri oluşturma adımları gösterilmektedir. Bu öğreticiyi bir Python kod dosyasıyla (.py) izleyebilir ve benzer sonuçlar alabilirsiniz, ancak bu öğreticideki tüm kod bloklarını dosyaya .py
eklemeniz ve sonuçları görmek için bir kez yürütmeniz gerekir. Başka bir deyişle, Siz hücreleri yürütürken Jupyter Notebooks ara sonuçlar sağlar, ancak bu bir Python kod dosyasında çalışırken beklemeniz gereken bir davranış değildir.
Önemli
Bunun yerine tamamlanmış bir Jupyter not defterini takip etmek isterseniz semanticcache.ipynb adlı Jupyter not defteri dosyasını indirin ve yeni semanticcache klasörüne kaydedin.
Önkoşullar
Azure aboneliği - Ücretsiz bir abonelik oluşturun
İstenen Azure aboneliğinde Azure OpenAI'ye erişim izni verildi Şu anda Azure OpenAI'ye erişim için başvurmanız gerekir. adresinden formu https://aka.ms/oai/accesstamamlayarak Azure OpenAI'ye erişim için başvurabilirsiniz.
Jupyter Notebooks (isteğe bağlı)
Text-embedding-ada-002 (Sürüm 2) ve gpt-35-turbo-instruct modellerinin dağıtıldığı bir Azure OpenAI kaynağı. Bu modeller şu anda yalnızca belirli bölgelerde kullanılabilir. Modelleri dağıtma yönergeleri için kaynak dağıtım kılavuzuna bakın.
Redis için Azure Cache örneği oluşturma
Hızlı Başlangıç: Redis Enterprise önbellek kılavuzu oluşturma'yı izleyin. Gelişmiş sayfasında RediSearch modülünü eklediğinizden ve Kurumsal Küme İlkesi'ni seçtiğinizden emin olun. Diğer tüm ayarlar, hızlı başlangıçta açıklanan varsayılan ayarlarla eşleşebilir.
Önbelleğin oluşturulması birkaç dakika sürer. Bu arada bir sonraki adıma geçebilirsiniz.
Geliştirme ortamınızı ayarlama
Yerel bilgisayarınızda genellikle projelerinizi kaydettiğiniz konumda semanticcache adlı bir klasör oluşturun.
Klasörde yeni bir python dosyası (tutorial.py) veya Jupyter not defteri (tutorial.ipynb) oluşturun.
Gerekli Python paketlerini yükleyin:
pip install openai langchain redis tiktoken
Azure OpenAI modelleri oluşturma
Azure OpenAI kaynağınıza dağıtılan iki model olduğundan emin olun:
Metin yanıtları sağlayan bir LLM. Bu öğretici için GPT-3.5-turbo-instruct modelini kullanıyoruz.
Geçmiş sorgularla karşılaştırılmalarına olanak sağlamak için sorguları vektörlere dönüştüren ekleme modeli. Bu öğretici için text-embedding-ada-002 (Sürüm 2) modelini kullanırız.
Daha ayrıntılı yönergeler için bkz . Model dağıtma. Her model dağıtımı için seçtiğiniz adı kaydedin.
Kitaplıkları içeri aktarma ve bağlantı bilgilerini ayarlama
Azure OpenAI'ye karşı başarılı bir şekilde çağrı yapmak için bir uç nokta ve anahtar gerekir. Ayrıca Redis için Azure Cache bağlanmak için bir uç nokta ve anahtara da ihtiyacınız vardır.
Azure portalında Azure OpenAI kaynağınıza gidin.
Azure OpenAI kaynağınızın Kaynak Yönetimi bölümünde Uç Nokta ve Anahtarlar'ı bulun. Hem API çağrılarınızın kimliğini doğrulamak için ihtiyacınız olduğundan uç noktanızı ve erişim anahtarınızı kopyalayın. Örnek uç nokta:
https://docs-test-001.openai.azure.com
.KEY1
veyaKEY2
kullanabilirsiniz.Azure portalında Redis için Azure Cache kaynağınızın Genel Bakış sayfasına gidin. Uç noktanızı kopyalayın.
Ayarlar bölümünde Erişim anahtarlarını bulun. Erişim anahtarınızı kopyalayın.
Primary
veyaSecondary
kullanabilirsiniz.Yeni bir kod hücresine aşağıdaki kodu ekleyin:
# Code cell 2 import openai import redis import os import langchain from langchain.llms import AzureOpenAI from langchain.embeddings import AzureOpenAIEmbeddings from langchain.globals import set_llm_cache from langchain.cache import RedisSemanticCache import time AZURE_ENDPOINT=<your-openai-endpoint> API_KEY=<your-openai-key> API_VERSION="2023-05-15" LLM_DEPLOYMENT_NAME=<your-llm-model-name> LLM_MODEL_NAME="gpt-35-turbo-instruct" EMBEDDINGS_DEPLOYMENT_NAME=<your-embeddings-model-name> EMBEDDINGS_MODEL_NAME="text-embedding-ada-002" REDIS_ENDPOINT = <your-redis-endpoint> REDIS_PASSWORD = <your-redis-password>
ve
RESOURCE_ENDPOINT
değeriniAPI_KEY
Azure OpenAI dağıtımınızdaki anahtar ve uç nokta değerleriyle güncelleştirin.Azure OpenAI Hizmeti'nde dağıtılan iki modelinizin adını ve
EMBEDDINGS_DEPLOYMENT_NAME
olarak ayarlayınLLM_DEPLOYMENT_NAME
.ve
REDIS_PASSWORD
öğesini Redis için Azure Cache örneğinizdeki uç nokta ve anahtar değeriyle güncelleştirinREDIS_ENDPOINT
.Önemli
API anahtarı, uç nokta ve dağıtım adı bilgilerini geçirmek için ortam değişkenlerini veya Azure Key Vault gibi bir gizli dizi yöneticisini kullanmanızı kesinlikle öneririz. Bu değişkenler basitlik adına burada düz metin olarak ayarlanmıştır.
Kod hücresi 2'i yürütür.
Yapay zeka modellerini başlatma
Ardından LLM ve ekleme modellerini başlatacaksınız
Yeni bir kod hücresine aşağıdaki kodu ekleyin:
# Code cell 3 llm = AzureOpenAI( deployment_name=LLM_DEPLOYMENT_NAME, model_name="gpt-35-turbo-instruct", openai_api_key=API_KEY, azure_endpoint=AZURE_ENDPOINT, openai_api_version=API_VERSION, ) embeddings = AzureOpenAIEmbeddings( azure_deployment=EMBEDDINGS_DEPLOYMENT_NAME, model="text-embedding-ada-002", openai_api_key=API_KEY, azure_endpoint=AZURE_ENDPOINT, openai_api_version=API_VERSION )
Kod hücresi 3'i yürütür.
Redis'i anlamsal önbellek olarak ayarlama
Ardından, LLM'niz için anlamsal önbellek olarak Redis'i belirtin.
Yeni bir kod hücresine aşağıdaki kodu ekleyin:
# Code cell 4 redis_url = "rediss://:" + REDIS_PASSWORD + "@"+ REDIS_ENDPOINT set_llm_cache(RedisSemanticCache(redis_url = redis_url, embedding=embeddings, score_threshold=0.05))
Önemli
parametresinin
score_threshold
değeri, önbelleğe alınmış bir sonuç döndürmek için iki sorgunun ne kadar benzer olması gerektiğini belirler. Sayı ne kadar düşükse sorguların o kadar benzer olması gerekir. Uygulamanıza ince ayar yapmak için bu değerle işlem yapabilirsiniz.Kod hücresi 4'i yürütür.
LLM'den yanıtlar alma ve sorgulama
Son olarak, yapay zeka tarafından oluşturulan bir yanıt almak için LLM'yi sorgula. Jupyter not defteri kullanıyorsanız, kodu yürütmek için geçen süreyi çıkarmak için hücrenin en üstüne ekleyebilirsiniz %%time
.
Yeni bir kod hücresine aşağıdaki kodu ekleyin ve yürütür:
# Code cell 5 %%time response = llm("Please write a poem about cute kittens.") print(response)
Şuna benzer bir çıkış ve çıkış görmeniz gerekir:
Fluffy balls of fur, With eyes so bright and pure, Kittens are a true delight, Bringing joy into our sight. With tiny paws and playful hearts, They chase and pounce, a work of art, Their innocence and curiosity, Fills our hearts with such serenity. Their soft meows and gentle purrs, Are like music to our ears, They curl up in our laps, And take the stress away in a snap. Their whiskers twitch, they're always ready, To explore and be adventurous and steady, With their tails held high, They're a sight to make us sigh. Their tiny faces, oh so sweet, With button noses and paw-sized feet, They're the epitome of cuteness, ... Cute kittens, a true blessing, In our hearts, they'll always be reigning. CPU times: total: 0 ns Wall time: 2.67 s
değeri
Wall time
2,67 saniyeyi gösterir. LLM'yi sorgulamak ve LLM'nin yanıt oluşturması bu kadar gerçek dünyada sürdü.5. hücreyi yeniden yürütür. Tam olarak aynı çıkışı, ancak daha küçük bir duvar süresiyle görmeniz gerekir:
Fluffy balls of fur, With eyes so bright and pure, Kittens are a true delight, Bringing joy into our sight. With tiny paws and playful hearts, They chase and pounce, a work of art, Their innocence and curiosity, Fills our hearts with such serenity. Their soft meows and gentle purrs, Are like music to our ears, They curl up in our laps, And take the stress away in a snap. Their whiskers twitch, they're always ready, To explore and be adventurous and steady, With their tails held high, They're a sight to make us sigh. Their tiny faces, oh so sweet, With button noses and paw-sized feet, They're the epitome of cuteness, ... Cute kittens, a true blessing, In our hearts, they'll always be reigning. CPU times: total: 0 ns Wall time: 575 ms
Duvar süresi beş kat kısaltılmış gibi görünüyor, 575 milisaniyeye kadar.
Sorguyu olarak
Please write a poem about cute kittens
değiştirin ve 5. hücreyiWrite a poem about cute kittens
yeniden çalıştırın. Tam olarak aynı çıkışı ve özgün sorgudan daha düşük bir duvar süresi görmeniz gerekir. Sorgu değişse de, sorgunun anlamsal anlamı aynı kaldığından, önbelleğe alınan aynı çıkış döndürülür. Bu, anlamsal önbelleğe almanın avantajıdır!
Benzerlik eşiğini değiştirme
gibi
Please write a poem about cute puppies
farklı bir anlama sahip benzer bir sorgu çalıştırmayı deneyin. Önbelleğe alınan sonucun da burada döndürüldüğünü görebilirsiniz. Sözcüğünpuppies
anlamsal anlamı, önbelleğe alınan sonucun döndürüldüğünü belirten sözcüyekittens
yeterince yakındır.Anlamsal önbelleğin ne zaman önbelleğe alınmış bir sonuç döndürmesi gerektiğini ve LLM'den ne zaman yeni bir çıkış döndürmesi gerektiğini belirlemek için benzerlik eşiği değiştirilebilir. 4. kod hücresinde olarak değiştirin
score_threshold
0.05
0.01
:# Code cell 4 redis_url = "rediss://:" + REDIS_PASSWORD + "@"+ REDIS_ENDPOINT set_llm_cache(RedisSemanticCache(redis_url = redis_url, embedding=embeddings, score_threshold=0.01))
Sorguyu
Please write a poem about cute puppies
yeniden deneyin. Yavru köpeklere özgü yeni bir çıktı almalısınız:Oh, little balls of fluff and fur With wagging tails and tiny paws Puppies, oh puppies, so pure The epitome of cuteness, no flaws With big round eyes that melt our hearts And floppy ears that bounce with glee Their playful antics, like works of art They bring joy to all they see Their soft, warm bodies, so cuddly As they curl up in our laps Their gentle kisses, so lovingly Like tiny, wet, puppy taps Their clumsy steps and wobbly walks As they explore the world anew Their curiosity, like a ticking clock Always eager to learn and pursue Their little barks and yips so sweet Fill our days with endless delight Their unconditional love, so complete ... For they bring us love and laughter, year after year Our cute little pups, in every way. CPU times: total: 15.6 ms Wall time: 4.3 s
Hangi sorguların önbelleğe alındığını belirlerken doğru duyarlılığın kullanıldığından emin olmak için büyük olasılıkla uygulamanıza göre benzerlik eşiğinde ince ayar yapmanız gerekir.
Kaynakları temizleme
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.
Önemli
Silinen kaynak grupları 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'i 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.
İlgili içerik
- Redis için Azure Cache hakkında daha fazla bilgi edinin
- Redis için Azure Cache vektör arama özellikleri hakkında daha fazla bilgi edinin
- Öğretici: Redis için Azure Cache vektör benzerlik araması kullanma
- OpenAI ve Redis ile yapay zeka destekli uygulama derlemeyi öğrenin
- Anlamsal yanıtlarla soru-cevap uygulaması oluşturma