ویکٹر انجن کے ساتھ Amazon SageMaker JumpStart، Llama 2 اور Amazon OpenSearch Serverless کا استعمال کرتے ہوئے مالیاتی خدمات کے لیے ایک متعلقہ چیٹ بوٹ بنائیں۔ ایمیزون ویب سروسز

ویکٹر انجن کے ساتھ Amazon SageMaker JumpStart، Llama 2 اور Amazon OpenSearch Serverless کا استعمال کرتے ہوئے مالیاتی خدمات کے لیے ایک متعلقہ چیٹ بوٹ بنائیں۔ ایمیزون ویب سروسز

فنانشل سروس (FinServ) انڈسٹری میں ڈومین کے لیے مخصوص ڈیٹا، ڈیٹا سیکیورٹی، ریگولیٹری کنٹرولز، اور صنعت کی تعمیل کے معیارات سے متعلق منفرد تخلیقی AI تقاضے ہیں۔ اس کے علاوہ، گاہک سب سے زیادہ پرفارمنس اور سستی مشین لرننگ (ML) ماڈل کو منتخب کرنے اور اپنے کاروباری استعمال کے معاملات میں فٹ ہونے کے لیے ضروری حسب ضرورت (فائن ٹیوننگ) کرنے کی صلاحیت کے انتخاب کی تلاش میں ہیں۔ ایمیزون سیج میکر جمپ اسٹارٹ FinServ صارفین کے لیے تخلیقی AI کے استعمال کے کیسز کے لیے مثالی طور پر موزوں ہے کیونکہ یہ ضروری ڈیٹا سیکیورٹی کنٹرول فراہم کرتا ہے اور تعمیل کے معیار کے تقاضوں کو پورا کرتا ہے۔

اس پوسٹ میں، ہم SageMaker JumpStart میں بڑے لینگویج ماڈلز (LLMs) کے ساتھ Retrieval Augmented Generation (RAG) پر مبنی اپروچ کا استعمال کرتے ہوئے ایک سادہ مالی ڈومین استعمال کیس کا استعمال کرتے ہوئے سوال جواب دینے والے کاموں کا مظاہرہ کرتے ہیں۔ RAG ایک LLM کو معلومات کی بازیافت (IR) سسٹم کے ساتھ ملا کر ٹیکسٹ جنریشن کے معیار کو بہتر بنانے کا فریم ورک ہے۔ LLM نے متن تیار کیا ہے، اور IR سسٹم نالج بیس سے متعلقہ معلومات کو بازیافت کرتا ہے۔ بازیافت شدہ معلومات کو پھر LLM کے ان پٹ کو بڑھانے کے لیے استعمال کیا جاتا ہے، جس سے ماڈل تیار کردہ متن کی درستگی اور مطابقت کو بہتر بنانے میں مدد مل سکتی ہے۔ RAG کو متن کی تخلیق کے مختلف کاموں کے لیے موثر ثابت کیا گیا ہے، جیسے سوال کا جواب دینا اور خلاصہ کرنا۔ ٹیکسٹ جنریشن ماڈلز کے معیار اور درستگی کو بہتر بنانے کے لیے یہ ایک امید افزا طریقہ ہے۔

سیج میکر جمپ اسٹارٹ استعمال کرنے کے فوائد

SageMaker JumpStart کے ساتھ، ML پریکٹیشنرز استعمال کے معاملات کے لیے جدید ترین ماڈلز کے وسیع انتخاب میں سے انتخاب کر سکتے ہیں جیسے کہ مواد کی تحریر، تصویر کی تخلیق، کوڈ جنریشن، سوال کے جوابات، کاپی رائٹنگ، خلاصہ، درجہ بندی، معلومات کی بازیافت، اور بہت کچھ۔ ایم ایل پریکٹیشنرز فاؤنڈیشن ماڈلز کو وقف کر سکتے ہیں۔ ایمیزون سیج میکر نیٹ ورک الگ تھلگ ماحول سے مثالیں اور ماڈل ٹریننگ اور تعیناتی کے لیے SageMaker کا استعمال کرتے ہوئے ماڈلز کو اپنی مرضی کے مطابق بنائیں۔

