Generatív adatintelligencia

Speciális RAG minták az Amazon SageMakeren | Amazon webszolgáltatások

Találka:

Manapság az összes iparág ügyfelei – legyen szó a pénzügyi szolgáltatásokról, az egészségügyről és az élettudományokról, az utazásról és vendéglátásról, a médiáról és a szórakoztatásról, a telekommunikációról, a szoftver mint szolgáltatásról (SaaS) és még a szabadalmaztatott modellszolgáltatókról is – nagy nyelvi modelleket (LLM) használnak olyan alkalmazásokat építhet, mint a QnA (QnA) chatbotok, keresőmotorok és tudásbázisok. Ezek generatív AI Az alkalmazások nemcsak a meglévő üzleti folyamatok automatizálására szolgálnak, hanem képesek arra is, hogy átalakítsák az ezeket az alkalmazásokat használó ügyfelek élményét. Az olyan LLM-ekkel végzett fejlesztésekkel, mint a Mixtral-8x7B utasítás, olyan architektúrák származéka, mint a szakértői keverék (KM), az ügyfelek folyamatosan keresik a módokat a generatív AI-alkalmazások teljesítményének és pontosságának javítására, miközben lehetővé teszik számukra a zárt és nyílt forráskódú modellek szélesebb körének hatékony használatát.

Általában számos technikát használnak az LLM kimenetének pontosságának és teljesítményének javítására, mint például a finomhangolás paraméter hatékony finomhangolás (PEFT), megerősítő tanulás emberi visszajelzésből (RLHF), és fellép tudás lepárlása. A generatív mesterséges intelligencia-alkalmazások építésénél azonban olyan alternatív megoldást is használhat, amely lehetővé teszi a külső tudás dinamikus beépítését, és lehetővé teszi a generáláshoz felhasznált információk vezérlését anélkül, hogy a meglévő alapmodell finomhangolására lenne szükség. Itt jön be a Retrieval Augmented Generation (RAG), kifejezetten a generatív mesterséges intelligencia alkalmazásokhoz, szemben az általunk tárgyalt drágább és robusztusabb finomhangoló alternatívákkal. Ha összetett RAG-alkalmazásokat implementál a napi feladataiba, akkor olyan gyakori kihívásokkal találkozhat a RAG-rendszerekkel kapcsolatban, mint például a pontatlan visszakeresés, a dokumentumok növekvő mérete és összetettsége, valamint a kontextus túlcsordulása, amelyek jelentősen befolyásolhatják a generált válaszok minőségét és megbízhatóságát. .

Ez a bejegyzés a válaszpontosság javítását célzó RAG-mintákat tárgyalja a LangChain és az olyan eszközök, mint a szülő dokumentum-visszakereső, valamint az olyan technikák mellett, mint a kontextus szerinti tömörítés, hogy lehetővé tegyék a fejlesztők számára a meglévő generatív AI-alkalmazások fejlesztését.

Megoldás áttekintése

Ebben a bejegyzésben bemutatjuk a Mixtral-8x7B Instruct szöveggenerálás használatát a BGE Large En beágyazási modellel kombinálva, hogy hatékonyan hozzon létre RAG QnA rendszert egy Amazon SageMaker notebookon a szülő dokumentum-visszakereső eszköz és a kontextus szerinti tömörítési technika használatával. A következő ábra szemlélteti ennek a megoldásnak az architektúráját.

Ezt a megoldást néhány kattintással telepítheti Amazon SageMaker JumpStart, egy teljesen felügyelt platform, amely a legmodernebb alapmodelleket kínál különféle felhasználási esetekre, például tartalomírásra, kódgenerálásra, kérdések megválaszolására, szövegírásra, összegzésre, osztályozásra és információkeresésre. Előképzett modellek gyűjteményét kínálja, amelyeket gyorsan és egyszerűen telepíthet, felgyorsítva a gépi tanulási (ML) alkalmazások fejlesztését és üzembe helyezését. A SageMaker JumpStart egyik kulcseleme a Model Hub, amely előre betanított modellek, például a Mixtral-8x7B széles katalógusát kínálja különféle feladatokhoz.

A Mixtral-8x7B MoE architektúrát használ. Ez az architektúra lehetővé teszi, hogy a neurális hálózat különböző részei különböző feladatokra szakosodjanak, hatékonyan osztva meg a munkaterhelést több szakértő között. Ez a megközelítés lehetővé teszi a hagyományos architektúrákhoz képest nagyobb modellek hatékony betanítását és telepítését.

A MoE architektúra egyik fő előnye a méretezhetősége. A munkateher több szakértő közötti elosztásával a MoE-modellek nagyobb adatkészletekre taníthatók, és jobb teljesítményt érhetnek el, mint az azonos méretű hagyományos modellek. Ezenkívül a MoE modellek hatékonyabbak lehetnek a következtetés során, mivel csak a szakértők egy részét kell aktiválni egy adott bemenethez.

Az AWS-en futó Mixtral-8x7B Instruct-tal kapcsolatos további információkért lásd: A Mixtral-8x7B már elérhető az Amazon SageMaker JumpStartban. A Mixtral-8x7B modell a megengedő Apache 2.0 licenc alatt, korlátozás nélkül használható.

Ebben a bejegyzésben megbeszéljük, hogyan használhatod LangChain hatékonyabb és hatékonyabb RAG-alkalmazások létrehozásához. A LangChain egy nyílt forráskódú Python-könyvtár, amelyet az LLM-ekkel való alkalmazások létrehozására terveztek. Moduláris és rugalmas keretet biztosít az LLM-ek más összetevőkkel, például tudásbázisokkal, visszakereső rendszerekkel és más mesterséges intelligencia-eszközökkel való kombinálásához, hogy hatékony és testreszabható alkalmazásokat hozzon létre.

