הפלאגין של Pinecone

הפלאגין Pinecone מספק הטמעות של מפתחות אינדקס ומאגרי אחזור שמשתמשים במסד הנתונים של וקטורים בענן Pinecone.

תצורה

כדי להשתמש בפלאגין הזה, מייבאים את החבילה pinecone ומפעילים את pinecone.Init():

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

לפלאגין נדרש מפתח ה-API של Pinecone. מגדירים את הפלאגין לשימוש במפתח ה-API באמצעות אחת מהפעולות הבאות:

  • מגדירים את משתנה הסביבה PINECONE_API_KEY למפתח ה-API.

  • מציינים את מפתח ה-API כשמאתחלים את הפלאגין:

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

    עם זאת, אל תטמיעו את מפתח ה-API ישירות בקוד! מומלץ להשתמש בתכונה הזו רק בשילוב עם שירות כמו Cloud Secret Manager או שירות דומה.

שימוש

כדי להוסיף מסמכים לאינדקס 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.