メインコンテンツへスキップ

概要

Pineconeは、セマンティック検索とRAG(Retrieval-Augmented Generation)アプリケーションを可能にする、フルマネージドのベクトルデータベースです。Pineconeツールを使用すると、セマンティック類似性を使用してベクトルインデックスから類似ベクトルをクエリできます。

主な機能

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

認証

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

例: インデックス作成とドキュメントアップサート(統合推論)

この例は、Pineconeの統合推論機能を使用した完全なワークフローを示しています - 外部埋め込みツールは不要です!
# ステップ1: サーバーレスインデックスを作成
- id: create_index
  name: create_index
  tool: PINECONE_CREATE_INDEX
  config:
    - name: apiKey
      value: "{{secrets.PINECONE_API_KEY}}"
  input:
    - name: indexName
      value: knowledge-base
    - name: dimension
      value: 1024
    - name: metric
      value: cosine
    - name: cloud
      value: aws
    - name: region
      value: us-east-1
    - name: waitUntilReady
      value: true

# ステップ2: 自動埋め込みでドキュメントをアップロード
- id: upload_docs
  name: upload_docs
  tool: PINECONE_UPSERT
  config:
    - name: apiKey
      value: "{{secrets.PINECONE_API_KEY}}"
  input:
    - name: indexName
      value: knowledge-base
    - name: documents
      value: |
        [
          {
            "id": "doc1",
            "text": "Pineconeは、AIアプリケーション向けに最適化されたベクトルデータベースです。",
            "metadata": {"category": "intro", "source": "docs"}
          },
          {
            "id": "doc2",
            "text": "統合推論は、テキストから自動的に埋め込みを生成します。",
            "metadata": {"category": "features", "source": "docs"}
          }
        ]

# ステップ3: テキストでクエリ(自動埋め込み)
- id: search
  name: search
  tool: PINECONE_QUERY
  config:
    - name: apiKey
      value: "{{secrets.PINECONE_API_KEY}}"
  input:
    - name: indexName
      value: knowledge-base
    - name: query
      value: "Pineconeは埋め込みをどのように処理しますか?"
    - name: topK
      value: 3
    - name: includeMetadata
      value: true

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

リランキングは初期結果を再スコアリングして関連性を向上させます。複雑なクエリに特に有効です。
- id: search_with_rerank
  name: search_with_rerank
  tool: PINECONE_QUERY
  config:
    - name: apiKey
      value: "{{secrets.PINECONE_API_KEY}}"
  input:
    - name: indexName
      value: knowledge-base
    - name: query
      value: "Pineconeは埋め込みをどのように処理しますか?"
    - name: topK
      value: 10
    - name: includeMetadata
      value: true
    - name: rerankModel
      value: bge-reranker-v2-m3  # オプション: cohere-rerank-3.5, bge-reranker-v2-m3, pinecone-rerank-v0
    - name: rerankTopN
      value: 3
    - name: rerankRankFields
      value: '["text"]'
    - name: fields
      value: '["category", "text"]'

例: OpenAI埋め込みを使用した従来のセマンティック検索

- id: generate_embeddings
  name: generate_embeddings
  tool: OPENAI_CREATE_EMBEDDING
  config:
    - name: api_key
      value: "{{secrets.OPENAI_API_KEY}}"
  input:
    - name: input
      value: セマンティック検索とは何ですか?
    - name: model
      value: text-embedding-3-large

- id: search_pinecone
  name: search_pinecone
  tool: PINECONE_QUERY
  config:
    - name: apiKey
      value: "{{secrets.PINECONE_API_KEY}}"
  input:
    - name: indexName
      value: my-docs-index
    - name: vector
      value: "{{steps.generate_embeddings.result.data[0].embedding}}"
    - name: topK
      value: 5
    - name: minScore
      value: 0.7
    - name: includeMetadata
      value: true

- id: generate_answer
  name: generate_answer
  tool: OPENAI_INVOKE
  config:
    - name: version
      value: gpt-4
  input:
    - name: prompt
      value: |
        提供されたコンテキストに基づいて、以下の質問に答えてください。

        コンテキスト:
        {{steps.search_pinecone.result.matches[0].metadata.text}}
        {{steps.search_pinecone.result.matches[1].metadata.text}}

        質問: セマンティック検索とは何ですか?

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

- id: filtered_search
  name: filtered_search
  tool: PINECONE_QUERY
  config:
    - name: apiKey
      value: "{{secrets.PINECONE_API_KEY}}"
  input:
    - name: indexName
      value: my-docs-index
    - name: vector
      value: "[0.1, 0.2, 0.3, ...]"
    - name: topK
      value: 10
    - name: filter
      value: '{"category": {"$eq": "technology"}, "year": {"$gte": 2020}}'
    - name: namespace
      value: production

パラメータ

PINECONE_CREATE_INDEX

パラメータ必須デフォルト説明
indexNamestringはい-インデックス名(小文字英数字とハイフン、最大45文字)
dimensionnumberはい-ベクトル次元(例: OpenAI ada-002の場合1536)
metricstringいいえcosine距離メトリック: cosine, euclidean, dotproduct
cloudstringいいえawsクラウドプロバイダー: aws, gcp, azure
regionstringはい-デプロイメントリージョン(例: us-east-1)
deletionProtectionstringいいえdisabled削除保護を有効化: enabled または disabled
waitUntilReadybooleanいいえtrueインデックスの準備完了まで待機

PINECONE_QUERY

パラメータ必須デフォルト説明
indexNamestringはい-クエリするPineconeインデックスの名前
vectornumber[]いいえ*-数値の配列としてのクエリベクトル
querystringいいえ*-統合推論用のテキストクエリ(自動埋め込み)
topKnumberいいえ10返す結果の数(1-100)
namespacestringいいえ-インデックス内でクエリする名前空間
filterobjectいいえ-Pineconeフィルタ構文を使用したメタデータフィルタ
minScorenumberいいえ-最小類似度スコアしきい値(0-1)
includeMetadatabooleanいいえtrue結果にメタデータを含める
includeValuesbooleanいいえfalse結果にベクトル値を含める
*vectorまたはqueryのいずれかを指定する必要がありますが、両方は指定できません。

PINECONE_UPSERT

パラメータ必須デフォルト説明
indexNamestringはい-Pineconeインデックスの名前
vectorsarrayいいえ*-ベクトルオブジェクトの配列(id, values, metadata)
documentsarrayいいえ*-統合推論用のドキュメントオブジェクトの配列(id, text, metadata)
namespacestringいいえ-データ整理のための名前空間
*vectorsまたはdocumentsのいずれかを指定する必要がありますが、両方は指定できません。

出力

ツールは以下の構造のオブジェクトを返します:
{
  "matches": [
    {
      "id": "vec1",
      "score": 0.95,
      "metadata": {
        "title": "ドキュメントタイトル",
        "text": "ドキュメント内容...",
        "category": "technology"
      }
    }
  ],
  "namespace": "production",
  "usage": {
    "readUnits": 5
  }
}

ユースケース

RAG(Retrieval-Augmented Generation)

PineconeとOpenAIを組み合わせてRAGアプリケーションを構築:
  1. ユーザークエリから埋め込みを生成
  2. Pineconeで関連ドキュメントを検索
  3. 取得したコンテキストをLLMプロンプトで使用

セマンティック検索

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

質問応答

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

リソース