Hogyan használjuk a Parent Document Retriever programot a LangChainben?

Hogyan Hasznaljuk A Parent Document Retriever Programot A Langchainben



A LangChain keretrendszer lehetővé teszi a fejlesztők számára, hogy olyan nagy nyelvi modelleket építsenek, amelyek képesek megérteni és természetes nyelvű szöveget generálni. A LangChain modellek hatalmas mennyiségű adatra vannak kiképezve, így a modell képes megérteni a nyelvet azáltal, hogy az adatokat vektortárolókban tárolja. Lehetővé teszi a felhasználó számára, hogy olyan retrievereket építsen, amelyek adatokat kinyerhetnek az adatbázisból vagy a vektortárakból a modellhez tárolt összes adattal.

Ez a bejegyzés bemutatja a szülő dokumentum-visszakereső használatának folyamatát a LangChainben.

Hogyan használjunk szülői dokumentum-visszakeresőt a LangChainben?

A LangChain szülő dokumentum-visszakeresője úgy használható, hogy a dokumentumokat kisebb darabokra bontja, így nem veszítik el értelmüket a beágyazás pillanatában. A szülődokumentumról azt mondhatjuk, hogy az egész dokumentum vagy az a nagyobb darab, amelyből a kisebb darabokat kivonják.







A szülő dokumentum-visszakereső használatának folyamatának megismeréséhez a LangChainben egyszerűen tekintse meg ezt az útmutatót:



1. lépés: Modulok telepítése



Először kezdje el a szülő dokumentum-visszakereső használatát a LangChain keretrendszer telepítésével a pip paranccsal:





pip install langchain

Telepítse a Chroma adatbázis modult a dokumentum beágyazásának mentéséhez és az adatok lekéréséhez:



pip install chromadb

A tiktoken telepítéséhez, amely egy tokenizátor, amely kis darabok létrehozásával kapja meg a dokumentum tokenjeit:

pip install tiktoken

Szerezze be az OpenAI modult a következő parancs végrehajtásával a Python notebookon a függőségek és könyvtárak lekéréséhez:

pip install openai

2. lépés: A környezet beállítása és az adatok feltöltése

A következő lépés az állítsa be a környezetet az OpenAI-fiók API-kulcsának használatával:

import te
import getpass

te . hozzávetőlegesen, körülbelül [ 'OPENAI_API_KEY' ] = getpass . getpass ( 'OpenAI API kulcs:' )

Most töltse fel a dokumentumokat a helyi rendszerről a fájlkönyvtár importálása után, majd hívja meg az upload() metódust:

tól től Google. ET AL import fájlokat
feltöltve = fájlokat. feltölteni ( )

3. lépés: Importáljon könyvtárakat

A következő lépés tartalmazza a szükséges könyvtárak importálásához szükséges kódot a szülő dokumentum-visszakeresők használatához a LangChain keretrendszer használatával:

tól től langchain. retrieverek import ParentDocumentRetriever
tól től langchain. vektortárak import Chroma
tól től langchain. beágyazások import OpenAIEembeddings
tól től langchain. text_splitter import RecursiveCharacterTextSplitter
tól től langchain. tárolás import InMemoryStore
tól től langchain. document_loaders import TextLoader

Töltse be a dokumentumot a visszakereső felépítéséhez a TextLoader() metódusokkal a fájlok elérési útjával:

rakodók = [
TextLoader ( 'Data.txt' ) ,
TextLoader ( 'state_of_the_union.txt' ) ,
]
dok = [ ]
számára l ban ben rakodók:

4. lépés: Teljes dokumentumok lekérése

Miután a dokumentumokat/fájlokat betöltötte a modellbe, egyszerűen készítse el a dokumentumok beágyazásait, és tárolja azokat a vektortárolókban:

gyerek_osztó = RecursiveCharacterTextSplitter ( chunk_size = 400 )

vektortár = Chroma (
gyűjtemény_neve = 'teljes_dokumentumok' ,
beágyazási_függvény = OpenAIEMbeddings ( )
)

bolt = InMemoryStore ( )
vizsla = ParentDocumentRetriever (
vektortár = vektortár ,
orvosi boltban = bolt ,
gyerek_osztó = gyerek_osztó ,
)

Most hívja meg az add_documents() metódust a retriever segítségével, hogy a retriever a dokumentumokhoz jusson:

vizsla. add_documents ( dok , azonosítók = Egyik sem )

A következő kód kibontja a feltöltött fájlok adatbázisában tárolt dokumentumok beágyazásait:

lista ( bolt. hozam_kulcsok ( ) )

Miután megkapta a dokumentumok beágyazását, hívja meg a hasonlóság_search() metódust a lekérdezéssel, hogy a kis darabokat megkapja a dokumentumból:

sub_docs = vektortár. Hasonlóság_keresés ( 'igazságügyi breyer' )

Hívja meg a print() metódust az előző kódban meghívott darabok megjelenítéséhez a lekérdezés alapján:

nyomtatás ( sub_docs [ 0 ] . page_content )

Hívja meg a teljes retriever() függvényt az adatbázisban tárolt összes token lekéréséhez a következő kóddal:

letöltött_dokumentumok = vizsla. get_relevant_documents ( 'igazságügyi breyer' )

Az összes dokumentum kinyomtatása hatalmas időt és feldolgozási energiát igényelne, ezért egyszerűen csak annyi dokumentumot kérjen le, amennyit korábban letöltött:

csak ( letöltött_dokumentumok [ 0 ] . page_content )

5. lépés: Nagyobb darabok lekérése

Ez a lépés nem érinti a teljes dokumentumot; azonban egy nagyobb mókust venne ki a dokumentumból, és egy kisebb darabot kapna le belőle:

parent_splitter = RecursiveCharacterTextSplitter ( chunk_size = 2000 )
gyerek_osztó = RecursiveCharacterTextSplitter ( chunk_size = 400 )
vektortár = Chroma ( gyűjtemény_neve = 'split_parents' , beágyazási_függvény = OpenAIEembeddings ( ) )
bolt = InMemoryStore ( )

Állítsa be a retrievert úgy, hogy a kisebb tokent kapja meg a „ vektortár ” változó:

vizsla = ParentDocumentRetriever (
vektortár = vektortár ,
orvosi boltban = bolt ,
gyerek_osztó = gyerek_osztó ,
parent_splitter = parent_splitter ,
)

Hívja a retrievert, hogy a nagyobb darabokat a vektortárakból szerezze be a dok változó a függvény argumentumában:

vizsla. add_documents ( dok )

A dokumentumok hosszát a dok változó az alábbi paranccsal:

csak ( lista ( bolt. hozam_kulcsok ( ) ) )

Egyszerűen vegyen ki egy kisebb darabot egy nagyobbból, mivel az előző képernyőkép azt mutatja, hogy 23 dokumentum van a vektortárban tárolva. A lekérdezés a releváns adatok lekérésére szolgál a Hasonlóság_keresés() módszer az adatok lekérésére a vektortárból:

sub_docs = vektortár. Hasonlóság_keresés ( 'igazságügyi breyer' )

Nyomtassa ki a kisebb darabokat az előző kódban említett lekérdezéssel, hogy megjelenjenek a képernyőn:

nyomtatás ( sub_docs [ 0 ] . page_content )

Most használja a retrievert az adatbázisban tárolt teljes adatkészleten, a lekérdezést a függvény argumentumaként:

letöltött_dokumentumok = vizsla. get_relevant_documents ( 'igazságügyi breyer' )

Nézze meg az adatbázisban létrehozott és tárolt teljes darabok hosszát:

csak ( letöltött_dokumentumok [ 0 ] . page_content )

Nem tudjuk megjeleníteni az összes darabot, de az első 0 indexszámú darab a következő kóddal jelenik meg:

nyomtatás ( letöltött_dokumentumok [ 0 ] . page_content

Ez minden a szülő dokumentum-visszakereső használatának folyamatáról szól a LangChainben.

Következtetés

A szülő dokumentum-visszakereső használatához a LangChainben egyszerűen telepítse a modulokat, és állítsa be az OpenAI környezetet az API-kulcsával. Ezt követően importálja a szükséges könyvtárakat a LangChainből a szülő dokumentum-visszakereső használatához, majd töltse be a modell dokumentumait. A felhasználó használhatja a szülő dokumentumokat a teljes dokumentumként vagy a nagy darabként, és a lekérdezés segítségével kaphat egy kisebb részt. Ez a bejegyzés részletesen bemutatja a szülő dokumentum-visszakereső használatának folyamatát a LangChainben.