Végigsétálunk egy RAG csővezeték megépítésén a SageMakeren Mixtral-8x7B-vel. A Mixtral-8x7B Instruct szöveggenerálási modellt használjuk a BGE Large En beágyazási modellel, hogy hatékony QnA rendszert hozzunk létre RAG használatával egy SageMaker notebookon. Egy ml.t3.medium példányt használunk az LLM-ek telepítésének bemutatására a SageMaker JumpStart segítségével, amely egy SageMaker által generált API-végponton keresztül érhető el. Ez a beállítás lehetővé teszi a fejlett RAG-technikák feltárását, kísérletezését és optimalizálását a LangChain segítségével. Illusztráljuk a FAISS Embedding áruház RAG munkafolyamatba való integrálását is, kiemelve a beágyazások tárolásában és visszakeresésében betöltött szerepét a rendszer teljesítményének javítása érdekében.

Röviden bemutatjuk a SageMaker notebookot. Részletesebb és lépésenkénti utasításokért tekintse meg a Speciális RAG-minták a Mixtral segítségével a SageMaker Jumpstart GitHub-repón.

A fejlett RAG-minták szükségessége

A fejlett RAG-minták elengedhetetlenek az LLM-ek jelenlegi képességeinek javításához az emberszerű szöveg feldolgozása, megértése és generálása terén. A dokumentumok méretének és összetettségének növekedésével a dokumentum több oldalának egyetlen beágyazásban való megjelenítése a specifikusság elvesztéséhez vezethet. Bár alapvető fontosságú egy dokumentum általános lényegének megragadása, ugyanilyen fontos a benne rejlő változatos alkontextusok felismerése és megjelenítése. Ez egy olyan kihívás, amellyel gyakran szembesül, amikor nagyobb dokumentumokkal dolgozik. A RAG másik kihívása, hogy a visszakeresés során nincs tisztában azokkal a konkrét lekérdezésekkel, amelyekkel a dokumentumtároló rendszer foglalkozik a feldolgozáskor. Ez azt eredményezheti, hogy a lekérdezés szempontjából legrelevánsabb információ szöveg alá kerül (kontextus túlcsordulás). A hibák mérséklése és a meglévő RAG architektúra javítása érdekében fejlett RAG-mintákat (szülődokumentum-visszakereső és kontextus szerinti tömörítés) használhat a visszakeresési hibák csökkentése, a válaszok minőségének javítása és az összetett kérdéskezelés lehetővé tétele érdekében.

Az ebben a bejegyzésben tárgyalt technikákkal kezelheti a külső tudás-visszakereséssel és -integrációval kapcsolatos kulcsfontosságú kihívásokat, lehetővé téve az alkalmazás számára, hogy pontosabb és kontextustudatosabb válaszokat adjon.

A következő részekben megvizsgáljuk, hogyan szülő dokumentum-visszakeresők és a kontextuális tömörítés segíthet megbirkózni néhány általunk megvitatott problémával.

Szülői dokumentum-visszakereső

Az előző részben kiemeltük azokat a kihívásokat, amelyekkel a RAG-alkalmazások szembesülnek a kiterjedt dokumentumok kezelésekor. E kihívások kezelésére, szülő dokumentum-visszakeresők kategorizálja és jelölje be a beérkező dokumentumokat szülői dokumentumok. Ezeket a dokumentumokat átfogó jellegükről ismerik fel, de eredeti formájukban közvetlenül nem használják őket beágyazáshoz. Ahelyett, hogy a teljes dokumentumot egyetlen beágyazásba tömörítenék, a szülő dokumentum-lekérők ezeket a szülődokumentumokat szétbontják gyermek dokumentumok. Minden alárendelt dokumentum különböző szempontokat vagy témákat rögzít a tágabb szülődokumentumból. Ezen gyermekszegmensek azonosítását követően mindegyikhez egyedi beágyazásokat rendelünk, amelyek megragadják a sajátos tematikus lényegüket (lásd a következő diagramot). A visszakeresés során a rendszer a szülő dokumentumot hívja meg. Ez a technika célzott, de széles körű keresési lehetőségeket biztosít, szélesebb perspektívát biztosítva az LLM-nek. A szülői dokumentum-visszakeresők kettős előnyt biztosítanak az LLM-eknek: a gyermekdokumentum-beágyazások sajátossága a pontos és releváns információ-visszakeresés érdekében, valamint a szülődokumentumok meghívása a válaszgeneráláshoz, amely az LLM kimeneteit egy rétegzett és alapos kontextussal gazdagítja.

Kontextuális tömörítés

A korábban tárgyalt kontextus túlcsordulás problémájának megoldásához használhatja kontextuális tömörítés a visszakeresett dokumentumok tömörítésére és szűrésére a lekérdezés kontextusához igazodva, így csak a releváns információk kerülnek megőrzésre és feldolgozásra. Ezt a kezdeti dokumentumlekéréshez használt alaplekérő és egy dokumentumtömörítő kombinációjával érik el, amely finomítja ezeket a dokumentumokat úgy, hogy lecsökkenti a tartalmukat vagy teljesen kizárja őket a relevancia alapján, amint az a következő diagramon látható. Ez az egyszerűsített megközelítés, amelyet a kontextuális tömörítési visszakereső segít, nagymértékben növeli a RAG-alkalmazások hatékonyságát azáltal, hogy módszert biztosít az információtömegből csak a lényeges kinyerésére és felhasználására. Határozottan kezeli az információs túlterheltséget és az irreleváns adatfeldolgozást, ami jobb válaszminőséget, költséghatékonyabb LLM-műveleteket és gördülékenyebb általános visszakeresési folyamatot eredményez. Lényegében ez egy szűrő, amely az adott lekérdezéshez szabja az információkat, így nagyon szükséges eszközzé válik a fejlesztők számára, akik RAG-alkalmazásaikat optimalizálják a jobb teljesítmény és a felhasználói elégedettség érdekében.

