পাইনকোন প্লাগইন

Pinecone প্লাগইন ইনডেক্সার এবং রিট্রিভার ইমপ্লিমেন্টন প্রদান করে যেগুলি Pinecone ক্লাউড ভেক্টর ডাটাবেস ব্যবহার করে।

কনফিগারেশন

এই প্লাগইনটি ব্যবহার করতে, pinecone প্যাকেজ আমদানি করুন এবং pinecone.Init() কল করুন :

import "github.com/firebase/genkit/go/plugins/pinecone"
if err := pinecone.Init(ctx, ""); err != nil {
	return err
}

প্লাগইনটির জন্য আপনার Pinecone API কী প্রয়োজন। নিম্নলিখিতগুলির মধ্যে একটি করে আপনার API কী ব্যবহার করার জন্য প্লাগইনটি কনফিগার করুন:

  • আপনার API কীতে PINECONE_API_KEY পরিবেশ পরিবর্তনশীল সেট করুন।

  • আপনি যখন প্লাগইন শুরু করবেন তখন API কী নির্দিষ্ট করুন:

    if err := pinecone.Init(ctx, pineconeAPIKey); err != nil {
    	return err
    }
    

    যাইহোক, কোডে সরাসরি আপনার API কী এম্বেড করবেন না! শুধুমাত্র ক্লাউড সিক্রেট ম্যানেজার বা অনুরূপ একটি পরিষেবার সাথে এই বৈশিষ্ট্যটি ব্যবহার করুন৷

ব্যবহার

একটি Pinecone সূচকে নথি যোগ করতে, প্রথমে একটি সূচক সংজ্ঞা তৈরি করুন যা সূচকের নাম এবং আপনি যে এমবেডিং মডেলটি ব্যবহার করছেন তা নির্দিষ্ট করে:

menuIndexer, err := pinecone.DefineIndexer(ctx, pinecone.Config{
	IndexID:  "menu_data",                             // Your Pinecone index
	Embedder: googleai.Embedder("text-embedding-004"), // Embedding model of your choice
})
if err != nil {
	return err
}

এছাড়াও আপনি ঐচ্ছিকভাবে কী উল্লেখ করতে পারেন যেটি Pinecone ডকুমেন্ট ডেটার জন্য ব্যবহার করে ( _content , ডিফল্টরূপে)।

তারপর, ইনডেক্সের Index() পদ্ধতিতে কল করুন, আপনি যে নথিগুলি যোগ করতে চান তার একটি তালিকা পাস করুন:

if err := ai.Index(
	ctx,
	menuIndexer,
	ai.WithIndexerDocs(docChunks...)); err != nil {
	return err
}

একইভাবে, একটি সূচক থেকে নথি পুনরুদ্ধার করতে, প্রথমে একটি পুনরুদ্ধারের সংজ্ঞা তৈরি করুন:

menuRetriever, err := pinecone.DefineRetriever(ctx, pinecone.Config{
	IndexID:  "menu_data",                             // Your Pinecone index
	Embedder: googleai.Embedder("text-embedding-004"), // Embedding model of your choice
})
if err != nil {
	return err
}

তারপর, পুনরুদ্ধারকারীর Retrieve() পদ্ধতিতে কল করুন, এটি একটি পাঠ্য ক্যোয়ারী পাস করুন:

resp, err := menuRetriever.Retrieve(ctx, &ai.RetrieverRequest{
	Document: ai.DocumentFromText(userInput, nil),
	Options:  nil,
})
if err != nil {
	return err
}
menuInfo := resp.Documents

RAG-এর জন্য সূচক এবং পুনরুদ্ধার ব্যবহার করার বিষয়ে একটি সাধারণ আলোচনার জন্য পুনরুদ্ধার-বর্ধিত প্রজন্মের পৃষ্ঠাটি দেখুন।