SageMaker JumpStart مثالی طور پر FinServ صارفین کے لیے AI کے استعمال کے معاملات کے لیے موزوں ہے کیونکہ یہ درج ذیل پیش کرتا ہے:

  • حسب ضرورت کی صلاحیتیں۔ - سیج میکر جمپ سٹارٹ فاؤنڈیشن ماڈلز کے ڈومین موافقت پر مرحلہ وار رہنمائی کے لیے مثال کے طور پر نوٹ بک اور تفصیلی پوسٹس فراہم کرتا ہے۔ آپ فائن ٹیوننگ، ڈومین موافقت، اور فاؤنڈیشن ماڈلز کی ہدایات یا RAG پر مبنی ایپلی کیشنز بنانے کے لیے ان وسائل کی پیروی کر سکتے ہیں۔
  • ڈیٹا سیکورٹی - انفرنس پے لوڈ ڈیٹا کی حفاظت کو یقینی بنانا سب سے اہم ہے۔ سیج میکر جمپ سٹارٹ کے ساتھ، آپ سنگل کرایہ داری اینڈ پوائنٹ پروویژن کے ساتھ نیٹ ورک آئسولیشن میں ماڈلز تعینات کر سکتے ہیں۔ مزید برآں، آپ انفرادی حفاظتی تقاضوں کے مطابق، نجی ماڈل ہب کی صلاحیت کے ذریعے منتخب ماڈلز تک رسائی کے کنٹرول کا انتظام کر سکتے ہیں۔
  • ریگولیٹری کنٹرول اور تعمیل - HIPAA BAA، SOC123، PCI، اور HITRUST CSF جیسے معیارات کی تعمیل SageMaker کی ایک بنیادی خصوصیت ہے، جو مالیاتی شعبے کے سخت ریگولیٹری منظر نامے کے ساتھ ہم آہنگی کو یقینی بناتی ہے۔
  • ماڈل کے انتخاب - سیج میکر جمپ سٹارٹ جدید ترین ML ماڈلز کا انتخاب پیش کرتا ہے جو صنعت کے تسلیم شدہ HELM بینچ مارکس میں مسلسل سرفہرست ہیں۔ ان میں Llama 2، Falcon 40B، AI21 J2 Ultra، AI21 Summarize، Hugging Face MiniLM، اور BGE ماڈلز شامل ہیں، لیکن ان تک محدود نہیں ہیں۔

اس پوسٹ میں، ہم Llama 2 فاؤنڈیشن ماڈل اور گلے ملنے والا چہرہ GPTJ-6B-FP16 ایمبیڈنگز ماڈل، دونوں سیج میکر جمپ اسٹارٹ میں دستیاب ہیں۔ ہم بھی استعمال کرتے ہیں۔ ویکٹر انجن لیے ایمیزون اوپن سرچ سرور لیس (فی الحال پیش نظارہ میں) سرایت کرنے کے لیے ویکٹر ڈیٹا اسٹور کے طور پر۔

بڑے زبان کے ماڈلز کی حدود

ایل ایل ایم کو غیر ساختہ ڈیٹا کی وسیع مقدار پر تربیت دی گئی ہے اور عام ٹیکسٹ جنریشن میں ایکسل کیا گیا ہے۔ اس تربیت کے ذریعے، LLMs حقائق پر مبنی علم حاصل کرتے اور ذخیرہ کرتے ہیں۔ تاہم، آف دی شیلف ایل ایل ایم کی حدود موجود ہیں:

  • ان کی آف لائن تربیت انہیں تازہ ترین معلومات سے بے خبر رکھتی ہے۔
  • بنیادی طور پر عام ڈیٹا پر ان کی تربیت ڈومین کے مخصوص کاموں میں ان کی افادیت کو کم کرتی ہے۔ مثال کے طور پر، ایک مالیاتی فرم اپنے سوال و جواب کے بوٹ کو ترجیح دے سکتی ہے کہ وہ اپنے تازہ ترین داخلی دستاویزات سے جوابات حاصل کرے، اس کے کاروباری اصولوں کی درستگی اور تعمیل کو یقینی بنائے۔
  • سرایت شدہ معلومات پر ان کا انحصار تشریح کی صلاحیت سے سمجھوتہ کرتا ہے۔