Előfeltételek

Ha még új a SageMaker-ben, tekintse meg a Amazon SageMaker fejlesztési útmutató.

Mielőtt hozzákezdene a megoldáshoz, hozzon létre egy AWS-fiókot. Amikor létrehoz egy AWS-fiókot, egy egyszeri bejelentkezési (SSO) identitást kap, amely teljes hozzáféréssel rendelkezik a fiókban található összes AWS-szolgáltatáshoz és erőforráshoz. Ezt az identitást AWS-fióknak nevezik root felhasználó.

Bejelentkezés a AWS felügyeleti konzol a fiók létrehozásához használt e-mail cím és jelszó használatával teljes hozzáférést biztosít a fiókjában található összes AWS-erőforráshoz. Nyomatékosan javasoljuk, hogy ne használja a root felhasználót a mindennapi feladatokhoz, még az adminisztrációs feladatokhoz sem.

Ehelyett tartsa be a legjobb biztonsági gyakorlatok in AWS Identity and Access Management (IAM), és hozzon létre egy adminisztratív felhasználót és csoportot. Ezután biztonságosan zárolja a root felhasználói hitelesítő adatokat, és csak néhány fiók- és szolgáltatáskezelési feladat végrehajtására használja őket.

A Mixtral-8x7b modellhez egy ml.g5.48xlarge példány szükséges. A SageMaker JumpStart egyszerűsített módot kínál több mint 100 különböző nyílt forráskódú és harmadik féltől származó alapmodell elérésére és üzembe helyezésére. Azért, hogy indítson végpontot a Mixtral-8x7B állomásra a SageMaker JumpStartból, előfordulhat, hogy szolgáltatáskvóta-emelést kell kérnie egy ml.g5.48xlarge példány eléréséhez a végponthasználathoz. tudsz szolgáltatáskvóta-növekedést igényel a konzolon keresztül, AWS parancssori interfész (AWS CLI) vagy API-t, hogy hozzáférést biztosítson ezekhez a további erőforrásokhoz.

Állítson be egy SageMaker notebook példányt, és telepítse a függőségeket

A kezdéshez hozzon létre egy SageMaker notebook példányt, és telepítse a szükséges függőségeket. Utal GitHub repo a sikeres beállítás érdekében. A notebook példány beállítása után telepítheti a modellt.

A notebookot helyileg is futtathatja a preferált integrált fejlesztői környezetben (IDE). Győződjön meg arról, hogy telepítve van a Jupyter notebook labor.

Telepítse a modellt

Telepítse a Mixtral-8X7B Instruct LLM modellt a SageMaker JumpStart rendszeren:

# Import the JumpStartModel class from the SageMaker JumpStart library
from sagemaker.jumpstart.model import JumpStartModel

# Specify the model ID for the HuggingFace Mixtral 8x7b Instruct LLM model
model_id = "huggingface-llm-mixtral-8x7b-instruct"
model = JumpStartModel(model_id=model_id)
llm_predictor = model.deploy()

Telepítse a BGE Large En beágyazási modellt a SageMaker JumpStarton:

# Specify the model ID for the HuggingFace BGE Large EN Embedding model
model_id = "huggingface-sentencesimilarity-bge-large-en"
text_embedding_model = JumpStartModel(model_id=model_id)
embedding_predictor = text_embedding_model.deploy()

Állítsa be a LangChaint

Az összes szükséges könyvtár importálása és a Mixtral-8x7B modell és a BGE Large En beágyazási modell telepítése után beállíthatja a LangChaint. A lépésenkénti utasításokért tekintse meg a GitHub repo.

Adatok előkészítése

Ebben a bejegyzésben az Amazon több éves Letters to Shareholders című kiadványát használjuk szövegkorpuszként a QnA végrehajtásához. Az adatok előkészítésének részletesebb lépéseiért lásd a GitHub repo.

Kérdés válasz

Az adatok előkészítése után használhatja a LangChain által biztosított wrappert, amely körbeveszi a vektortárat, és bemenetet vesz az LLM-hez. Ez a burkoló a következő lépéseket hajtja végre:

  1. Fogadja el a bemeneti kérdést.
  2. Hozzon létre egy kérdés beágyazást.
  3. Szerezze be a vonatkozó dokumentumokat.
  4. Illessze be a dokumentumokat és a kérdést egy promptba.
  5. Hívja meg a modellt a prompttal, és állítsa elő a választ olvasható módon.

Most, hogy a vektortár a helyén van, elkezdhet kérdéseket feltenni:

prompt_template = """<s>[INST]
{query}
[INST]"""
PROMPT = PromptTemplate(
    template=prompt_template, input_variables=["query"]
)
query = "How has AWS evolved?"
answer = wrapper_store_faiss.query(question=PROMPT.format(query=query), llm=llm)
print(answer)
AWS, or Amazon Web Services, has evolved significantly since its initial launch in 2006. It started as a feature-poor service, offering only one instance size, in one data center, in one region of the world, with Linux operating system instances only. There was no monitoring, load balancing, auto-scaling, or persistent storage at the time. However, AWS had a successful launch and has since grown into a multi-billion-dollar service.

