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 金鑰。 採取下列任一做法,設定外掛程式以使用 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 := menuIndexer.Index(
    ctx,
    &ai.IndexerRequest{Documents: docChunks, Options: nil},
); 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 使用索引和擷取器的討論。