LLMs میں مخصوص ڈیٹا استعمال کرنے کے لیے، تین مروجہ طریقے موجود ہیں:

  • ماڈل کے اندر ڈیٹا کو ایمبیڈ کرنا اشارہ دیتا ہے، جس سے اسے آؤٹ پٹ جنریشن کے دوران اس سیاق و سباق کو استعمال کرنے کی اجازت ملتی ہے۔ یہ زیرو شاٹ (کوئی مثال نہیں)، چند شاٹ (محدود مثالیں) یا کئی شاٹ (کثرت مثالیں) ہو سکتا ہے۔ اس طرح کے سیاق و سباق کی حوصلہ افزائی ماڈلز کو مزید اہم نتائج کی طرف لے جاتی ہے۔
  • اشارے اور تکمیل کے جوڑے کا استعمال کرتے ہوئے ماڈل کو ٹھیک کرنا۔
  • RAG، جو بیرونی ڈیٹا (نان پیرامیٹرک) کو بازیافت کرتا ہے اور اس ڈیٹا کو پرامپٹس میں ضم کرتا ہے، جس سے سیاق و سباق کو تقویت ملتی ہے۔

تاہم، پہلا طریقہ سیاق و سباق کے سائز پر ماڈل کی رکاوٹوں کا مقابلہ کرتا ہے، جس سے لمبے لمبے دستاویزات داخل کرنا مشکل ہو جاتا ہے اور ممکنہ طور پر لاگت میں اضافہ ہوتا ہے۔ فائن ٹیوننگ اپروچ، جب کہ قوی ہے، وسائل کے لحاظ سے بہت زیادہ ہے، خاص طور پر ہمیشہ تیار ہوتے بیرونی ڈیٹا کے ساتھ، جس کی وجہ سے تعیناتی میں تاخیر اور اخراجات میں اضافہ ہوتا ہے۔ LLMs کے ساتھ مل کر RAG پہلے بیان کردہ حدود کا حل پیش کرتا ہے۔

بازیافت اگمینٹڈ جنریشن

RAG بیرونی ڈیٹا (غیر پیرامیٹرک) کو بازیافت کرتا ہے اور اس ڈیٹا کو ML پرامپٹ میں ضم کرتا ہے، جس سے سیاق و سباق کو تقویت ملتی ہے۔ لیوس وغیرہ۔ نے 2020 میں RAG ماڈلز متعارف کرائے، انہیں پہلے سے تربیت یافتہ ترتیب سے ترتیب والے ماڈل (پیرامیٹرک میموری) کے فیوژن کے طور پر تصور کرتے ہوئے اور ویکیپیڈیا کے ایک گھنے ویکٹر انڈیکس (نان پیرامیٹرک میموری) کو نیورل ریٹریور کے ذریعے حاصل کیا گیا۔

یہاں یہ ہے کہ RAG کیسے کام کرتا ہے:

  • اعداد و شمار ذرائع - RAG مختلف ڈیٹا ذرائع سے حاصل کر سکتا ہے، بشمول دستاویز کے ذخیرے، ڈیٹا بیس، یا APIs۔
  • ڈیٹا فارمیٹنگ - صارف کے استفسار اور دستاویزات دونوں کو مطابقت کے موازنہ کے لیے موزوں شکل میں تبدیل کر دیا گیا ہے۔
  • سرایت - اس موازنہ کو آسان بنانے کے لیے، استفسار اور دستاویز کا مجموعہ (یا نالج لائبریری) کو زبان کے ماڈلز کا استعمال کرتے ہوئے عددی سرایت میں تبدیل کیا جاتا ہے۔ یہ سرایتیں عددی طور پر متنی تصورات کو سمیٹتی ہیں۔
  • مطابقت کی تلاش - صارف کے استفسار کی سرایت کا موازنہ دستاویز کے مجموعہ کے سرایت سے کیا جاتا ہے، سرایت کرنے کی جگہ میں مماثلت کی تلاش کے ذریعے متعلقہ متن کی شناخت کرتا ہے۔
  • سیاق و سباق کی افزودگی - شناخت شدہ متعلقہ متن کو صارف کے اصل پرامپٹ میں شامل کیا جاتا ہے، اس طرح اس کے سیاق و سباق میں اضافہ ہوتا ہے۔
  • ایل ایل ایم پروسیسنگ - افزودہ سیاق و سباق کے ساتھ، پرامپٹ کو LLM کو فیڈ کیا جاتا ہے، جو کہ متعلقہ بیرونی ڈیٹا کو شامل کرنے کی وجہ سے، متعلقہ اور درست نتائج پیدا کرتا ہے۔
  • غیر مطابقت پذیر اپ ڈیٹس - اس بات کو یقینی بنانے کے لیے کہ حوالہ جاتی دستاویزات موجودہ رہیں، انہیں ان کی سرایت کرنے والی نمائندگیوں کے ساتھ متضاد طور پر اپ ڈیٹ کیا جا سکتا ہے۔ یہ یقینی بناتا ہے کہ مستقبل کے ماڈل کے جوابات تازہ ترین معلومات پر مبنی ہیں، درستگی کی ضمانت دیتے ہیں۔

