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
一般的な言語については、検索拡張生成のページをご覧ください。 のディスカッション。