Over the years, AWS has added numerous features and services, with over 3,300 new ones launched in 2022 alone. They have expanded their offerings to include Windows, monitoring, load balancing, auto-scaling, and persistent storage. AWS has also made significant investments in long-term inventions that have changed what's possible in technology infrastructure.

One example of this is their investment in chip development. AWS has also seen a robust new customer pipeline and active migrations, with many companies opting to move to AWS for the agility, innovation, cost-efficiency, and security benefits it offers. AWS has transformed how customers, from start-ups to multinational companies to public sector organizations, manage their technology infrastructure.

Normál retriever lánc

Az előző forgatókönyvben megvizsgáltuk, hogyan lehet gyorsan és egyszerűen kontextusfüggő választ kapni kérdésére. Most nézzünk meg egy testreszabhatóbb lehetőséget a RetrievalQA segítségével, ahol a chain_type paraméter segítségével testreszabhatja, hogy a beolvasott dokumentumok hogyan kerüljenek a promptba. Ezenkívül annak szabályozása érdekében, hogy hány releváns dokumentumot kell lekérni, módosíthatja a következő kódban a k paramétert, hogy különböző kimeneteket lásson. Sok esetben érdemes tudni, hogy az LLM mely forrásdokumentumokat használta a válasz generálásához. Ezeket a dokumentumokat a kimenetben kaphatja meg return_source_documents, amely visszaadja az LLM prompt környezetéhez hozzáadott dokumentumokat. A RetrievalQA azt is lehetővé teszi, hogy egyedi prompt sablont biztosítson, amely egyedi lehet a modellre.

from langchain.chains import RetrievalQA

prompt_template = """<s>[INST]
Use the following pieces of context to provide a concise answer to the question at the end. If you don't know the answer, just say that you don't know, don't try to make up an answer.

{context}

Question: {question}

[INST]"""
PROMPT = PromptTemplate(
    template=prompt_template, input_variables=["context", "question"]
)

qa = RetrievalQA.from_chain_type(
    llm=llm,
    chain_type="stuff",
    retriever=vectorstore_faiss.as_retriever(
        search_type="similarity", search_kwargs={"k": 3}
    ),
    return_source_documents=True,
    chain_type_kwargs={"prompt": PROMPT}
)

Tegyünk fel egy kérdést:

query = "How did AWS evolve?"
result = qa({"query": query})
print(result['result'])
AWS (Amazon Web Services) evolved from an initially unprofitable investment to an $85B annual revenue run rate business with strong profitability, offering a wide range of services and features, and becoming a significant part of Amazon's portfolio. Despite facing skepticism and short-term headwinds, AWS continued to innovate, attract new customers, and migrate active customers, offering benefits such as agility, innovation, cost-efficiency, and security. AWS also expanded its long-term investments, including chip development, to provide new capabilities and change what's possible for its customers.

Szülő dokumentum retriever lánc

Nézzünk meg egy fejlettebb RAG opciót a segítségével ParentDocumentRetriever. Amikor dokumentumlekéréssel dolgozik, kompromisszumos megoldással találkozhat a dokumentum kis darabjainak tárolása között a pontos beágyazás érdekében, illetve a nagyobb dokumentumok tárolása között, hogy megőrizze a kontextust. A szülő dokumentum-visszakereső ezt az egyensúlyt kis adatdarabok felosztásával és tárolásával éri el.

Használjuk a parent_splitter hogy az eredeti dokumentumokat nagyobb darabokra, úgynevezett szülődokumentumokra ossza fel és a child_splitter kisebb utóddokumentumok létrehozása az eredeti dokumentumokból:

# This text splitter is used to create the parent documents
parent_splitter = RecursiveCharacterTextSplitter(chunk_size=2000)

# This text splitter is used to create the child documents
# It should create documents smaller than the parent
child_splitter = RecursiveCharacterTextSplitter(chunk_size=400)

# The vectorstore to use to index the child chunks
vectorstore_faiss = FAISS.from_documents(
    child_splitter.split_documents(documents),
    sagemaker_embeddings,
)

A gyermekdokumentumok ezután beágyazások segítségével egy vektortárban indexelésre kerülnek. Ez lehetővé teszi a releváns alárendelt dokumentumok hatékony lekérését a hasonlóság alapján. A releváns információk lekéréséhez a szülő dokumentum-lekérő először lekéri az alárendelt dokumentumokat a vektortárból. Ezután megkeresi az alárendelt dokumentumok szülőazonosítóit, és visszaadja a megfelelő nagyobb szülődokumentumokat.

qa = RetrievalQA.from_chain_type(
    llm=llm,
    chain_type="stuff",
    retriever=retriever,
    return_source_documents=True,
    chain_type_kwargs={"prompt": PROMPT}
)

Tegyünk fel egy kérdést:

query = "How did AWS evolve?"
result = qa({"query": query})
print(result['result'])
AWS (Amazon Web Services) started with a feature-poor initial launch of the Elastic Compute Cloud (EC2) service in 2006, providing only one instance size, in one data center, in one region of the world, with Linux operating system instances only, and without many key features like monitoring, load balancing, auto-scaling, or persistent storage. However, AWS's success allowed them to quickly iterate and add the missing capabilities, eventually expanding to offer various flavors, sizes, and optimizations of compute, storage, and networking, as well as developing their own chips (Graviton) to push price and performance further. AWS's iterative innovation process required significant investments in financial and people resources over 20 years, often well in advance of when it would pay out, to meet customer needs and improve long-term customer experiences, loyalty, and returns for shareholders.