جوہر میں، RAG LLMs کو حقیقی وقت، متعلقہ معلومات کے ساتھ شامل کرنے کے لیے ایک متحرک طریقہ پیش کرتا ہے، جس سے قطعی اور بروقت نتائج کی پیداوار کو یقینی بنایا جاتا ہے۔

درج ذیل خاکہ LLMs کے ساتھ RAG استعمال کرنے کے تصوراتی بہاؤ کو ظاہر کرتا ہے۔

ویکٹر انجن کے ساتھ Amazon SageMaker JumpStart، Llama 2 اور Amazon OpenSearch Serverless کا استعمال کرتے ہوئے مالیاتی خدمات کے لیے ایک متعلقہ چیٹ بوٹ بنائیں۔ ایمیزون ویب سروسز پلیٹو بلاکچین ڈیٹا انٹیلی جنس۔ عمودی تلاش۔ عی

حل جائزہ

مالیاتی خدمات کی درخواست کے لیے سیاق و سباق کے سوال کا جواب دینے والے چیٹ بوٹ بنانے کے لیے درج ذیل اقدامات کی ضرورت ہے۔

  1. سیج میکر جمپ اسٹارٹ GPT-J-6B ایمبیڈنگ ماڈل کا استعمال کریں ایمیزون سادہ اسٹوریج سروس (ایمیزون S3) اپ لوڈ ڈائریکٹری۔
  2. درج ذیل مراحل کا استعمال کرتے ہوئے متعلقہ دستاویزات کی شناخت کریں:
    • اسی ماڈل کا استعمال کرتے ہوئے صارف کے استفسار کے لیے ایمبیڈنگ تیار کریں۔
    • ایمبیڈنگ اسپیس میں سب سے زیادہ متعلقہ دستاویز کے اشاریہ جات کو تلاش کرنے کے لیے ویکٹر انجن فیچر کے ساتھ OpenSearch Serverless کا استعمال کریں۔
    • شناخت شدہ اشاریہ جات کا استعمال کرتے ہوئے متعلقہ دستاویزات کو بازیافت کریں۔
  3. بازیافت شدہ دستاویزات کو صارف کے اشارے اور سوال کے ساتھ سیاق و سباق کے طور پر جوڑیں۔ جواب پیدا کرنے کے لیے اسے SageMaker LLM کو بھیجیں۔

ہم اس عمل کو ترتیب دینے کے لیے LangChain، ایک مقبول فریم ورک کو استعمال کرتے ہیں۔ LangChain کو خاص طور پر LLMs کے ذریعے چلنے والی ایپلیکیشنز کو تقویت دینے کے لیے ڈیزائن کیا گیا ہے، جو مختلف LLMs کے لیے ایک عالمگیر انٹرفیس پیش کرتا ہے۔ یہ متعدد LLMs کے انضمام کو ہموار کرتا ہے، کالوں کے درمیان ہموار حالت کو یقینی بناتا ہے۔ مزید برآں، یہ تخصیص کے قابل پرامپٹ ٹیمپلیٹس، جامع ایپلیکیشن بنانے والے ایجنٹس، اور تلاش اور بازیافت کے لیے خصوصی اشاریہ جات جیسی خصوصیات کے ساتھ ڈویلپر کی کارکردگی کو بڑھاتا ہے۔ گہرائی سے سمجھنے کے لیے، کا حوالہ دیں۔ LangChain دستاویزات.

