वेक्टर डेटाबेस पर आधारित मेमोरी कॉम्पोनेंट

VectorStoreRetrieverMemory वेक्टर डेटाबेस में मेमोरी को संग्रहीत करता है और प्रत्येक बार हिस्टोरिकल मेमोरी डेटा क्वेरी किया जाता है, तो शीर्ष K समान सामग्री लौटाता है।

यहां, "दस्तावेज़" पिछले वार्ता संदेश अंशों को सङग्रहित करता है।

from datetime import datetime
from langchain_openai import OpenAIEmbeddings
from langchain_openai import OpenAI
from langchain.memory import VectorStoreRetrieverMemory
from langchain.chains import ConversationChain
from langchain_core.prompts import PromptTemplate

वेक्टर डेटाबेस की और से प्रारंभ करना

विभिन्न वेक्टर डेटाबेसों के थोड़े बहुत अलग प्रारंभीकरण चरण होते हैं। यहां फेस का उपयोग करके एक उदाहरण है।

import faiss
from langchain.docstore import InMemoryDocstore
from langchain_community.vectorstores import FAISS

embedding_size = 1536  # वेक्टर आयाम
index = faiss.IndexFlatL2(embedding_size)
embedding_fn = OpenAIEmbeddings().embed_query
vectorstore = FAISS(embedding_fn, index, InMemoryDocstore({}), {})

VectorStoreRetrieverMemory बनाना

वेक्टर डेटाबेस का उपयोग करते हुए VectorStoreRetrieverMemory कॉम्पोनेंट बनाना।

retriever = vectorstore.as_retriever(search_kwargs=dict(k=1))
memory = VectorStoreRetrieverMemory(retriever=retriever)

memory.save_context({"input": "मेरे पसंदीदा खाना पिज़्ज़ा है"}, {"output": "अच्छा जानकर अच्छा लगा"})
memory.save_context({"input": "मेरा पसंदीदा खेल सॉकर है"}, {"output": "..."})
memory.save_context({"input": "मुझे सेल्टिक्स पसंद नहीं हैं"}, {"output": "ठीक है"}) #
print(memory.load_memory_variables({"prompt": "मैं कौन सा खेल देखूं?"})["history"])
input: मेरा पसंदीदा खेल सॉकर है
output: ...

चेन के माध्यम से मेमोरी कॉम्पोनेंट का उपयोग

नीचे एक उदाहरण है कि मेमोरी कॉम्पोनेंट का उपयोग कैसे सीखते हैं। आप "verbose=True" पैरामीटर को सेट कर सकते हैं ताकि मॉडल के साथ इंटरैक्टिव प्रॉम्प्ट को प्रिंट कर सकें।

llm = OpenAI(temperature=0) # यह किसी भी वैध LLM हो सकता है, यहां हमने ओपनएआई चुना है
_DEFAULT_TEMPLATE = """यहाँ मानव और एआई के बीच एक मित्रपूर्ण वार्तालाप है। एआई बातूनी है और इसके साथ कई विशिष्ट विवरण प्रदान करता है। अगर एआई को सवाल का जवाब नहीं पता हो, तो वह साफ-साफ कहेगा कि उसे जवाब नहीं पता।

पिछले वार्ता संदेशों के प्रासंगिक हिस्से:
{history}

(अगर अप्रासंगिक हो, तो आपको इस जानकारी का उपयोग नहीं करना चाहिए)

वर्तमान वार्ता:
मानव: {input}
एआई:"""

PROMPT = PromptTemplate(
    input_variables=["history", "input"],
    template=_DEFAULT_TEMPLATE
)
conversation_with_summary = ConversationChain(
    llm=llm,
    prompt=PROMPT,
    memory=memory,
    verbose=True
)
conversation_with_summary.predict(input="नमस्ते, मेरा नाम पेरी है, क्या चल रहा है?")
> नया ConversationChain चेन में प्रवेश कर रहे हैं...
    संूचना स्वरूपन के बाद प्रॉम्प्ट:
    यहाँ मानव और एआई के बीच एक मित्रपूर्ण वार्तालाप है। एआई बातूनी है और इसके साथ कई विशिष्ट विवरण प्रदान करता है। अगर एआई को सवाल का जवाब नहीं पता हो, तो वह साफ-साफ कहेगा कि उसे जवाब नहीं पता।
        
पिछले वार्ता संदेशों के प्रासंगिक हिस्से:
मेरा पसंदीदा खाना पिज़्ज़ा है।
उत्तर: अच्छा जानकर अच्छा लगा।

(यदि अप्रासंगिक हो, तो आपको इस जानकारी का उपयोग नहीं करना चाहिए)

वर्तमान वार्ता:
मानव: नमस्ते, मेरा नाम पेरी है, क्या चल रहा है?
एआई:

> चेन पूरा हो गया।
"नमस्ते पेरी, मैं बहुत अच्छा हूँ। आप कैसे हैं?"
conversation_with_summary.predict(input="मेरा पसंदीदा खेल कौन सा है?")
> नया ConversationChain चेन में प्रवेश कर रहे हैं...
    संूचना स्वरूपन के बाद प्रॉम्प्ट:
    यहाँ मानव और एआई के बीच एक मित्रपूर्ण वार्तालाप है। एआई बातूनी है और इसके साथ कई विशिष्ट विवरण प्रदान करता है। अगर एआई को सवाल का जवाब नहीं पता हो, तो वह साफ-साफ कहेगा कि उसे जवाब नहीं पता है।

पिछले वार्ता संदेशों के प्रासंगिक हिस्से:

मेरा पसंदीदा खेल सॉकर है।

उत्तर: ...

(यदि अप्रासंगिक हो, तो आपको इस जानकारी का उपयोग नहीं करना चाहिए)

वर्तमान वार्ता: मेरा पसंदीदा खेल कौन सा है?

एआई:

    > चेन पूरा हो गया।

    'आपने मुझसे पहले बताया था कि आपका पसंदीदा खेल सॉकर है।'