メインコンテンツへスキップ
Pineconeは、セマンティック検索とRAG(Retrieval-Augmented Generation)アプリケーションを可能にする、フルマネージドのベクトルデータベースです。Pineconeツールを使用すると、セマンティック類似性を使用してベクトルインデックスから類似ベクトルをクエリできます。
  • PINECONE_CREATE_INDEX
    • 新しいサーバーレスベクトルインデックスの作成
    • ベクトル次元と距離メトリックの設定
    • クラウドプロバイダーとデプロイメントリージョンの選択
    • オプションの統合推論: 埋め込みモデルを指定すると、Pineconeがテキストを自動で埋め込み
    • すぐに使用可能にするwait-until-readyオプション
  • PINECONE_QUERY
    • セマンティック類似性を使用した類似ベクトルの検索
    • デュアルモード動作: ベクトルクエリまたは統合推論によるテキストクエリ
    • Top-K結果の取得をサポート
    • Pineconeフィルタ構文によるメタデータフィルタリング
    • データの分割のための名前空間分離
    • 類似度しきい値フィルタリング(minScore)
    • メタデータとベクトル値のオプション含有
  • PINECONE_UPSERT
    • Pineconeインデックスへのベクトル挿入または更新
    • デュアルモード動作: ベクトルアップサートまたは統合推論によるドキュメントアップサート
    • バッチ操作(1リクエストあたり最大100ベクトル/ドキュメント)
    • 豊富なベクトルアノテーションのためのメタデータサポート
    • データ整理のための名前空間分離

Pineconeの認証情報で接続する

このツールを使用するには、Pinecone APIキーが必要です。Pineconeコンソールから取得できます。 注意: APIキーは機密情報として扱い、公開リポジトリにコミットしないでください。

インデックスを作成してドキュメントを登録する

embeddingModelを指定すると統合推論に対応したインデックスが作成され、ドキュメントとクエリのテキストをPineconeが自動で埋め込みます。次元数はモデルで決まるため、dimensionは不要です。
アップサートした件数はsteps.upload_docs.result.upsertedCountで取得できます。検索結果はsteps.search.result.matchesに入り、各マッチにはid、score、metadata(textやcategoryなど、レコードに保存したフィールド)が含まれます。

インデックスを照会する

例: リランキングを使用した関連性の向上

リランキングは初期結果を再スコアリングして関連性を向上させます。複雑なクエリに特に有効です。
リランキングはテキストクエリ(query)で使用します。rerankModelを指定する場合はrerankRankFieldsが必須で、そこに挙げたフィールドはすべてfieldsにも含める必要があります。rerankTopNはtopK以下にしてください。

例: メタデータフィルタリングを使用した検索

queryは統合推論を有効にして作成したインデックスでのみ使用できます。統合推論のないインデックスでは代わりにvectorを指定します。インデックス作成時と同じ埋め込みモデルで生成した数値のJSON配列で、長さをインデックスの次元数と一致させてください。Jinba Flowには埋め込みを生成する組み込みステップがないため、ベクトルは外部で用意する必要があります。

例: 検索したコンテキストで質問に回答(RAG)

ユーザーの質問でインデックスを検索し、ヒットした内容をコンテキストとしてLLMに渡します。
{{steps.search.result.matches}}はJSONテキストとして挿入されるため、LLMは各マッチのmetadata.textを参照できます。回答はsteps.generate_answer.result.contentで取得できます。

パラメータ

PINECONE_CREATE_INDEX

*dimension(標準インデックス)またはembeddingModel(統合推論)のいずれかを指定してください。

PINECONE_QUERY

*vectorまたはqueryのいずれかを指定する必要がありますが、両方は指定できません。

PINECONE_UPSERT

*vectorsまたはdocumentsのいずれかを指定する必要がありますが、両方は指定できません。

出力

PINECONE_QUERYはresultの下に以下を返します(steps.<id>.result.matchesなど)。PINECONE_UPSERTはresult.upsertedCountを返します。

ユースケース

RAG(Retrieval-Augmented Generation)

PineconeとOPENAI_INVOKEなどのLLMツールを組み合わせてRAGを構築します(上記のRAGの例を参照):
  1. ユーザーの質問をテキストのquery(統合推論)で、またはJinba Flowの外部で生成したインデックスと同じ次元のvectorでPineconeを検索
  2. result.matchesから関連ドキュメントを取得
  3. 取得した内容をコンテキストとしてLLMのプロンプトに渡す

セマンティック検索

キーワードではなく意味でドキュメントを検索:
  • 類似記事の検索
  • 関連コンテンツの推奨
  • 関連情報の発見

質問応答

コンテキスト取得を使用したQ&Aシステムの構築:
  • 技術ドキュメント検索
  • カスタマーサポートナレッジベース
  • 研究論文の発見

リソース