شرائط

ہمارے سیاق و سباق سے آگاہ چیٹ بوٹ بنانے کے لیے آپ کو درج ذیل شرائط کی ضرورت ہے:

OpenSearch Serverless ویکٹر انجن کو کیسے ترتیب دیا جائے اس بارے میں ہدایات کے لیے، رجوع کریں۔ Amazon OpenSearch Serverless کے لیے ویکٹر انجن کا تعارف، اب پیش نظارہ میں.

درج ذیل حل کی ایک جامع واک تھرو کے لیے، کلون کریں۔ GitHub repo اور حوالہ دیتے ہیں Jupyter نوٹ بک۔

سیج میکر جمپ اسٹارٹ کا استعمال کرتے ہوئے ایم ایل ماڈلز کو تعینات کریں۔

ایم ایل ماڈلز کو تعینات کرنے کے لیے، درج ذیل مراحل کو مکمل کریں:

  1. SageMaker JumpStart سے Llama 2 LLM تعینات کریں:
    from sagemaker.jumpstart.model import JumpStartModel
    llm_model = JumpStartModel(model_id = "meta-textgeneration-llama-2-7b-f")
    llm_predictor = llm_model.deploy()
    llm_endpoint_name = llm_predictor.endpoint_name

  2. GPT-J ایمبیڈنگز ماڈل تعینات کریں:
    embeddings_model = JumpStartModel(model_id = "huggingface-textembedding-gpt-j-6b-fp16")
    embed_predictor = embeddings_model.deploy()
    embeddings_endpoint_name = embed_predictor.endpoint_name
    

ڈیٹا کا حصہ بنائیں اور ایک دستاویز ایمبیڈنگ آبجیکٹ بنائیں

اس سیکشن میں، آپ ڈیٹا کو چھوٹی دستاویزات میں تقسیم کرتے ہیں۔ چنکنگ بڑی تحریروں کو چھوٹے حصوں میں تقسیم کرنے کی ایک تکنیک ہے۔ یہ ایک ضروری قدم ہے کیونکہ یہ ہمارے RAG ماڈل کے لیے تلاش کے استفسار کی مطابقت کو بہتر بناتا ہے، جس کے نتیجے میں چیٹ بوٹ کا معیار بہتر ہوتا ہے۔ ٹکڑا کا سائز دستاویزات کی قسم اور استعمال شدہ ماڈل جیسے عوامل پر منحصر ہے۔ ایک حصہ chunk_size=1600 منتخب کیا گیا ہے کیونکہ یہ ایک پیراگراف کا تخمینی سائز ہے۔ جیسے جیسے ماڈلز بہتر ہوں گے، ان کے سیاق و سباق کی کھڑکی کا سائز بڑھے گا، جس سے بڑے ٹکڑوں کے سائز کی اجازت ہوگی۔

