ویکٹر ڈیٹا بیس پر مبنی میموری کمپوننٹ
VectorStoreRetrieverMemory
ویکٹر ڈیٹا بیس میں یادداشتیں رکھتا ہے اور ہر بار تاریخی یاداشتی ڈیٹا کو کوئیری کرنے پر اوپر K مشابہ مواد واپس دیتا ہے۔
yahan "دستاویز" پچھلے گفتگو کے پیغام کی چنڈیں ہیں۔
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 ہو سکتا ہے، یہاں ہم نے 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 سوال کا جواب نہیں جانتے تو وہ سچی دل سے کہتا ہے کہ اس کو معلوم نہیں ہے۔
پچھلے گفتگو کے متعلق اہم حصے:
Input: میری پسندیدہ غذا پیزا ہے.
Output: اچھے جانتے ہیں.
(اگر بے واسطہ ہو تو آپ کو اس معلومات کا استعمال کرنے کی ضرورت نہیں ہے)
موجودہ گفتگو:
انسان: ہیلو، میرا نام پیری ہے، کیسی ہو؟
AI:
> چین مکمل ہوا۔
"ہی پیری، میں بہت ہی اچھا ہوں۔ آپ کیا حال ہیں؟"
conversation_with_summary.predict(input="میرا دوست کا نام کیا ہے؟")
> نیا ConversationChain چین داخل ہو رہا ہے...
فارمیٹنگ کے بعد پرامپٹ:
یہاں انسان اور AI کے درمیان ایک دوستانہ گفتگو ہے۔ AI باتون میں زیادہ تفصیلاتی ہے اور اس کی مخصوص سیاق و سباق سے بہت بہتری فراہم کرتا ہے۔ اگر AI سوال کا جواب نہیں جانتے تو وہ سچی دل سے کہتا ہے کہ اس کو معلوم نہیں ہے۔
پچھلے گفتگو کے متعلق اہم حصے:
Input: میرا پسندیدہ کھیل فٹ بال ہے.
Output: ...
(اگر بے واسطہ ہو تو آپ کو اس معلومات کا استعمال کرنے کی ضرورت نہیں ہے)
موجودہ گفتگو:
انسان: میرا دوست کا نام کیا ہے؟
AI:
> چین مکمل ہوا۔
'آپ نے مجھے پہلے بتایا تھا کہ آپ کا پسندیدہ کھیل فٹ بال ہے۔'