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 := 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 使用索引和擷取器的討論。