Pinecone प्लगिन

Pinecone प्लगिन ऐसे इंडेक्सर और रिट्रीवर इंप्लिमेंटन उपलब्ध कराता है जो Pinecone क्लाउड वेक्टर डेटाबेस.

कॉन्फ़िगरेशन

इस प्लग इन का उपयोग करने के लिए pinecone पैकेज आयात करें और pinecone.Init() को कॉल करें:

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

प्लगिन के लिए, आपके Pinecone API पासकोड की ज़रूरत है. अपनी एपीआई कुंजी का इस्तेमाल करने के लिए, प्लग इन को कॉन्फ़िगर करें. इसके लिए, इनमें से कोई एक काम करें:

  • PINECONE_API_KEY एनवायरमेंट वैरिएबल को अपनी एपीआई पासकोड पर सेट करें.

  • प्लग इन शुरू करते समय एपीआई पासकोड तय करें:

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

    हालांकि, अपनी एपीआई कुंजी को सीधे कोड में एम्बेड न करें! सिर्फ़ इस सुविधा का इस्तेमाल करें के साथ करना होगा.

इस्तेमाल किए जाने से जुड़ी जानकारी

पाइनकोन इंडेक्स में दस्तावेज़ जोड़ने के लिए सबसे पहले एक ऐसी इंडेक्स परिभाषा बनाएं जो इंडेक्स के नाम और उस एम्बेड मॉडल से जुड़ी जानकारी देता है जिसका इस्तेमाल किया जा रहा है:

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

सामान्य जानकारी के लिए रीट्रीवल-एगमेंटेड जनरेशन पेज देखें आरएजी के लिए इंडेक्सर और रिट्रीवर का इस्तेमाल करने पर चर्चा.