# ভেক্টর ডাটাবেস ভিত্তিতে মেমোরি কাম্পোনেন্ট

`VectorStoreRetrieverMemory` মেমোরিটি মেমোরি ডেটাবেসে মেমোরিগুলি সংরক্ষণ করে এবং প্রতিবার ইতিহাসের মেমোরি ডেটা জিজ্ঞাসা করা হলে শীর্ষ K অনুরূপ কন্টেন্ট ফিরিয়ে দেয়।

এখানে "ডকুমেন্ট" পূর্ববর্তী ডায়ালগ বার্তা টুকরা গুলির জন্য।

```python
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

ভেক্টর ডাটাবেস আরম্ভ করা

বিভিন্ন ভেক্টর ডাটাবেসের প্রাথমিককরণের প্রক্রিয়াগুলি সামান্যভাবে ভিন্ন হতে পারে। এখানে একটি উদাহরণ দেওয়া হল Faiss ব্যবহার করে।

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({}), {})

ভেক্টরস্টোররিট্রিভার মেমোরি তৈরি করা

ভেক্টর ডাটাবেস ব্যবহার করে ভেক্টরস্টোররিট্রিভার মেমোরি কাম্পোনেন্ট তৈরি করা।

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"])
ইনপুট: আমার প্রিয় খেলা ফুটবল
আউটপুট: ...

মেমোরি কাম্পোনেন্ট ব্যবহার করা

নীচে মেমোরি কাম্পোনেন্ট ব্যবহার করার একটি উদাহরণ দেওয়া হল। "verbose=True" প্যারামিটার টি অংশ হিসেবে সেট করতে পারেন যেন আপনি মডেল দিয়ে সংলাপের প্রিয় সেট করতে পারেন।

llm = OpenAI(temperature=0) # এটি যেকোনো বৈধ LLM হতে পারে, এখানে আমরা openai চয়ন করেছি
_DEFAULT_TEMPLATE = """এখানে মানুষ এবং AI যে দোষের মধ্যে একটি সৌহার্দপূর্ণ অংশ দেয়। AI সম্পর্কে বহুবিশেষ বিস্তারিত প্রদান করে এবং তার সংদর্ভ থেকে বিস্তৃত বিস্তারিত অনুভূতি দেয়। যদি AI কোনও প্রশ্নের উত্তর না জানে, তবে সত্যক্ষমভাবে বলবে যে তা ঠিকমতো জানে না।

আগের সংলাপের সংবাদের প্রাসঙ্গিক অংশগুলি:
{history}

(যদি অপ্রাসঙ্গিক হয়, আপনাকে এই তথ্যটি ব্যবহার করার দরকার নেই)

বর্তমান সংলাপ:
মানুষ: {input}
AI:"""

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 লিঙ্ক করা হচ্ছে...
    ফরম্যাটিং পর প্রম্পট:
    এখানে মানুষ এবং AI এর মধ্যে একটি সৌহার্দপূর্ণ সংলাপের অনুভূতি। যদি AI জানে না প্রশ্নের উত্তর, তবে সে এটা সত্যক্ষমভাবে বলবে।

আগের সংলাপের সংবাদের প্রাসঙ্গিক অংশগুলি:
ইনপুট: আমার প্রিয় খাবার পিজা।
আউটপুট: জানা ভালো।

(যদি অপ্রাসঙ্গিক হয়, আপনাকে এই তথ্যটি ব্যবহার করার দরকার নেই)

বর্তমান সংলাপ:
মানুষ: হ্যালো, আমার নাম পেরি, কি খবর?
AI:
Finished chain.
"হ্যালো পেরি, আমি ভালো আছি। তুমি কেমন আছো?"
conversation_with_summary.predict(input="আমার প্রিয় খেলা কী?")
> নতুন ConversationChain লিঙ্ক করা হচ্ছে...
    ফরম্যাটিং পর প্রম্পট:
    এখানে মানুষ এবং AI এর মধ্যে একটি সৌহার্দপূর্ণ সংলাপের অনুভূতি। যদি AI জানে না প্রশ্নের উত্তর, তবে সে এটা সত্যক্ষমভাবে বলবে।

আগের সংলাপের সংবাদের প্রাসঙ্গিক অংশগুলি:
ইনপুট: আমার প্রিয় খেলা ফুটবল।
আউটপুট: ...

(যদি অপ্রাসঙ্গিক হয়, আপনাকে এই তথ্যটি ব্যবহার করার দরকার নেই)

বর্তমান সংলাপ:
মানুষ: আমার প্রিয় খেলা কী?
AI:

শেষ করেছে।
'তুমি আমাকে আগে বলেছিলো যে তোমার প্রিয় খেলা ফুটবল।'