LLM মেমোরি

অনেক LLM-ভিত্তিক অ্যাপ্লিকেশনের চ্যাট ইন্টারফেস WeChat এর মতো। AI ডায়ালগ প্রসেসের একটি গুরুত্বপূর্ণ ফাংশন হলো পূর্বে বলা তথ্যের উল্লেখ করা, মানুষের মতো, পূর্ববর্তী বিষয়রঙ্গ পুনরাবৃত্তি করা ছাড়া সাধারণভাবে গুম হলেও। মানুষ স্বয়ংক্রিয়ভাবে ঐতিহাসিক তথ্য মনে আনে।

LLM ফিল্ডে ঐতিহাসিক আলাপের তথ্য সংরক্ষণ করার সক্ষমতা সাধারণভাবে "মেমোরি" হিসেবে উল্লিখিত হয়, মানুষের মতো মনে রাখার ক্ষমতা রয়েছে। LangChain বিভিন্ন মেমোরি ফাংশন কম্পোনেন্ট এনক্যাপসুলেট করে, যা এককভাবে ব্যবহার করা বা সিলভামার্গোরভাবে ইন্টিগ্রেট করা যেতে পারে।

মেমোরি কম্পোনেন্টগুলি দুটি মৌলিক অপারেশন পালন করতে হবে: পড়া এবং লিখা।

LangChain-এর বিভিন্ন চেইন টাস্ক কম্পোনেন্টের জন্য, যদি মেমোরি ফাংশন চালু করেন, তবে নিম্নলিখিত মধ্যে প্রায়বশত:

  1. প্রাথমিক ব্যবহারকারী ইনপুট পেলে, চেইন টাস্কটি মেমোরি কম্পোনেন্ট থেকে সম্পর্কিত ঐতিহাসিক তথ্য জিজ্ঞাসা করার চেষ্টা করবে, তারপর ঐতিহাসিক তথ্য এবং ব্যবহারকারীদের ইনপুটকে প্রম্পট এর সাথে যুক্ত করে LLM এ পাস করার জন্য।
  2. LLM থেকে ফিরে আসা সামগ্রিক কন্টেন্ট পেলে, এটি স্বয়ংক্রিয়ভাবে ফলাফলকে মেমোরি কম্পোনেন্টে সংরক্ষণ করবে, যাতে পরে সহজে জিজ্ঞাসা করা যায়।

মেমোরি সুযোগ গুলি বিশ্লেষণের প্রসেসে মেমোরি ক্যাপাবিলিটি ইমপ্লিমেন্টেশনের পদক্ষেপগুলি তালিকাবদ্ধ প্রকাশ্য করা হয়েছে:

মেমোরি প্রস্তুতি বিটন: মেমোরি প্রসেস

সিস্টেমে মেমোরি কম্পোনেন্ট ইন্টিগ্রেশন

মেমোরি কম্পোনেন্ট ব্যবহার করার আগে, আপনাকে নিম্নলিখিত দুটি প্রশ্নের উপর বিচার করতে হবে:

  • ঐতিহাসিক মেসেজ ডেটা কীভাবে সংরক্ষণ করা হবে
  • কীভাবে ঐতিহাসিক মেসেজ ডেটা জিজ্ঞাসা করা হবে

সংরক্ষণ: চ্যাট মেসেজ লিস্ট

যদি চ্যাট মডেল ব্যবহার করা হয়, তবে আলাপের ডেটা হচ্ছে চ্যাট মেসেজ এর তালিকা। LangChain বিভিন্ন সংরক্ষণ ইঞ্জিন সমর্থন করে যা ঐতিহাসিক মেসেজ ডেটা সংরক্ষণের জন্য, সবচেয়ে সহজ হলে অতএব মেমোরিতে সংরক্ষণ করার ব্যাপারটি। ব্যবহারে প্রাথমিকভাবে সবচেয়ে সম্প্রচারিত পদ্ধতি হল এটি ডেটাবেজে সংরক্ষণ করা।