Kontextuális tömörítési lánc

Nézzünk egy másik speciális RAG opciót kontextuális tömörítés. A lekéréssel kapcsolatos egyik kihívás az, hogy általában nem tudjuk, hogy a dokumentumtároló rendszer milyen konkrét lekérdezésekbe ütközik, amikor adatokat tölt be a rendszerbe. Ez azt jelenti, hogy a lekérdezés szempontjából legrelevánsabb információk egy olyan dokumentumban lehetnek eltemetve, ahol sok irreleváns szöveg található. A teljes dokumentum átadása az alkalmazáson drágább LLM-hívásokhoz és gyengébb válaszokhoz vezethet.

A kontextuális tömörítési visszakereső azzal a kihívással foglalkozik, hogy releváns információkat kérjen le egy dokumentumtároló rendszerből, ahol a vonatkozó adatok a sok szöveget tartalmazó dokumentumokban lehetnek eltemetve. A kikeresett dokumentumok adott lekérdezési kontextus alapján történő tömörítésével és szűrésével csak a legrelevánsabb információ kerül visszaadásra.

A kontextuális tömörítési visszakereső használatához a következőkre lesz szüksége:

  • Egy alap retriever – Ez a kezdeti visszakereső, amely a lekérdezés alapján letölti a dokumentumokat a tárolórendszerből
  • Dokumentumtömörítő – Ez az összetevő átveszi az eredetileg lekért dokumentumokat, és lerövidíti azokat azáltal, hogy csökkenti az egyes dokumentumok tartalmát, vagy teljesen eldobja az irreleváns dokumentumokat, a lekérdezési kontextus segítségével meghatározza a relevanciát.

Kontextuális tömörítés hozzáadása LLM lánckivonóval

Először tekerje be az alap retrievert a ContextualCompressionRetriever. Hozzáadsz egy LLMChainExtractor, amely végigfut az eredetileg visszaküldött dokumentumokon, és mindegyikből csak a lekérdezés szempontjából releváns tartalmat bontja ki.

from langchain.retrievers import ContextualCompressionRetrieverfrom langchain.retrievers.document_compressors import LLMChainExtractor

text_splitter = RecursiveCharacterTextSplitter(
    # Set a really small chunk size, just to show.
    chunk_size=1000,
    chunk_overlap=100,
)

docs = text_splitter.split_documents(documents)
retriever = FAISS.from_documents(
    docs,
    sagemaker_embeddings,
).as_retriever()

compressor = LLMChainExtractor.from_llm(llm)
compression_retriever = ContextualCompressionRetriever(
    base_compressor=compressor, base_retriever=retriever
)

compressed_docs = compression_retriever.get_relevant_documents(
    "How was Amazon impacted by COVID-19?"
)

Inicializálja a láncot a gombbal ContextualCompressionRetriever egy LLMChainExtractor és adja át a felszólítást a következőn keresztül chain_type_kwargs érv.

qa = RetrievalQA.from_chain_type(
    llm=llm,
    chain_type="stuff",
    retriever=compression_retriever,
    return_source_documents=True,
    chain_type_kwargs={"prompt": PROMPT}
)

Tegyünk fel egy kérdést:

query = "How did AWS evolve?"
result = qa({"query": query})
print(result['result'])
AWS evolved by starting as a small project inside Amazon, requiring significant capital investment and facing skepticism from both inside and outside the company. However, AWS had a head start on potential competitors and believed in the value it could bring to customers and Amazon. AWS made a long-term commitment to continue investing, resulting in over 3,300 new features and services launched in 2022. AWS has transformed how customers manage their technology infrastructure and has become an $85B annual revenue run rate business with strong profitability. AWS has also continuously improved its offerings, such as enhancing EC2 with additional features and services after its initial launch.

Szűrje le a dokumentumokat LLM láncszűrővel

A LLMChainFilter egy kicsit egyszerűbb, de robusztusabb tömörítő, amely egy LLM láncot használ annak eldöntésére, hogy az eredetileg letöltött dokumentumok közül melyiket szűrje ki és melyiket adja vissza, anélkül, hogy a dokumentum tartalmát manipulálná:

from langchain.retrievers.document_compressors import LLMChainFilter

_filter = LLMChainFilter.from_llm(llm)
compression_retriever = ContextualCompressionRetriever(
    base_compressor=_filter, base_retriever=retriever
)

compressed_docs = compression_retriever.get_relevant_documents(
    "How was Amazon impacted by COVID-19?"
)
print(compressed_docs)

Inicializálja a láncot a gombbal ContextualCompressionRetriever egy LLMChainFilter és adja át a felszólítást a következőn keresztül chain_type_kwargs érv.

qa = RetrievalQA.from_chain_type(
    llm=llm,
    chain_type="stuff",
    retriever=compression_retriever,
    return_source_documents=True,
    chain_type_kwargs={"prompt": PROMPT}
)

Tegyünk fel egy kérdést:

query = "How did AWS evolve?"
result = qa({"query": query})
print(result['result'])
AWS (Amazon Web Services) evolved by initially launching feature-poor but iterating quickly based on customer feedback to add necessary capabilities. This approach allowed AWS to launch EC2 in 2006 with limited features and then continuously add new functionalities, such as additional instance sizes, data centers, regions, operating system options, monitoring tools, load balancing, auto-scaling, and persistent storage. Over time, AWS transformed from a feature-poor service to a multi-billion-dollar business by focusing on customer needs, agility, innovation, cost-efficiency, and security. AWS now has an $85B annual revenue run rate and offers over 3,300 new features and services each year, catering to a wide range of customers from start-ups to multinational companies and public sector organizations.

