Kurz: Použití azure Cache for Redis jako sémantické mezipaměti
V tomto kurzu použijete Azure Cache for Redis jako sémantickou mezipaměť s velkým jazykovým modelem založeným na umělé inteligenci (LLM). Pomocí služby Azure OpenAI můžete generovat odpovědi LLM na dotazy a ukládat tyto odpovědi do mezipaměti pomocí Služby Azure Cache for Redis a poskytovat rychlejší odpovědi a snížit náklady.
Vzhledem k tomu, že Azure Cache for Redis nabízí integrované funkce vektorového vyhledávání, můžete také provádět sémantické ukládání do mezipaměti. Odpovědi uložené v mezipaměti můžete vrátit pro identické dotazy a také pro dotazy, které jsou podobné významu, i když text není stejný.
V tomto kurzu se naučíte:
- Vytvoření instance Azure Cache for Redis nakonfigurované pro sémantické ukládání do mezipaměti
- Použijte LangChain další oblíbené knihovny Pythonu.
- Ke generování textu z modelů AI a výsledků mezipaměti použijte službu Azure OpenAI.
- Podívejte se na zvýšení výkonu při použití ukládání do mezipaměti s LLM.
Důležité
Tento kurz vás provede vytvořením poznámkového bloku Jupyter. Můžete postupovat podle tohoto kurzu se souborem kódu Pythonu (.py) a získat podobné výsledky, ale musíte do souboru přidat všechny bloky kódu v tomto kurzu .py
a spustit jednou, abyste viděli výsledky. Jinými slovy, Jupyter Notebooks při provádění buněk poskytují přechodné výsledky, ale při práci v souboru kódu Pythonu byste neměli očekávat toto chování.
Důležité
Pokud chcete pokračovat v dokončeném poznámkovém bloku Jupyter, stáhněte si soubor poznámkového bloku Jupyter s názvem sémanticcache.ipynb a uložte ho do nové složky sémanticcache .
Požadavky
Předplatné Azure – Vytvoření předplatného zdarma
Přístup udělený službě Azure OpenAI v požadovaném předplatném Azure v současné době musíte požádat o přístup k Azure OpenAI. Pokud chcete získat přístup k Azure OpenAI, vyplňte formulář na adrese https://aka.ms/oai/access.
Poznámkové bloky Jupyter (volitelné)
Prostředek Azure OpenAI s nasazenými modely typu text-embedding-ada-002 (verze 2) a gpt-35-turbo-instruct . Tyto modely jsou aktuálně dostupné pouze v určitých oblastech. Pokyny k nasazení modelů najdete v průvodci nasazením prostředků.
Vytvoření instance Azure Cache for Redis
Postupujte podle rychlého startu : Vytvoření průvodce mezipamětí Redis Enterprise. Na stránce Upřesnit se ujistěte, že jste přidali modul RediSearch a zvolili zásady podnikového clusteru. Všechna ostatní nastavení můžou odpovídat výchozímu nastavení popsanému v rychlém startu.
Vytvoření mezipaměti trvá několik minut. Mezitím můžete přejít k dalšímu kroku.
Nastavení vývojového prostředí
Vytvořte složku v místním počítači s názvem sémanticcache v umístění, kam obvykle ukládáte projekty.
Ve složce vytvořte nový soubor Pythonu (tutorial.py) nebo Jupyter Notebook (tutorial.ipynb).
Nainstalujte požadované balíčky Pythonu:
pip install openai langchain redis tiktoken
Vytváření modelů Azure OpenAI
Ujistěte se, že máte do prostředku Azure OpenAI nasazené dva modely:
LLM, který poskytuje textové odpovědi. Pro účely tohoto kurzu používáme model GPT-3.5-turbo-instruct .
Model vkládání, který převádí dotazy na vektory, aby je bylo možné porovnat s předchozími dotazy. Pro účely tohoto kurzu používáme model text-embedding-ada-002 (verze 2 ).
Podrobnější pokyny najdete v tématu Nasazení modelu . Poznamenejte si název, který jste zvolili pro každé nasazení modelu.
Import knihoven a nastavení informací o připojení
K úspěšnému volání azure OpenAI potřebujete koncový bod a klíč. Potřebujete také koncový bod a klíč pro připojení ke službě Azure Cache for Redis.
Na webu Azure Portal přejděte k prostředku Azure OpenAI.
Vyhledejte koncový bod a klíče v části Správa prostředků vašeho prostředku Azure OpenAI. Zkopírujte koncový bod a přístupový klíč, protože potřebujete obojí pro ověřování volání rozhraní API. Ukázkový koncový bod je:
https://docs-test-001.openai.azure.com
. Použít můžete předponuKEY1
neboKEY2
.Na webu Azure Portal přejděte na stránku Přehled vašeho prostředku Azure Cache for Redis. Zkopírujte koncový bod.
Vyhledejte přístupové klíče v části Nastavení . Zkopírujte přístupový klíč. Použít můžete předponu
Primary
neboSecondary
.Do nové buňky kódu přidejte následující kód:
# 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>
Aktualizujte hodnotu
API_KEY
RESOURCE_ENDPOINT
klíče a koncového bodu z nasazení Azure OpenAI.Nastavte
LLM_DEPLOYMENT_NAME
aEMBEDDINGS_DEPLOYMENT_NAME
na název vašich dvou modelů nasazených ve službě Azure OpenAI.REDIS_PASSWORD
AktualizujteREDIS_ENDPOINT
koncový bod a hodnotu klíče z instance Azure Cache for Redis.Důležité
Důrazně doporučujeme použít proměnné prostředí nebo správce tajných kódů, jako je Azure Key Vault , a předat tak informace o klíči rozhraní API, koncovém bodu a názvu nasazení. Tyto proměnné jsou zde nastaveny v prostém textu kvůli jednoduchosti.
Spusťte buňku kódu 2.
Inicializace modelů AI
Dále inicializujete modely LLM a vkládání.
Do nové buňky kódu přidejte následující kód:
# 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 )
Spusťte buňku kódu 3.
Nastavení Redis jako sémantické mezipaměti
Dále zadejte Redis jako sémantickou mezipaměť pro LLM.
Do nové buňky kódu přidejte následující kód:
# Code cell 4 redis_url = "rediss://:" + REDIS_PASSWORD + "@"+ REDIS_ENDPOINT set_llm_cache(RedisSemanticCache(redis_url = redis_url, embedding=embeddings, score_threshold=0.05))
Důležité
Hodnota parametru
score_threshold
určuje, jak podobné dva dotazy musí být, aby se vrátil výsledek uložený v mezipaměti. Čím nižší je číslo, tím podobnou musí být dotazy. S touto hodnotou si můžete pohrát, abyste ji vyladili do své aplikace.Spusťte buňku kódu 4.
Dotazování a získání odpovědí z LLM
Nakonec odešlete dotaz na LLM a získejte vygenerovanou odpověď AI. Pokud používáte poznámkový blok Jupyter, můžete do horní části buňky přidat %%time
výstup doby potřebné ke spuštění kódu.
Do nové buňky kódu přidejte následující kód a spusťte ho:
# Code cell 5 %%time response = llm("Please write a poem about cute kittens.") print(response)
Měl by se zobrazit výstup a výstup podobný tomuto:
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
Zobrazuje
Wall time
hodnotu 2,67 sekund. To je to, kolik času v reálném světě trvalo dotazování LLM a aby LLM vygeneroval odpověď.Znovu spusťte buňku 5. Měl by se zobrazit stejný výstup, ale s menším časem zdi:
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
Čas zdi se zdá zkrátit faktorem pěti až do 575 milisekund.
Změňte dotaz z
Please write a poem about cute kittens
buňky naWrite a poem about cute kittens
buňku 5 a spusťte ji znovu. Měl by se zobrazit stejný výstup a nižší čas zdi než původní dotaz. I když se dotaz změnil, sémantický význam dotazu zůstal stejný, takže se vrátil stejný výstup uložený v mezipaměti. To je výhoda sémantické ukládání do mezipaměti!
Změna prahové hodnoty podobnosti
Zkuste spustit podobný dotaz s jiným významem, například
Please write a poem about cute puppies
. Všimněte si, že výsledek uložený v mezipaměti se tady také vrátí. Sémantický význam slova je dostatečně blízko slovupuppies
kittens
, že se vrátí výsledek uložený v mezipaměti.Prahovou hodnotu podobnosti je možné upravit tak, aby určila, kdy by sémantická mezipaměť měla vrátit výsledek v mezipaměti a kdy by měla vrátit nový výstup z LLM. V buňce kódu 4 změňte
score_threshold
na0.01
0.05
:# Code cell 4 redis_url = "rediss://:" + REDIS_PASSWORD + "@"+ REDIS_ENDPOINT set_llm_cache(RedisSemanticCache(redis_url = redis_url, embedding=embeddings, score_threshold=0.01))
Zkuste dotaz
Please write a poem about cute puppies
zopakovat. Měli byste obdržet nový výstup, který je specifický pro štěňátka: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
Pravděpodobně budete muset vyladit prahovou hodnotu podobnosti na základě vaší aplikace, abyste měli jistotu, že se při určování dotazů, které se mají ukládat do mezipaměti, použije správná citlivost.
Vyčištění prostředků
Pokud chcete dál používat prostředky, které jste vytvořili v tomto článku, ponechte skupinu prostředků.
Jinak pokud jste s prostředky hotovi, můžete odstranit skupinu prostředků Azure, kterou jste vytvořili, abyste se vyhnuli poplatkům.
Důležité
Odstranění skupiny prostředků je nevratné. Při odstranění skupiny prostředků se všechny prostředky, které obsahuje, trvale odstraní. Ujistěte se, že nechtěně neodstraníte nesprávnou skupinu prostředků nebo prostředky. Pokud jste prostředky vytvořili v existující skupině prostředků, která obsahuje prostředky, které chcete zachovat, můžete každý prostředek odstranit jednotlivě místo odstranění skupiny prostředků.
Odstranění skupiny prostředků
Přihlaste se k portálu Azure Portal a potom vyberte Skupiny prostředků.
Vyberte skupinu prostředků, kterou chcete odstranit.
Pokud existuje mnoho skupin prostředků, použijte filtr pro jakékoli pole... zadejte název skupiny prostředků, kterou jste vytvořili pro tento článek. V seznamu výsledků vyberte skupinu prostředků.
Vyberte Odstranit skupinu prostředků.
Zobrazí se výzva k potvrzení odstranění skupiny prostředků. Potvrďte odstranění zadáním názvu vaší skupiny prostředků a vyberte Odstranit.
Po chvíli se skupina prostředků včetně všech prostředků, které obsahuje, odstraní.
Související obsah
- Další informace o službě Azure Cache for Redis
- Další informace o možnostech hledání vektorů Azure Cache for Redis
- Kurz: Použití vyhledávání vektorové podobnosti ve službě Azure Cache for Redis
- Přečtěte si, jak vytvořit aplikaci využívající AI pomocí OpenAI a Redisu.
- Vytvoření aplikace Q&A pomocí sémantických odpovědí