জিজ্ঞাসা: কীভাবে সংশ্লিষ্ট ঐতিহাসিক আলাপ মেসেজ জিজ্ঞাসা করা হবে

LLM-এর মেমোরি সুযোগ গুলি ইমপ্লিমেন্ট করতে, কোর হচ্ছে ঐতিহাসিক মেসেজ কন্টেন্টকে প্রস্তুতি ভিত্তিক তথ্য হিসেবে প্রম্পটে জোড়া করতে। এই মাধ্যমে, LLM প্রশ্নের উত্তর দেওয়ার সময় পরে ব্যাকগ্রাউন্ড তথ্য উল্লেখ করতে পারে।

ঐতিহাসিক মেসেজ ডেটা সংরক্ষণ সহজ, বাছাই করা বাড়তি বাড়া কঠিন দিক। বর্তমান আলাপের সাথে সংশ্লিষ্ট ঐতিহাসিক বার্তা জিজ্ঞাসা করার জন্য। LLM-র সর্বাধিক টোকেন লিমিটের জন্য ঐতিহাসিক আলাপ বিষয়ের প্রতিটি বিষয়কে প্রম্পট এ ক্রাম করতে আমরা প্রায়ই প্রয়োজনীয় নয়।

সাধারণ ঐতিহাসিক মেসেজ জিজ্ঞাসা করার পদক্ষেপগুলি এই অন্তর্ভুক্ত করে:

  • সবচেয়ে সাম্প্রতিক N মেসেজ কেবল প্রম্পটের প্রকারে ব্যাকগ্রাউন্ড তথ্য হিসেবে জিজ্ঞাসা
  • AI ব্যবহার করে ঐতিহাসিক মেসেজ সারাংশ করার জন্য গুলি
  • বর্তমান আলাপের সাথে ধরা পড়া গত ঐতিহাসিক মেঘ্

LangChain কম্পোনেন্ট ব্যবহারের উদাহরণ

উপরেরমধ্যে, আসা চেষ্টা করি, LangChain এর মেমোরি কম্পোনেন্ট কীভাবে দেখা যায়। এখানে, আমরা মেমোরি কম্পোনেন্ট ব্যাবহার করার বিষয়ে সাধারণ জ্ঞান প্রস্তুত করব।

প্রথমে, আসা যাক কীভাবে টাস্ক চেইনে ConversationBufferMemory ব্যবহার করতে হবে। ConversationBufferMemory হলো একটি খুব সহজ মেমোরি কম্পোনেন্ট যা মেমোরিতে চ্যাট মেসেজের একটি তালিকা সংরক্ষণ করতে পারে এবং তাদেরকে নতুন সাংলাপ প্রম্পট টেম্পলেটে পাস করতে পারে।

from langchain.memory import ConversationBufferMemory

memory = ConversationBufferMemory()
memory.chat_memory.add_user_message("hi!")
memory.chat_memory.add_ai_message("what's up?")
  • লক্ষ্য: LangChain বিভিন্ন মেমোরি কম্পোনেন্ট সরবরাহ করে যা একই ভাবে ব্যবহার করে।
from langchain_openai import ChatOpenAI
from langchain.prompts import (
    ChatPromptTemplate,
    MessagesPlaceholder,
    SystemMessagePromptTemplate,
    HumanMessagePromptTemplate,
)
from langchain.chains import LLMChain
from langchain.memory import ConversationBufferMemory

llm = ChatOpenAI()
prompt = ChatPromptTemplate(
    messages=[
        SystemMessagePromptTemplate.from_template(
            "তুমি একটা মনোহরিব চ্যাটবট যে একটা মানুষ সঙ্গে কথা বলছো।"
        ),
        MessagesPlaceholder(variable_name="chat_history"),
        HumanMessagePromptTemplate.from_template("{question}")
    ]
)
memory = ConversationBufferMemory(memory_key="chat_history", return_messages=True)

conversation = LLMChain(
    llm=llm,
    prompt=prompt,
    verbose=True,
    memory=memory
)
conversation({"question": "হাই"})