Hasonlítsa össze az eredményeket

Az alábbi táblázat összehasonlítja a különböző lekérdezések eredményeit a technika alapján.

Technika 1. lekérdezés 2. lekérdezés Compare
Hogyan fejlődött az AWS? Miért sikeres az Amazon?
Rendszeres retriever lánc kimenet Az AWS (Amazon Web Services) egy kezdetben veszteséges befektetésből egy 85 milliárd dolláros éves bevételi kamatlábú üzletté fejlődött, erős jövedelmezőséggel, szolgáltatások és funkciók széles skáláját kínálva, és az Amazon portfóliójának jelentős részévé vált. Annak ellenére, hogy szkepticizmussal és rövid távú ellenszélekkel szembesült, az AWS folytatta az innovációt, új ügyfeleket vonzott és az aktív ügyfelek migrációját, olyan előnyöket kínálva, mint az agilitás, az innováció, a költséghatékonyság és a biztonság. Az AWS emellett kibővítette hosszú távú befektetéseit, beleértve a chipfejlesztést is, hogy új képességeket biztosítson, és megváltoztassa azt, ami az ügyfelei számára lehetséges. Az Amazon sikeres a folyamatos innovációnak és az olyan új területekre való terjeszkedésnek köszönhetően, mint a technológiai infrastruktúra-szolgáltatások, a digitális olvasóeszközök, a hangvezérelt személyi asszisztensek és az olyan új üzleti modellek, mint a harmadik felek piaca. Sikeréhez hozzájárul az a képessége is, hogy gyorsan skálázhatja a műveleteket, amint azt a teljesítési és szállítási hálózatok gyors bővülése is mutatja. Ezen túlmenően, az Amazon a folyamatok optimalizálására és hatékonyságának növelésére összpontosít, ami a termelékenység javulását és a költségcsökkentést eredményezte. Az Amazon Business példája rávilágít arra, hogy a vállalat képes kiaknázni e-kereskedelmi és logisztikai erősségeit a különböző ágazatokban. A normál retriever lánc válaszai alapján azt látjuk, hogy bár hosszú válaszokat ad, a kontextus túlcsordulásától szenved, és nem említ semmilyen lényeges részletet a korpuszból a megadott lekérdezés megválaszolásával kapcsolatban. A szokásos visszakeresési lánc nem képes mélységgel vagy kontextuális betekintéssel megragadni az árnyalatokat, esetleg hiányoznak a dokumentum kritikus aspektusai.
Parent Document Retriever kimenet Az AWS (Amazon Web Services) az Elastic Compute Cloud (EC2) szolgáltatás 2006-os kezdeti, szolgáltatásokban szegényes elindításával indult, és csak egy példányméretet biztosított egyetlen adatközpontban, a világ egy régiójában, csak Linux operációs rendszer példányokkal. , és számos olyan kulcsfontosságú szolgáltatás nélkül, mint a figyelés, a terheléselosztás, az automatikus méretezés vagy az állandó tárolás. Az AWS sikere azonban lehetővé tette számukra, hogy gyorsan megismételhessék és hozzáadhassák a hiányzó képességeket, végül kibővültek a számítási, tárolási és hálózatépítési lehetőségek különféle ízeivel, méreteivel és optimalizálásával, valamint saját chipjeik (Graviton) fejlesztésével az ár és a teljesítmény további növelése érdekében. . Az AWS iteratív innovációs folyamata 20 éven keresztül jelentős befektetéseket igényelt a pénzügyi és emberi erőforrásokba, gyakran jóval a megtérülés előtt, hogy megfeleljen az ügyfelek igényeinek, és javítsa a hosszú távú vásárlói élményt, a hűséget és a részvényesek megtérülését. Az Amazon azért sikeres, mert képes folyamatosan újítani, alkalmazkodni a változó piaci feltételekhez, és megfelel a vásárlói igényeknek a különböző piaci szegmensekben. Ez nyilvánvaló az Amazon Business sikerében, amely nagyjából 35 milliárd dollár éves bruttó eladásra nőtt azáltal, hogy választékot, értéket és kényelmet kínál az üzleti ügyfeleknek. Az Amazon e-kereskedelmi és logisztikai képességeibe való befektetései olyan szolgáltatások létrehozását is lehetővé tették, mint a Buy with Prime, amely segíti a kereskedőket közvetlenül a fogyasztóknak szánt webhelyekkel, hogy a megtekintésekről a vásárlásokká váljanak. Az anyadokumentum-lekérő mélyebbre ás az AWS növekedési stratégiájának sajátosságaiban, beleértve az új funkciók iteratív hozzáadásának folyamatát az ügyfelek visszajelzései alapján, valamint a funkciókban szegény kezdeti bevezetéstől a domináns piaci pozícióig vezető részletes utat, miközben kontextusban gazdag választ ad. . A válaszok sokféle szempontot lefednek, a technikai innovációktól és a piaci stratégiától a szervezeti hatékonyságig és az ügyfélközpontúságig, példákkal együtt holisztikus képet adva a sikerhez hozzájáruló tényezőkről. Ez a szülő dokumentum-visszakereső célzott, mégis széles körű keresési képességeinek tudható be.
LLM Chain Extractor: kontextuális tömörítési kimenet Az AWS úgy fejlődött ki, hogy egy kis projektként indult az Amazonon belül, amely jelentős tőkebefektetést igényelt, és szkepticizmussal szembesült a vállalaton belül és kívül egyaránt. Az AWS azonban előnyt szerzett a potenciális versenytársakkal szemben, és hitt abban, hogy milyen értéket hozhat az ügyfelek és az Amazon számára. Az AWS hosszú távú kötelezettséget vállalt a befektetések folytatása mellett, aminek eredményeként 3,300-ben több mint 2022 új funkciót és szolgáltatást vezettek be. Az AWS átalakította az ügyfelek technológiai infrastruktúrájának kezelését, és 85 milliárd dolláros éves bevételi kamatlábú vállalkozássá vált, amely erős jövedelmezőséggel rendelkezik. Az AWS emellett folyamatosan fejlesztette kínálatát, például az EC2-t a kezdeti bevezetést követően további funkciókkal és szolgáltatásokkal bővítette. A megadott kontextus alapján az Amazon sikere a könyvértékesítő platformról egy élénk külső eladói ökoszisztémával rendelkező globális piactérré, az AWS-be való korai befektetésnek, a Kindle és az Alexa bevezetésének innovációjának, valamint a jelentős növekedésnek tudható be. Ez a növekedés a teljesítési központok lábnyomának bővítéséhez, egy utolsó mérföldes szállítási hálózat létrehozásához és egy új válogatóközpont-hálózat kiépítéséhez vezetett, amelyeket a termelékenység és a költségcsökkentés érdekében optimalizáltak. Az LLM láncelszívó egyensúlyt tart a kulcspontok átfogó lefedése és a szükségtelen mélység elkerülése között. Dinamikusan alkalmazkodik a lekérdezés környezetéhez, így a kimenet közvetlenül releváns és átfogó.
LLM láncszűrő: kontextuális tömörítési kimenet Az AWS (Amazon Web Services) úgy fejlődött ki, hogy kezdetben gyenge szolgáltatást indított, de az ügyfelek visszajelzései alapján gyorsan ismétlődött a szükséges képességek hozzáadása érdekében. Ez a megközelítés lehetővé tette az AWS számára, hogy 2-ban elindítsa az EC2006-t korlátozott funkciókkal, majd folyamatosan új funkciókat adjon hozzá, például további példányméreteket, adatközpontokat, régiókat, operációs rendszer-beállításokat, megfigyelőeszközöket, terheléselosztást, automatikus skálázást és állandó tárolást. Az idő múlásával az AWS a szolgáltatásokban szegény szolgáltatásból több milliárd dolláros üzletté változott azáltal, hogy az ügyfelek igényeire, az agilitásra, az innovációra, a költséghatékonyságra és a biztonságra összpontosított. Az AWS most 85 milliárd dolláros éves bevételi rátával rendelkezik, és évente több mint 3,300 új funkciót és szolgáltatást kínál, az induló vállalkozásoktól a multinacionális vállalatokig és a közszféra szervezeteiig az ügyfelek széles körét kiszolgálva. Az Amazon sikeres innovatív üzleti modelljeinek, folyamatos technológiai fejlődésének és stratégiai szervezeti változásainak köszönhetően. A vállalat folyamatosan megzavarta a hagyományos iparágakat új ötletek bevezetésével, például különféle termékek és szolgáltatások e-kereskedelmi platformját, harmadik fél piacterét, felhő infrastrukturális szolgáltatásokat (AWS), Kindle e-olvasót és Alexa hangvezérelt személyi asszisztenst. . Ezenkívül az Amazon strukturális változtatásokat hajtott végre hatékonyságának javítása érdekében, például átszervezte egyesült államokbeli teljesítési hálózatát a költségek és a szállítási idők csökkentése érdekében, ami tovább járult sikeréhez. Az LLM lánckivonóhoz hasonlóan az LLM láncszűrő gondoskodik arról, hogy bár a kulcspontok le vannak fedve, a kimenet hatékony legyen a tömör és kontextus szerinti válaszokat kereső ügyfelek számára.

