Megosztás a következőn keresztül:


Oktatóanyag: Az Azure Cache for Redis használata szemantikai gyorsítótárként

Ebben az oktatóanyagban az Azure Cache for Redist használja szemantikai gyorsítótárként egy AI-alapú nagy nyelvi modellel (LLM). Az Azure OpenAI Szolgáltatással LLM-válaszokat hozhat létre a lekérdezésekre, és gyorsítótárazhatja ezeket a válaszokat az Azure Cache for Redis használatával, gyorsabb válaszokat és alacsonyabb költségeket eredményezve.

Mivel az Azure Cache for Redis beépített vektorkeresési képességet kínál, szemantikai gyorsítótárazást is végezhet. Az azonos lekérdezésekhez és a hasonló jelentésű lekérdezésekhez gyorsítótárazott válaszokat is visszaadhat, még akkor is, ha a szöveg nem azonos.

Ebben az oktatóanyagban az alábbiakkal fog megismerkedni:

  • Szemantikai gyorsítótárazáshoz konfigurált Azure Cache for Redis-példány létrehozása
  • Használja a LangChain más népszerű Python-kódtárakat.
  • Az Azure OpenAI szolgáltatással migrálási modellekből és gyorsítótárazási eredményekből hozhat létre szöveget.
  • Tekintse meg az LLM-ekkel való gyorsítótárazás teljesítménybeli nyereségét.

Fontos

Ez az oktatóanyag végigvezeti a Jupyter Notebook létrehozásának lépésein. Ezt az oktatóanyagot egy Python-kódfájllal (.py) követheti, és hasonló eredményeket kaphat, de az oktatóanyag összes kódblokkját hozzá kell adnia a fájlhoz, és egyszer végre kell hajtania az .py eredményeket. Más szóval a Jupyter-jegyzetfüzetek köztes eredményeket biztosítanak a cellák végrehajtása során, de ez nem elvárható a Python-kódfájlok használatakor.

Fontos

Ha inkább egy befejezett Jupyter-jegyzetfüzetet szeretne követni, töltse le a semanticcache.ipynb nevű Jupyter-jegyzetfüzetfájlt, és mentse az új szemanticcache mappába.

Előfeltételek

Azure Cache for Redis-példány létrehozása

Kövesse a rövid útmutatót: Redis Enterprise-gyorsítótár létrehozása útmutató. A Speciális lapon győződjön meg arról, hogy hozzáadta a RediSearch modult, és a vállalati fürtszabályzatot választotta. Minden más beállítás megfelelhet a rövid útmutatóban ismertetett alapértelmezett beállításnak.

A gyorsítótár létrehozása néhány percet vesz igénybe. Addig is továbbléphet a következő lépésre.

Képernyőkép a Nagyvállalati szint alapjai lap kitöltésével.

A fejlesztési környezet beállítása

  1. Hozzon létre egy szemanticcache nevű mappát a helyi számítógépen azon a helyen, ahol általában menti a projekteket.

  2. Hozzon létre egy új Python-fájlt (tutorial.py) vagy Jupyter-jegyzetfüzetet (tutorial.ipynb) a mappában.

  3. Telepítse a szükséges Python-csomagokat:

    pip install openai langchain redis tiktoken
    

Azure OpenAI-modellek létrehozása

Győződjön meg arról, hogy két modell van üzembe helyezve az Azure OpenAI-erőforrásban:

  • Szöveges válaszokat biztosító LLM. Ehhez az oktatóanyaghoz a GPT-3.5-turbo-instruct modellt használjuk.

  • Egy beágyazási modell, amely vektorokká alakítja a lekérdezéseket, hogy azok összehasonlíthatók legyenek a korábbi lekérdezésekkel. Ehhez az oktatóanyaghoz a text-embedding-ada-002 (2. verzió) modellt használjuk.

