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

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