Pinecone eklentisi, Pinecone bulut vektör veritabanı.
Yapılandırma
Bu eklentiyi kullanmak için pinecone
paketini içe aktarın ve pinecone.Init()
çağrısı yapın:
import "github.com/firebase/genkit/go/plugins/pinecone"
if err := pinecone.Init(ctx, ""); err != nil {
return err
}
Eklenti için Pinecone API anahtarınız gerekir. Aşağıdakilerden birini yaparak eklentiyi, API anahtarınızı kullanacak şekilde yapılandırın:
PINECONE_API_KEY
ortam değişkenini API anahtarınıza ayarlayın.Eklentiyi başlatırken API anahtarını belirtin:
if err := pinecone.Init(ctx, pineconeAPIKey); err != nil { return err }
Ancak API anahtarınızı doğrudan koda yerleştirmeyin. Yalnızca bu özelliği kullan Google Cloud Secret Manager gibi bir hizmetle bağlantılı şekilde kullanabilirsiniz.
Kullanım
Pinecone dizinine doküman eklemek için öncelikle dizinin adını ve kullandığınız yerleştirme modelini belirtir:
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
}
Dilerseniz Pinecone'ın doküman verileri için kullandığı anahtarı da belirtebilirsiniz.
(varsayılan olarak _content
).
Ardından, dizinin Index()
yöntemini çağırın ve bu yönteme, taradığınız dokümanların listesini ileterek
eklemek istediğiniz öğe:
if err := ai.Index(
ctx,
menuIndexer,
ai.WithIndexerDocs(docChunks...)); err != nil {
return err
}
Benzer şekilde, bir dizinden doküman almak için önce bir retriever oluşturun tanım:
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
}
Ardından, retriever'ın Retrieve()
yöntemini çağırarak bir metin sorgusu iletin:
resp, err := menuRetriever.Retrieve(ctx, &ai.RetrieverRequest{
Document: ai.DocumentFromText(userInput, nil),
Options: nil,
})
if err != nil {
return err
}
menuInfo := resp.Documents
Genel kurallar için Almayla artırılmış oluşturma sayfasına bakın ve RAG için dizinleyici ve alıcıların kullanımı üzerine bir tartışma.