Részletesebb útmutatásért lásd a modell üzembe helyezését ismertető cikket. Jegyezze fel az egyes modelltelepítésekhez választott nevet.

Kódtárak importálása és kapcsolati adatok beállítása

Az Azure OpenAI-ra való sikeres híváshoz egy végpontra és egy kulcsra van szükség. Egy végpontra és egy kulcsra is szüksége van az Azure Cache for Redishez való csatlakozáshoz.

  1. Nyissa meg az Azure OpenAI-erőforrást az Azure Portalon.

  2. Keresse meg a végpontokat és kulcsokat az Azure OpenAI-erőforrás Erőforrás-kezelés szakaszában. Másolja ki a végpontot és a hozzáférési kulcsot, mert mindkettőre szüksége van az API-hívások hitelesítéséhez. Példavégpont: https://docs-test-001.openai.azure.com. A következők bármelyikét használhatja: KEY1 vagy KEY2.

  3. Nyissa meg az Azure Cache for Redis-erőforrás áttekintési oldalát az Azure Portalon. Másolja ki a végpontot.

  4. Keresse meg a hozzáférési kulcsokat a Beállítások szakaszban. Másolja ki a hozzáférési kulcsot. A következők bármelyikét használhatja: Primary vagy Secondary.

  5. Adja hozzá a következő kódot egy új kódcellához:

       # 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>
    
    
  6. Frissítse az Azure OpenAI-üzemelő példány kulcs- API_KEY RESOURCE_ENDPOINT és végpontértékeit.

  7. Állítsa be LLM_DEPLOYMENT_NAME és EMBEDDINGS_DEPLOYMENT_NAME adja meg az Azure OpenAI Szolgáltatásban üzembe helyezett két modell nevét.

  8. Frissítse REDIS_ENDPOINT az REDIS_PASSWORD Azure Cache for Redis-példány végpontját és kulcsértékét.

    Fontos

    Határozottan javasoljuk, hogy környezeti változókat vagy egy titkos kulcskezelőt, például az Azure Key Vaultot használva adja át az API-kulcs, a végpont és az üzembehelyezési név adatait. Ezek a változók egyszerű szövegben vannak beállítva az egyszerűség kedvéért.

  9. A 2. kódcella végrehajtása.

AI-modellek inicializálása

Ezután inicializálja az LLM-et és a beágyazási modelleket

  1. Adja hozzá a következő kódot egy új kódcellához:

       # 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
    )
    
  2. Hajtsa végre a 3. kódcellát.

A Redis beállítása szemantikai gyorsítótárként

Ezután adja meg a Redist szemantikai gyorsítótárként az LLM-hez.

  1. Adja hozzá a következő kódot egy új kódcellához:

       # Code cell 4
    
    redis_url = "rediss://:" + REDIS_PASSWORD + "@"+ REDIS_ENDPOINT
    set_llm_cache(RedisSemanticCache(redis_url = redis_url, embedding=embeddings, score_threshold=0.05))
    

    Fontos

    A paraméter értéke score_threshold határozza meg, hogy a gyorsítótárazott eredmény visszaadásához milyen hasonló két lekérdezésnek kell lennie. Minél alacsonyabb a szám, annál hasonlóbbnak kell lennie a lekérdezésnek. Ezzel az értékkel finomhangolhatja az alkalmazást.

  2. Hajtsa végre a 4. kódcellát.

Lekérdezés és válaszok lekérése az LLM-ből