ملاحظہ کریں Jupyter نوٹ بک مکمل حل کے لیے GitHub ریپو میں۔

  1. LangChain کو بڑھائیں۔ SageMakerEndpointEmbeddings ایک حسب ضرورت ایمبیڈنگ فنکشن بنانے کے لیے کلاس جو gpt-j-6b-fp16 SageMaker اینڈ پوائنٹ کا استعمال کرتا ہے جسے آپ نے پہلے بنایا تھا (ایمبیڈنگز ماڈل کو استعمال کرنے کے حصے کے طور پر):
    from langchain.embeddings import SagemakerEndpointEmbeddings
    from langchain.embeddings.sagemaker_endpoint import EmbeddingsContentHandler logger = logging.getLogger(__name__) # extend the SagemakerEndpointEmbeddings class from langchain to provide a custom embedding function
    class SagemakerEndpointEmbeddingsJumpStart(SagemakerEndpointEmbeddings): def embed_documents( self, texts: List[str], chunk_size: int = 1 ) → List[List[float]]: """Compute doc embeddings using a SageMaker Inference Endpoint. Args: texts: The list of texts to embed. chunk_size: The chunk size defines how many input texts will be grouped together as request. If None, will use the chunk size specified by the class. Returns: List of embeddings, one for each text. """ results = [] _chunk_size = len(texts) if chunk_size > len(texts) else chunk_size st = time.time() for i in range(0, len(texts), _chunk_size): response = self._embedding_func(texts[i : i + _chunk_size]) results.extend(response) time_taken = time.time() - st logger.info( f"got results for {len(texts)} in {time_taken}s, length of embeddings list is {len(results)}" ) print( f"got results for {len(texts)} in {time_taken}s, length of embeddings list is {len(results)}" ) return results # class for serializing/deserializing requests/responses to/from the embeddings model
    class ContentHandler(EmbeddingsContentHandler): content_type = "application/json" accepts = "application/json" def transform_input(self, prompt: str, model_kwargs={}) → bytes: input_str = json.dumps({"text_inputs": prompt, **model_kwargs}) return input_str.encode("utf-8") def transform_output(self, output: bytes) → str: response_json = json.loads(output.read().decode("utf-8")) embeddings = response_json["embedding"] if len(embeddings) == 1: return [embeddings[0]] return embeddings def create_sagemaker_embeddings_from_js_model( embeddings_endpoint_name: str, aws_region: str
    ) → SagemakerEndpointEmbeddingsJumpStart: content_handler = ContentHandler() embeddings = SagemakerEndpointEmbeddingsJumpStart( endpoint_name=embeddings_endpoint_name, region_name=aws_region, content_handler=content_handler, ) return embeddings 

  2. ایمبیڈنگ آبجیکٹ بنائیں اور دستاویز ایمبیڈنگز کی تخلیق کو بیچ دیں:
    embeddings = create_sagemaker_embeddings_from_js_model(embeddings_endpoint_name, aws_region)

  3. یہ ایمبیڈنگز LangChain کا ​​استعمال کرتے ہوئے ویکٹر انجن میں محفوظ کی جاتی ہیں۔ OpenSearchVectorSearch. آپ ان ایمبیڈنگز کو اگلے حصے میں محفوظ کرتے ہیں۔ OpenSearch Serverless میں ایمبیڈنگ دستاویز کو اسٹور کریں۔ اب آپ کٹے ہوئے دستاویزات پر اعادہ کرنے، ایمبیڈنگز بنانے، اور ان ایمبیڈنگز کو اوپن سرچ سرور لیس ویکٹر انڈیکس میں اسٹور کرنے کے لیے تیار ہیں جو ویکٹر سرچ کلیکشن میں بنائے گئے ہیں۔ درج ذیل کوڈ دیکھیں:
    docsearch = OpenSearchVectorSearch.from_texts(
    texts = [d.page_content for d in docs],
    embedding=embeddings,
    opensearch_url=[{'host': _aoss_host, 'port': 443}],
    http_auth=awsauth,
    timeout = 300,
    use_ssl = True,
    verify_certs = True,
    connection_class = RequestsHttpConnection,
    index_name=_aos_index
    )

دستاویزات پر سوال اور جواب

اب تک، آپ نے ایک بڑی دستاویز کو چھوٹے حصوں میں تقسیم کیا ہے، ویکٹر ایمبیڈنگز بنائی ہیں، اور انہیں ویکٹر انجن میں محفوظ کیا ہے۔ اب آپ اس دستاویز کے ڈیٹا سے متعلق سوالات کے جواب دے سکتے ہیں۔ چونکہ آپ نے ڈیٹا پر ایک انڈیکس بنایا ہے، اس لیے آپ سیمنٹک تلاش کر سکتے ہیں۔ اس طرح، سوال کا جواب دینے کے لیے درکار انتہائی متعلقہ دستاویزات ہی ایل ایل ایم کو پرامپٹ کے ذریعے بھیجی جاتی ہیں۔ یہ آپ کو صرف متعلقہ دستاویزات ایل ایل ایم کو دے کر وقت اور پیسہ بچانے کی اجازت دیتا ہے۔ دستاویز کی زنجیروں کے استعمال کے بارے میں مزید تفصیلات کے لیے، رجوع کریں۔ دستاویزات.