Ha összehasonlítjuk ezeket a különböző technikákat, láthatjuk, hogy olyan összefüggésekben, mint például az AWS egyszerű szolgáltatásból egy összetett, több milliárd dolláros entitásra való átállásának részletezése vagy az Amazon stratégiai sikereinek magyarázata, a normál retriever láncból hiányzik a kifinomultabb technikák által kínált precizitás. ami kevésbé célzott információhoz vezet. Bár nagyon kevés különbség látható a tárgyalt fejlett technikák között, sokkal informatívabbak, mint a hagyományos retriever láncok.

Az olyan iparágakban, mint az egészségügy, a telekommunikáció és a pénzügyi szolgáltatások területén tevékenykedő ügyfelek számára, akik az RAG alkalmazását szeretnék megvalósítani, a rendszeres retriever lánc korlátai a pontosság, a redundancia elkerülése és az információk hatékony tömörítése terén kevésbé alkalmasak ezen igények kielégítésére. a fejlettebb szülő dokumentum-visszakereső és kontextus szerinti tömörítési technikákhoz. Ezek a technikák hatalmas mennyiségű információt képesek az Ön számára szükséges koncentrált, hatásos betekintést nyerni, miközben hozzájárulnak az ár-teljesítmény javításához.

Tisztítsuk meg

Ha végzett a jegyzetfüzet futtatásával, törölje a létrehozott erőforrásokat, hogy elkerülje a használatban lévő erőforrások miatti költségek felhalmozódását:

# Delete resources
llm_predictor.delete_model()
llm_predictor.delete_endpoint()
embedding_predictor.delete_model()
embedding_predictor.delete_endpoint()

Következtetés

Ebben a bejegyzésben bemutattunk egy olyan megoldást, amely lehetővé teszi a szülő dokumentum-visszakereső és a kontextuális tömörítési lánc technikák megvalósítását az LLM-ek információfeldolgozási és -generálási képességének javítása érdekében. Ezeket a fejlett RAG technikákat a SageMaker JumpStarttal elérhető Mixtral-8x7B Instruct és BGE Large En modellekkel teszteltük. Megvizsgáltuk a tartós tárolást a beágyazásokhoz és a dokumentumdarabokhoz, valamint a vállalati adattárolókkal való integrációt is.

Az általunk végrehajtott technikák nemcsak finomítják az LLM-modellek külső tudás elérésének és beépítésének módját, hanem jelentősen javítják outputjaik minőségét, relevanciáját és hatékonyságát is. A nagy szövegkorpusokból történő visszakeresés és a nyelvgenerálási képességek kombinálásával ezek a fejlett RAG technikák lehetővé teszik az LLM-ek számára, hogy tényszerűbb, koherensebb és kontextusnak megfelelőbb válaszokat adjanak, javítva a teljesítményüket a különböző természetes nyelvi feldolgozási feladatok során.

A SageMaker JumpStart a megoldás középpontjában áll. A SageMaker JumpStart segítségével a nyílt és zárt forráskódú modellek széles választékához férhet hozzá, leegyszerűsítve az ML használatának megkezdésének folyamatát, és lehetővé téve a gyors kísérletezést és telepítést. A megoldás telepítésének megkezdéséhez navigáljon a notebookhoz a GitHub repo.


A szerzőkről

Niithiyn Vijeaswaran az AWS megoldási építésze. Fókusza a generatív AI és az AWS AI-gyorsítók. Számítástechnika és bioinformatika szakon szerzett alapdiplomát. Niithiyn szorosan együttműködik a Generative AI GTM csapatával annak érdekében, hogy az AWS-ügyfelek több fronton is elérhetővé váljanak, és felgyorsítsa a generatív AI alkalmazását. Lelkes rajongója a Dallas Mavericksnek, és szívesen gyűjti a tornacipőket.

Sebastian Bustillo az AWS megoldási építésze. Az AI/ML technológiákra összpontosít, mély szenvedéllyel a generatív AI és a számítási gyorsítók iránt. Az AWS-nél segít az ügyfeleknek felszabadítani az üzleti értéket a generatív mesterségesintelligencia révén. Amikor nem dolgozik, szívesen főz egy tökéletes csésze különleges kávét, és feleségével fedezi fel a világot.

Armando Diaz az AWS megoldási építésze. Középpontjában a generatív AI, az AI/ML és az adatelemzés áll. Az AWS-nél az Armando segít az ügyfeleknek a legkorszerűbb generatív AI-képességek rendszereikbe való integrálásában, elősegítve az innovációt és a versenyelőnyt. Amikor nem dolgozik, szívesen tölt időt feleségével és családjával, túrázik és utazik a világban.

Dr. Farooq Sabir az AWS mesterséges intelligenciával és gépi tanulással foglalkozó megoldásokkal foglalkozó vezető építésze. Az austini Texasi Egyetemen szerzett PhD és MS fokozatot villamosmérnöki szakon, valamint MS fokozatot számítástechnikából a Georgia Institute of Technology-n. Több mint 15 éves munkatapasztalattal rendelkezik, és szeret főiskolai hallgatókat tanítani és mentorálni. Az AWS-nél segít az ügyfeleknek üzleti problémáik megfogalmazásában és megoldásában az adattudomány, a gépi tanulás, a számítógépes látás, a mesterséges intelligencia, a numerikus optimalizálás és a kapcsolódó területeken. A texasi Dallasban él, és családjával szeretnek utazni és hosszú utazásokra mennek.

Marco Punio egy Solutions Architect, aki a generatív AI-stratégiára, az alkalmazott mesterségesintelligencia-megoldásokra összpontosít, és kutatásokat végez annak érdekében, hogy segítse az ügyfeleket az AWS-ben való hiperskálázásban. Marco egy digitális natív felhő tanácsadó, aki tapasztalattal rendelkezik a FinTech, Healthcare & Life Sciences, Software as-a-service, és legutóbb a távközlési iparágak területén. Képzett technológus, szenvedélye a gépi tanulás, a mesterséges intelligencia, valamint a fúziók és felvásárlások. Marco székhelye Seattle, WA, és szabadidejében szeret írni, olvasni, gyakorolni és alkalmazásokat készíteni.

AJ Dhimine az AWS megoldási építésze. Szakterülete a generatív mesterséges intelligencia, a szerver nélküli számítástechnika és az adatelemzés. A Machine Learning Technical Field Community aktív tagja/mentora, és számos tudományos közleményt publikált különböző AI/ML témában. Az induló vállalkozásoktól a vállalkozásokig ügyfelekkel dolgozik az AWSome generatív AI-megoldások kifejlesztésén. Különösen szenvedélyes a nagy nyelvi modellek kihasználása a fejlett adatelemzés érdekében, és olyan gyakorlati alkalmazások feltárása, amelyek a valós kihívásokat kezelik. A munkán kívül AJ szívesen utazik, és jelenleg 53 országban tartózkodik azzal a céllal, hogy a világ minden országát meglátogassa.

spot_img

Legújabb intelligencia

spot_img

Beszélj velünk

Szia! Miben segíthetek?