ఈ పోస్ట్ LangChainలో పేరెంట్ డాక్యుమెంట్ రిట్రీవర్ని ఉపయోగించే ప్రక్రియను ప్రదర్శిస్తుంది.
LangChainలో పేరెంట్ డాక్యుమెంట్ రిట్రీవర్ని ఎలా ఉపయోగించాలి?
పత్రాలను చిన్న భాగాలుగా విభజించడం ద్వారా లాంగ్చెయిన్లోని పేరెంట్ డాక్యుమెంట్ రిట్రీవర్ని ఉపయోగించవచ్చు కాబట్టి అవి పొందుపరిచే సమయంలో వాటి అర్థాన్ని కోల్పోవు. మాతృ పత్రం మొత్తం పత్రం లేదా చిన్న భాగాలు సంగ్రహించబడిన పెద్ద భాగం అని చెప్పవచ్చు.
LangChainలో పేరెంట్ డాక్యుమెంట్ రిట్రీవర్ని ఉపయోగించే విధానాన్ని తెలుసుకోవడానికి, ఈ గైడ్ని చూడండి:
దశ 1: మాడ్యూల్లను ఇన్స్టాల్ చేయండి
ముందుగా, పిప్ ఆదేశాన్ని ఉపయోగించి LangChain ఫ్రేమ్వర్క్ను ఇన్స్టాల్ చేయడం ద్వారా పేరెంట్ డాక్యుమెంట్ రిట్రీవర్ను ఉపయోగించడం ప్రారంభించండి:
పిప్ ఇన్స్టాల్ లాంగ్చెయిన్
డాక్యుమెంట్ యొక్క ఎంబెడ్డింగ్లను సేవ్ చేయడానికి మరియు దాని నుండి డేటాను తిరిగి పొందడానికి క్రోమా డేటాబేస్ మాడ్యూల్ను ఇన్స్టాల్ చేయండి:
pip chromadbని ఇన్స్టాల్ చేస్తుంది
చిన్న భాగాలను సృష్టించడం ద్వారా పత్రం యొక్క టోకెన్లను పొందే టోకెనైజర్ అయిన టిక్టోకెన్ను ఇన్స్టాల్ చేయడానికి:
pip tiktoken ఇన్స్టాల్
దాని డిపెండెన్సీలు మరియు లైబ్రరీలను పొందడానికి పైథాన్ నోట్బుక్పై కింది ఆదేశాన్ని అమలు చేయడం ద్వారా OpenAI మాడ్యూల్ను పొందండి:
pip ఇన్స్టాల్ openai
దశ 2: పర్యావరణాన్ని సెటప్ చేయండి & డేటాను అప్లోడ్ చేయండి
తదుపరి దశ పర్యావరణాన్ని ఏర్పాటు చేయండి OpenAI ఖాతా నుండి API కీని ఉపయోగించడం:
దిగుమతి మీరుదిగుమతి getpass
మీరు . సుమారు [ 'OPENAI_API_KEY' ] = getpass . getpass ( 'OpenAI API కీ:' )
ఇప్పుడు, ఫైల్స్ లైబ్రరీని దిగుమతి చేసిన తర్వాత స్థానిక సిస్టమ్ నుండి పత్రాలను అప్లోడ్ చేసి, ఆపై అప్లోడ్() పద్ధతికి కాల్ చేయండి:
నుండి గూగుల్. ఎప్పటికి దిగుమతి ఫైళ్లుఅప్లోడ్ చేయబడింది = ఫైళ్లు. అప్లోడ్ ( )
దశ 3: లైబ్రరీలను దిగుమతి చేయండి
తదుపరి దశలో LangChain ఫ్రేమ్వర్క్ని ఉపయోగించి పేరెంట్ డాక్యుమెంట్ రిట్రీవర్లను ఉపయోగించడం కోసం అవసరమైన లైబ్రరీలను దిగుమతి చేసుకోవడానికి కోడ్ ఉంటుంది:
నుండి లాంగ్చైన్. రిట్రీవర్లు దిగుమతి పేరెంట్ డాక్యుమెంట్ రిట్రీవర్నుండి లాంగ్చైన్. వెక్టర్ స్టోర్లు దిగుమతి క్రోమా
నుండి లాంగ్చైన్. పొందుపరచడం దిగుమతి OpenAIEmbeddings
నుండి లాంగ్చైన్. టెక్స్ట్_స్ప్లిటర్ దిగుమతి రికర్సివ్ క్యారెక్టర్ టెక్స్ట్ స్ప్లిటర్
నుండి లాంగ్చైన్. నిల్వ దిగుమతి InMemoryStore
నుండి లాంగ్చైన్. డాక్యుమెంట్_లోడర్లు దిగుమతి టెక్స్ట్లోడర్
ఫైల్ల మార్గంతో TextLoader() పద్ధతులను ఉపయోగించి రిట్రీవర్ను రూపొందించడానికి పత్రాన్ని లోడ్ చేయండి:
లోడర్లు = [టెక్స్ట్లోడర్ ( 'Data.txt' ) ,
టెక్స్ట్లోడర్ ( 'state_of_the_union.txt' ) ,
]
డాక్స్ = [ ]
కోసం ఎల్ లో లోడర్లు:
దశ 4: పూర్తి పత్రాలను తిరిగి పొందడం
డాక్యుమెంట్లు/ఫైళ్లు మోడల్కి లోడ్ అయిన తర్వాత, డాక్యుమెంట్ల ఎంబెడ్డింగ్లను రూపొందించి, వాటిని వెక్టర్ స్టోర్లలో నిల్వ చేయండి:
చైల్డ్_స్ప్లిటర్ = రికర్సివ్ క్యారెక్టర్ టెక్స్ట్ స్ప్లిటర్ ( భాగం_పరిమాణం = 400 )వెక్టర్ స్టోర్ = క్రోమా (
సేకరణ_పేరు = 'పూర్తి_పత్రాలు' ,
ఎంబెడ్డింగ్_ఫంక్షన్ = OpenAIEmbeddings ( )
)
స్టోర్ = InMemoryStore ( )
రిట్రీవర్ = పేరెంట్ డాక్యుమెంట్ రిట్రీవర్ (
వెక్టర్ స్టోర్ = వెక్టర్ స్టోర్ ,
వైద్యశాల = స్టోర్ ,
చైల్డ్_స్ప్లిటర్ = చైల్డ్_స్ప్లిటర్ ,
)
ఇప్పుడు, రిట్రీవర్ని డాక్యుమెంట్లకు పొందడానికి రిట్రీవర్ని ఉపయోగించి add_documents() పద్ధతికి కాల్ చేయండి:
రిట్రీవర్. add_documents ( డాక్స్ , idలు = ఏదీ లేదు )కింది కోడ్ అప్లోడ్ చేసిన ఫైల్ల కోసం డేటాబేస్లో నిల్వ చేయబడిన పత్రాల ఎంబెడ్డింగ్లను సంగ్రహిస్తుంది:
జాబితా ( స్టోర్. దిగుబడి_కీలు ( ) )
డాక్యుమెంట్ల ఎంబెడ్డింగ్లను పొందిన తర్వాత, పత్రం నుండి చిన్న భాగాలను పొందడానికి ప్రశ్నతో సారూప్యత_శోధన() పద్ధతికి కాల్ చేయండి:
ఉప_డాక్స్ = వెక్టర్ స్టోర్. సారూప్యత_శోధన ( 'న్యాయం బ్రేయర్' )ప్రశ్న ఆధారంగా మునుపటి కోడ్లో పిలిచిన భాగాలను ప్రదర్శించడానికి ప్రింట్() పద్ధతికి కాల్ చేయండి:
ముద్రణ ( ఉప_డాక్స్ [ 0 ] . పేజీ_కంటెంట్ )
కింది కోడ్ని ఉపయోగించి డేటాబేస్లో నిల్వ చేయబడిన అన్ని టోకెన్లను పొందడానికి పూర్తి రిట్రీవర్() ఫంక్షన్కు కాల్ చేయండి:
రిట్రీవ్డ్_డాక్స్ = రిట్రీవర్. సంబంధిత_పత్రాలను పొందండి ( 'న్యాయం బ్రేయర్' )అన్ని డాక్యుమెంట్లను ప్రింట్ చేయడానికి భారీ సమయం మరియు ప్రాసెసింగ్ పవర్ పడుతుంది, కాబట్టి మునుపు తిరిగి పొందిన డాక్యుమెంట్ల నిడివిని పొందండి:
మాత్రమే ( రిట్రీవ్డ్_డాక్స్ [ 0 ] . పేజీ_కంటెంట్ )
దశ 5: పెద్ద భాగాలను తిరిగి పొందడం
ఈ దశ మొత్తం పత్రాన్ని తీసుకోదు; అయినప్పటికీ, ఇది పత్రం నుండి పెద్ద చిప్మంక్ని తీసుకుంటుంది మరియు దాని నుండి చిన్న భాగాన్ని తిరిగి పొందుతుంది:
పేరెంట్_స్ప్లిటర్ = రికర్సివ్ క్యారెక్టర్ టెక్స్ట్ స్ప్లిటర్ ( భాగం_పరిమాణం = 2000 )చైల్డ్_స్ప్లిటర్ = రికర్సివ్ క్యారెక్టర్ టెక్స్ట్ స్ప్లిటర్ ( భాగం_పరిమాణం = 400 )
వెక్టర్ స్టోర్ = క్రోమా ( సేకరణ_పేరు = 'స్ప్లిట్_పేరెంట్స్' , ఎంబెడ్డింగ్_ఫంక్షన్ = OpenAIEmbeddings ( ) )
స్టోర్ = InMemoryStore ( )
' వెక్టర్ స్టోర్ ”వేరియబుల్:
రిట్రీవర్ = పేరెంట్ డాక్యుమెంట్ రిట్రీవర్ (వెక్టర్ స్టోర్ = వెక్టర్ స్టోర్ ,
వైద్యశాల = స్టోర్ ,
చైల్డ్_స్ప్లిటర్ = చైల్డ్_స్ప్లిటర్ ,
పేరెంట్_స్ప్లిటర్ = పేరెంట్_స్ప్లిటర్ ,
)
వెక్టర్ స్టోర్ల నుండి పెద్ద భాగాలను పొందడానికి రిట్రీవర్కు కాల్ చేయండి డాక్స్ ఫంక్షన్ యొక్క వాదనలో వేరియబుల్:
రిట్రీవర్. add_documents ( డాక్స్ )నుండి ఈ పత్రాల పొడవును పొందండి డాక్స్ కింది ఆదేశం ద్వారా వేరియబుల్:
మాత్రమే ( జాబితా ( స్టోర్. దిగుబడి_కీలు ( ) ) )
వెక్టార్ స్టోర్లో 23 డాక్యుమెంట్లు స్టోర్ చేయబడినట్లు మునుపటి స్క్రీన్షాట్ డిస్ప్లే చేస్తున్నందున పెద్ద దాని నుండి చిన్న భాగాన్ని పొందండి. ప్రశ్నను ఉపయోగించి సంబంధిత డేటాను పొందడానికి ఉపయోగించబడుతుంది సారూప్యత_శోధన() వెక్టర్ స్టోర్ నుండి డేటాను తిరిగి పొందే పద్ధతి:
ఉప_డాక్స్ = వెక్టర్ స్టోర్. సారూప్యత_శోధన ( 'న్యాయం బ్రేయర్' )స్క్రీన్పై ప్రదర్శించడానికి మునుపటి కోడ్లో పేర్కొన్న ప్రశ్నను ఉపయోగించి చిన్న భాగాలను ప్రింట్ చేయండి:
ముద్రణ ( ఉప_డాక్స్ [ 0 ] . పేజీ_కంటెంట్ )
ఇప్పుడు, ఫంక్షన్ యొక్క ఆర్గ్యుమెంట్గా ప్రశ్నను ఉపయోగించి డేటాబేస్లో నిల్వ చేయబడిన పూర్తి డేటాసెట్లో రిట్రీవర్ను ఉపయోగించండి:
రిట్రీవ్డ్_డాక్స్ = రిట్రీవర్. సంబంధిత_పత్రాలను పొందండి ( 'న్యాయం బ్రేయర్' )డేటాబేస్లో సృష్టించబడిన మరియు నిల్వ చేయబడిన పూర్తి భాగాల పొడవును పొందండి:
మాత్రమే ( రిట్రీవ్డ్_డాక్స్ [ 0 ] . పేజీ_కంటెంట్ )
మేము అన్ని భాగాలను ప్రదర్శించలేము, కానీ సూచిక సంఖ్య 0తో మొదటి భాగం క్రింది కోడ్ని ఉపయోగించి ప్రదర్శించబడుతుంది:
ముద్రణ ( రిట్రీవ్డ్_డాక్స్ [ 0 ] . పేజీ_కంటెంట్
LangChainలో పేరెంట్ డాక్యుమెంట్ రిట్రీవర్ని ఉపయోగించే ప్రక్రియ గురించి అంతే.
ముగింపు
LangChainలో పేరెంట్ డాక్యుమెంట్ రిట్రీవర్ని ఉపయోగించడానికి, మాడ్యూల్లను ఇన్స్టాల్ చేసి, దాని API కీని ఉపయోగించి OpenAI వాతావరణాన్ని సెటప్ చేయండి. ఆ తర్వాత, పేరెంట్ డాక్యుమెంట్ రిట్రీవర్ని ఉపయోగించడం కోసం LangChain నుండి అవసరమైన లైబ్రరీలను దిగుమతి చేయండి, ఆపై మోడల్ కోసం డాక్యుమెంట్లను లోడ్ చేయండి. వినియోగదారు పేరెంట్ డాక్యుమెంట్లను మొత్తం డాక్యుమెంట్గా లేదా పెద్ద భాగం వలె ఉపయోగించవచ్చు మరియు ప్రశ్నను ఉపయోగించి చిన్న భాగాన్ని పొందవచ్చు. ఈ పోస్ట్ LangChainలో పేరెంట్ డాక్యుమెంట్ రిట్రీవర్ని ఉపయోగించే ప్రక్రియను వివరించింది.