دستاویزات کا استعمال کرتے ہوئے سوالات کا جواب دینے کے لیے درج ذیل مراحل کو مکمل کریں:

  1. LangChain کے ساتھ SageMaker LLM اینڈ پوائنٹ استعمال کرنے کے لیے، آپ استعمال کرتے ہیں۔ langchain.llms.sagemaker_endpoint.SagemakerEndpoint، جو SageMaker LLM اختتامی نقطہ کو خلاصہ کرتا ہے۔ آپ درخواست اور جوابی پے لوڈ کے لیے ایک تبدیلی انجام دیتے ہیں جیسا کہ LangChain SageMaker انضمام کے لیے درج ذیل کوڈ میں دکھایا گیا ہے۔ نوٹ کریں کہ آپ کو Content_type کی بنیاد پر ContentHandler میں کوڈ کو ایڈجسٹ کرنے کی ضرورت پڑ سکتی ہے اور LLM ماڈل کے فارمیٹ کو قبول کرتا ہے جسے آپ استعمال کرنا چاہتے ہیں۔
    content_type = "application/json"
    accepts = "application/json"
    def transform_input(self, prompt: str, model_kwargs: dict) → bytes: payload = { "inputs": [ [ { "role": "system", "content": prompt, }, {"role": "user", "content": prompt}, ], ], "parameters": { "max_new_tokens": 1000, "top_p": 0.9, "temperature": 0.6, }, } input_str = json.dumps( payload, ) return input_str.encode("utf-8") def transform_output(self, output: bytes) → str: response_json = json.loads(output.read().decode("utf-8")) content = response_json[0]["generation"]["content"] return content content_handler = ContentHandler() sm_jumpstart_llm=SagemakerEndpoint( endpoint_name=llm_endpoint_name, region_name=aws_region, model_kwargs={"max_new_tokens": 300}, endpoint_kwargs={"CustomAttributes": "accept_eula=true"}, content_handler=content_handler, )

اب آپ مالیاتی دستاویز کے ساتھ تعامل کے لیے تیار ہیں۔

  1. دستاویز سے متعلق سوالات پوچھنے کے لیے درج ذیل استفسار اور فوری ٹیمپلیٹ کا استعمال کریں:
    from langchain import PromptTemplate, SagemakerEndpoint
    from langchain.llms.sagemaker_endpoint import LLMContentHandler query = "Summarize the earnings report and also what year is the report for"
    prompt_template = """Only use context to answer the question at the end. {context} Question: {question}
    Answer:""" prompt = PromptTemplate( template=prompt_template, input_variables=["context", "question"]
    ) class ContentHandler(LLMContentHandler): content_type = "application/json" accepts = "application/json" def transform_input(self, prompt: str, model_kwargs: dict) → bytes: payload = { "inputs": [ [ { "role": "system", "content": prompt, }, {"role": "user", "content": prompt}, ], ], "parameters": { "max_new_tokens": 1000, "top_p": 0.9, "temperature": 0.6, }, } input_str = json.dumps( payload, ) return input_str.encode("utf-8") def transform_output(self, output: bytes) → str: response_json = json.loads(output.read().decode("utf-8")) content = response_json[0]["generation"]["content"] return content content_handler = ContentHandler() chain = load_qa_chain( llm=SagemakerEndpoint( endpoint_name=llm_endpoint_name, region_name=aws_region, model_kwargs={"max_new_tokens": 300}, endpoint_kwargs={"CustomAttributes": "accept_eula=true"}, content_handler=content_handler, ), prompt=prompt,
    )
    sim_docs = docsearch.similarity_search(query, include_metadata=False)
    chain({"input_documents": sim_docs, "question": query}, return_only_outputs=True)
    

صفائی

مستقبل کے اخراجات سے بچنے کے لیے، SageMaker انفرنس اینڈ پوائنٹس کو حذف کریں جو آپ نے اس نوٹ بک میں بنائے ہیں۔ آپ اپنی سیج میکر اسٹوڈیو نوٹ بک میں درج ذیل کو چلا کر ایسا کر سکتے ہیں۔

