Pin kozalağı eklentisi

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 birlikte kullanılabilir.

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 := menuIndexer.Index(
    ctx,
    &ai.IndexerRequest{Documents: docChunks, Options: nil},
); 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ğırıp 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.