Végül kérje le az LLM-et egy AI által generált válasz lekéréséhez. Ha Jupyter-jegyzetfüzetet használ, a cella tetején hozzáadhatja %%time a kód végrehajtásához szükséges időt.

  1. Adja hozzá a következő kódot egy új kódcellához, és hajtsa végre:

    # Code cell 5
    %%time
    response = llm("Please write a poem about cute kittens.")
    print(response)
    

    Ehhez hasonló kimenetnek és kimenetnek kell megjelennie:

    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
    

    Az Wall time érték 2,67 másodperc. Ennyi ideig tartott a valós idejű lekérdezés az LLM-nek és az LLM-nek a válasz létrehozásához.

  2. Hajtsa végre ismét az 5. cellát. Pontosan ugyanazt a kimenetet kell látnia, de kisebb falidővel:

    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
    

    Úgy tűnik, hogy a fal ideje öt tényezővel rövidül, egészen 575 ezredmásodpercig.

  3. Módosítsa a lekérdezést az Write a poem about cute kittens 5. celláraPlease write a poem about cute kittens, és futtassa újra. Pontosan ugyanazt a kimenetet és alacsonyabb fali időt kell látnia, mint az eredeti lekérdezés. Annak ellenére, hogy a lekérdezés megváltozott, a lekérdezés szemantikai jelentése változatlan maradt, így ugyanaz a gyorsítótárazott kimenet lett visszaadva. Ez a szemantikai gyorsítótárazás előnye!

A hasonlóság küszöbértékének módosítása

  1. Próbáljon meg más jelentéssel rendelkező hasonló lekérdezést futtatni, például Please write a poem about cute puppies. Figyelje meg, hogy a gyorsítótárazott eredmény itt is megjelenik. A szó puppies szemantikai jelentése elég közel van ahhoz a szóhoz kittens , amelyet a gyorsítótárazott eredmény visszaad.

  2. A hasonlósági küszöbérték módosítható annak meghatározására, hogy a szemantikai gyorsítótár mikor ad vissza gyorsítótárazott eredményt, és mikor kell új kimenetet visszaadnia az LLM-ből. A 4. kódcellában váltson a score_threshold 0.05 következőre 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))
    
  3. Próbálja meg újra a lekérdezést Please write a poem about cute puppies . A kölykökre jellemző új kimenetet kell kapnia:

    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
    

    Valószínűleg az alkalmazás alapján finomhangolnia kell a hasonlóság küszöbértékét, hogy a rendszer a megfelelő érzékenységet használja a gyorsítótárazandó lekérdezések meghatározásakor.

Az erőforrások eltávolítása

Ha továbbra is használni szeretné a cikkben létrehozott erőforrásokat, tartsa meg az erőforráscsoportot.

Ellenkező esetben az erőforrásokhoz kapcsolódó díjak elkerülése érdekében, ha befejezte az erőforrások használatát, törölheti a létrehozott Azure-erőforráscsoportot.

Figyelmeztetés

Az erőforráscsoport törlése nem vonható vissza. Erőforráscsoport törlésekor az erőforráscsoport összes erőforrása véglegesen törlődik. Figyeljen arra, hogy ne töröljön véletlenül erőforráscsoportot vagy erőforrásokat. Ha olyan meglévő erőforráscsoportban hozta létre az erőforrásokat, amelyekben meg szeretné tartani az erőforrásokat, az erőforráscsoport törlése helyett egyenként törölheti az egyes erőforrásokat.

Erőforráscsoport törlése

  1. Jelentkezzen be az Azure Portalra, és válassza az Erőforráscsoportok elemet.

  2. Jelölje ki a törölni kívánt erőforráscsoportot.

    Ha sok erőforráscsoport van, a Szűrő bármely mezőhöz mezőbe írja be a cikk végrehajtásához létrehozott erőforráscsoport nevét. A keresési eredmények listájában válassza ki az erőforráscsoportot.

    Képernyőkép a törölni kívánt erőforráscsoportok listájáról.

  3. Válassza az Erőforráscsoport törlése elemet.

  4. Az Erőforráscsoport törlése panelen adja meg az erőforráscsoport nevét a megerősítéshez, majd válassza a Törlés lehetőséget.

    Képernyőkép egy mezőről, amely az erőforrás nevének megadását igényli a törlés megerősítéséhez.

Néhány percen belül az erőforráscsoport és annak összes erőforrása törlődik.