# Delete LLM
llm_predictor.delete_model()
llm_predictor.delete_predictor(delete_endpoint_config=True) # Delete Embeddings Model
embed_predictor.delete_model()
embed_predictor.delete_predictor(delete_endpoint_config=True)

اگر آپ نے اس مثال کے لیے ایک OpenSearch Serverless مجموعہ بنایا ہے اور اب اس کی ضرورت نہیں ہے، تو آپ اسے OpenSearch Serverless کنسول کے ذریعے حذف کر سکتے ہیں۔

نتیجہ

اس پوسٹ میں، ہم نے LLMs کو ڈومین کے لیے مخصوص سیاق و سباق فراہم کرنے کے لیے RAG کو ایک نقطہ نظر کے طور پر استعمال کرنے پر تبادلہ خیال کیا۔ ہم نے دکھایا کہ SageMaker JumpStart کو کس طرح استعمال کرتے ہوئے ایک RAG پر مبنی سیاق و سباق سے متعلق چیٹ بوٹ کو ایک مالیاتی خدمات کی تنظیم کے لیے Llama 2 اور OpenSearch Serverless کا استعمال کرتے ہوئے ویکٹر ڈیٹا اسٹور کے طور پر ویکٹر انجن کے ساتھ استعمال کیا جائے۔ یہ طریقہ متعلقہ سیاق و سباق کو متحرک طور پر سورس کر کے Llama 2 کا استعمال کرتے ہوئے ٹیکسٹ جنریشن کو بہتر کرتا ہے۔ ہم یہ دیکھ کر بہت پرجوش ہیں کہ آپ اپنا حسب ضرورت ڈیٹا لاتے ہیں اور SageMaker JumpStart پر اس RAG پر مبنی حکمت عملی کے ساتھ اختراع کرتے ہیں!


مصنفین کے بارے میں

ویکٹر انجن کے ساتھ Amazon SageMaker JumpStart، Llama 2 اور Amazon OpenSearch Serverless کا استعمال کرتے ہوئے مالیاتی خدمات کے لیے ایک متعلقہ چیٹ بوٹ بنائیں۔ ایمیزون ویب سروسز پلیٹو بلاکچین ڈیٹا انٹیلی جنس۔ عمودی تلاش۔ عیسنیل پدمنابھن AWS میں ایک سٹارٹ اپ سولیوشن آرکیٹیکٹ ہے۔ ایک سابق اسٹارٹ اپ بانی اور CTO کے طور پر، وہ مشین لرننگ کے بارے میں پرجوش ہیں اور سٹارٹ اپس کو ان کے کاروباری نتائج کے لیے AI/ML سے فائدہ اٹھانے میں مدد کرنے پر توجہ مرکوز کرتے ہیں اور ML/AI سلوشنز کو پیمانے پر ڈیزائن اور تعینات کرتے ہیں۔

ویکٹر انجن کے ساتھ Amazon SageMaker JumpStart، Llama 2 اور Amazon OpenSearch Serverless کا استعمال کرتے ہوئے مالیاتی خدمات کے لیے ایک متعلقہ چیٹ بوٹ بنائیں۔ ایمیزون ویب سروسز پلیٹو بلاکچین ڈیٹا انٹیلی جنس۔ عمودی تلاش۔ عیسلیمان پٹیل مشین لرننگ اور ماڈرنائزیشن پر خصوصی توجہ کے ساتھ، ایمیزون ویب سروسز (AWS) میں ایک سینئر سولیوشن آرکیٹیکٹ ہیں۔ کاروبار اور ٹیکنالوجی دونوں میں اپنی مہارت کو بروئے کار لاتے ہوئے، سلیمان صارفین کو ایسے حل ڈیزائن اور بنانے میں مدد کرتا ہے جو حقیقی دنیا کے کاروباری مسائل سے نمٹتے ہیں۔ جب وہ اپنے کام میں مشغول نہیں ہوتا ہے، تو سلیمان کو باہر کی سیر کرنا، سڑکوں پر سفر کرنا، اور باورچی خانے میں مزیدار پکوان بنانا پسند ہے۔

ٹائم اسٹیمپ:

سے زیادہ AWS مشین لرننگ