కాషింగ్ అనేది మోడల్ నుండి అత్యంత ఇటీవలి లేదా తరచుగా ఉపయోగించిన డేటాను నిల్వ చేయడం మరియు పొందడం, కాబట్టి ఇది అన్ని సమయాలలో తిరిగి గణించాల్సిన అవసరం లేదు. పాఠ్య డేటాను సంఖ్యలుగా మార్చడానికి టెక్స్ట్ ఎంబెడ్డింగ్లను ఉపయోగించవచ్చు మరియు దానికి కాషింగ్ టెక్నిక్లను వర్తింపజేయడం మోడల్ సామర్థ్యాన్ని మెరుగుపరుస్తుంది. CacheBackedEmbeddings లైబ్రరీని ఉపయోగించి కాషింగ్ మోడల్ను రూపొందించడానికి LangChain డెవలపర్లను అనుమతిస్తుంది.
ఈ పోస్ట్ LangChainలో కాషింగ్తో పని చేసే విధానాన్ని ప్రదర్శిస్తుంది.
లాంగ్చెయిన్లో కాషింగ్తో ఎలా పని చేయాలి?
టెక్స్ట్ ఎంబెడ్డింగ్ మోడల్లలో లాంగ్చెయిన్లో కాషింగ్ అనేది వెక్టర్ స్టోర్, ఇన్-మెమరీ డేటా లేదా ఫైల్ సిస్టమ్ల నుండి డేటాను ఉపయోగించడం వంటి విభిన్న డేటాసెట్ల ద్వారా ఉపయోగించబడుతుంది. కాష్ పద్ధతులను వర్తింపజేయడం వలన అవుట్పుట్ త్వరగా పొందవచ్చు మరియు మోడల్ డేటాపై సారూప్యత శోధనలను మరింత ప్రభావవంతంగా వర్తింపజేయవచ్చు.
LangChainలో కాషింగ్తో పని చేసే ప్రక్రియను తెలుసుకోవడానికి, జాబితా చేయబడిన దశలను అనుసరించండి:
దశ 1: మాడ్యూల్స్ను ఇన్స్టాల్ చేయండి
ముందుగా, అవసరమైన మోడల్లను ఇన్స్టాల్ చేయడం ద్వారా కాషింగ్తో పని చేసే ప్రక్రియను ప్రారంభించండి, ఇక్కడ మొదటిది లాంగ్చెయిన్ ప్రాసెస్ కోసం అవసరమైన అన్ని లైబ్రరీలను కలిగి ఉంటుంది:
పిప్ ఇన్స్టాల్ లాంగ్చైన్
వినియోగదారు అందించిన ఇన్పుట్ ఆధారంగా అవుట్పుట్ను సంగ్రహించడం లేదా ఉత్పత్తి చేయడం కోసం సారూప్యత శోధనను నిర్వహించడానికి FAISS మాడ్యూల్ అవసరం:
పిప్ ఇన్స్టాల్ faiss-gpu
ఈ గైడ్ కోసం ఇన్స్టాల్ చేయడానికి అవసరమైన చివరి మాడ్యూల్ OpenAI, ఇది OpenAIEmbeddings() పద్ధతిని ఉపయోగించి డేటా యొక్క ఎంబెడ్డింగ్లను సృష్టించడానికి ఉపయోగించవచ్చు:
పిప్ ఇన్స్టాల్ ఓపెనై
అన్ని మాడ్యూల్ల ఇన్స్టాలేషన్ తర్వాత, ఓపెన్ఏఐ ఎన్విరాన్మెంట్ నుండి API కీని ఉపయోగించి పర్యావరణాన్ని సెటప్ చేయండి “ మీరు 'మరియు' getpass 'లైబ్రరీలు:
మమ్మల్ని దిగుమతి చేసుకోండిగెట్పాస్ని దిగుమతి చేయండి
os.environ [ 'OPENAI_API_KEY' ] = getpass.getpass ( 'OpenAI API కీ:' )
దశ 2: లైబ్రరీలను దిగుమతి చేసుకోవడం
సెటప్ పూర్తయిన తర్వాత, LangChainలో కాషింగ్ టెక్నిక్లతో పని చేయడానికి లైబ్రరీలను దిగుమతి చేయండి:
langchain.embeddings నుండి CacheBackedEmbeddings దిగుమతి
langchain.storage దిగుమతి LocalFileStore నుండి
langchain.embeddings నుండి OpenAIEmbeddings దిగుమతి
langchain.document_loaders నుండి TextLoaderని దిగుమతి చేయండి
langchain.embeddings.openai నుండి OpenAIEmbeddings దిగుమతి
langchain.text_splitter నుండి CharacterTextSplitter దిగుమతి
langchain.vectorstores నుండి FAISS దిగుమతి
దశ 3: బిల్డింగ్ కాషింగ్ మోడల్
లైబ్రరీలను దిగుమతి చేసిన తర్వాత, మోడల్ను రూపొందించడానికి మరియు వేరియబుల్లో నిల్వ చేయడానికి OpenAIEmbeddings() పద్ధతికి కాల్ చేయండి:
ఇప్పుడు, బహుళ ఆర్గ్యుమెంట్లతో LocalFileStore() పద్ధతి మరియు CacheBackedEmbeddings() పద్ధతులను ఉపయోగించి కాష్ని వర్తింపజేయండి:
fs = LocalFileStore ( './cache/' )cached_embedder = CacheBackedEmbeddings.from_bytes_store (
అంతర్లీన_పొందుబాటులు, fs, నేమ్స్పేస్ =underlying_embeddings.model
)
ఎంబెడ్డింగ్ల జాబితాను పొందండి మరియు ప్రస్తుతానికి, జాబితాలో పొందుపరిచినవి నిల్వ చేయబడనందున జాబితా ఖాళీగా ఉంది:
జాబితా ( fs. దిగుబడి_కీలు ( ) )
దశ 4: వెక్టర్ స్టోర్ని సృష్టిస్తోంది
ఫైల్స్ లైబ్రరీని ఉపయోగించి స్థానిక సిస్టమ్ నుండి ఫైల్ను పొందండి మరియు 'పై క్లిక్ చేయండి ఫైల్లను ఎంచుకోండి ” కోడ్ని అమలు చేసిన తర్వాత:
upload = ఫైల్స్.అప్లోడ్ ( )
ఇప్పుడు, పత్రం పేరుతో టెక్స్ట్లోడర్() పద్ధతిని ఉపయోగించి ఎంబెడ్డింగ్లను నిల్వ చేయడానికి ఉపయోగించే వెక్టర్ స్టోర్ను సృష్టించండి. ఆ తర్వాత, భాగాల పరిమాణంతో టెక్స్ట్ స్ప్లిటర్ పద్ధతులను వర్తింపజేయండి మరియు డేటాను చిన్న భాగాలుగా విభజించండి:
raw_documents = టెక్స్ట్లోడర్ ( 'state_of_the_union.txt' ) .లోడ్ ( )text_splitter = అక్షర టెక్స్ట్ స్ప్లిటర్ ( భాగం_పరిమాణం = 1000 , భాగం_అతివ్యాప్తి = 0 )
పత్రాలు = text_splitter.split_documents ( ముడి_పత్రాలు )
వచనాన్ని విభజించిన తర్వాత, డేటాను నిల్వ చేయండి db సారూప్యత శోధన పద్ధతిని ఉపయోగించి అవుట్పుట్ పొందడానికి FAISS లైబ్రరీని ఉపయోగించి వేరియబుల్:
db = FAISS.from_documents ( పత్రాలు, కాష్డ్_ఎంబెడర్ )
ఇప్పుడు, డేటాబేస్లో వాటిని నిల్వ చేసిన తర్వాత పొందుపరిచిన వాటి జాబితాను మళ్లీ పొందండి మరియు అవుట్పుట్ను 5 సూచికలకు మాత్రమే పరిమితం చేయండి:
జాబితా ( fs.yield_keys ( ) ) [ : 5 ]
దశ 5: ఇన్-మెమరీ కాషింగ్ ఉపయోగించడం
స్టోర్ వేరియబుల్ను నిర్వచించడానికి InMemoryStore() పద్ధతుల ద్వారా తదుపరి కాషింగ్ను ఉపయోగించవచ్చు:
OpenAIEmbeddings() మరియు CacheBackedEmbeddings() పద్ధతులను ఉపయోగించి మోడల్, స్టోర్ మరియు నేమ్స్పేస్ని దాని పారామీటర్లుగా ఉపయోగించి కాషింగ్ మోడల్ను రూపొందించండి:
underlying_embeddings = OpenAIEmbeddings ( )embedder = CacheBackedEmbeddings.from_bytes_store (
అంతర్లీన_ఎంబెడ్డింగ్లు, స్టోర్, నేమ్స్పేస్ =underlying_embeddings.model
)
డాక్యుమెంట్ నుండి డేటాను పొందడానికి కాష్ ఎంబెడ్డింగ్లను ఉపయోగించకుండా నిల్వ చేసిన డాక్యుమెంట్పై ఎంబెడ్డింగ్లను వర్తింపజేయండి:
embeddings = embedder.embed_documents ( [ 'హలో' , 'వీడ్కోలు' ] )ఇప్పుడు, డాక్యుమెంట్ల నుండి డేటాను త్వరగా పొందేందుకు ఎంబెడ్డింగ్లకు కాష్ని వర్తింపజేయండి:
embeddings_from_cache = embedder.embed_documents ( [ 'హలో' , 'వీడ్కోలు' ] )కాష్ ఎంబెడ్డింగ్లను ఎంబెడ్డింగ్ల వేరియబుల్లో నిల్వ చేయండి, కాబట్టి ఎంబెడ్డింగ్ల వేరియబుల్ కాష్ చేసిన ఎంబెడ్డింగ్లను నిల్వ చేస్తుంది:
ఎంబెడ్డింగ్లు == embeddings_from_cache
దశ 6: ఫైల్ సిస్టమ్ కాషింగ్ని ఉపయోగించడం
ఫైల్ సిస్టమ్ స్టోర్ని ఉపయోగించి test_cache డాక్యుమెంట్ నుండి ఎంబెడ్డింగ్లలో కాషింగ్ని వర్తింపజేయడానికి చివరి పద్ధతి:
పొందుపరిచే మోడల్, డేటా స్టోర్ మరియు నేమ్స్పేస్లను పారామీటర్లుగా CacheBackedEmbeddings() పద్ధతిని ఉపయోగించి పొందుపరచడం వర్తింపజేయండి:
embedder2 = CacheBackedEmbeddings.from_bytes_store (అంతర్లీన_పొందుబాటులు, fs, నేమ్స్పేస్ =underlying_embeddings.model
)
ఎంబెడర్() పద్ధతికి కాల్ చేయడానికి దానిలో నిల్వ చేయబడిన కాష్ చేసిన డేటాతో పొందుపరిచే వేరియబుల్ని ఉపయోగించండి:
embeddings = embedder2.embed_documents ( [ 'హలో' , 'వీడ్కోలు' ] )ఇప్పుడు పారామీటర్లుగా పేర్కొనబడిన పై రెండు ప్రపంచాల కోసం పొందుపరచడం పొందండి:
జాబితా ( fs.yield_keys ( ) )
లాంగ్చెయిన్లో కాషింగ్తో బిల్డింగ్ మరియు పని చేసే ప్రక్రియ గురించి అంతే.
ముగింపు
LangChainలో పొందుపరచడానికి కాషింగ్ టెక్నిక్లతో పని చేయడానికి, FAISS, OpenAI మొదలైన పిప్ కమాండ్ని ఉపయోగించి అవసరమైన మాడ్యూల్లను పొందండి. ఆ తర్వాత, LangChainలో కాషింగ్ను నిర్మించడానికి మరియు పని చేయడానికి లైబ్రరీలను దిగుమతి చేయండి. ఇది వివిధ స్టోర్లలో నిల్వ చేయబడిన ఎంబెడ్డింగ్లను సమర్థవంతంగా పొందుతుంది. డెవలపర్లు వెక్టర్ స్టోర్లు, ఫైల్ సిస్టమ్లు లేదా ఇన్-మెమరీ స్టోర్ల వంటి ఎంబెడ్డింగ్లను నిల్వ చేయడానికి బహుళ స్టోర్లను డేటాబేస్లుగా ఉపయోగించవచ్చు. ఈ గైడ్ లాంగ్చెయిన్లో కాషింగ్తో పని చేసే విధానాన్ని ప్రదర్శించింది.