Pineconeの使い方:ベクトルデータベース連携
執筆:Ai Flowi · 公開日
公式情報源:Pinecone ドキュメント
Pineconeの使い方を解説します。Pineconeの連携機能は、設定済みのPineconeストアをAI Flowi Workflowの検索・取り込みフィールドへ接続します。検索結果を評価する前に、APIキーとインデックス名を設定し、対象の名前空間を選び、互換性のある埋め込みモデルを接続してください。このページではコンポーネントの仕様を説明します。ホスティングされたデータベースの準備手順は扱いません。
エクスポートされたPinecone入力は、インデックス選択、内容のグループ分け、テキスト検索を扱います。以下の手順は、設定例。
1. インデックスとアカウントを準備する
ご自身のPineconeアカウント、対象インデックスへの権限を持つAPIキー、選択する埋め込みプロバイダーへのアクセスが必要です。インデックスの認証情報は非公開の設定で保護します。インデックス名はリソースの選択値であり、認可の代わりにはなりません。
Pineconeのインデックスを選ぶ前に、テキストの埋め込みの説明で、表現の互換性を確認してください。
設定の記録には、index_name、namespace、distance_strategyと、準備済みのプロバイダーリソースとの対応を残してください。例として製品マニュアルのライブラリを用いる場合、現行版と旧版を、確認済みの別々の名前空間に分け、クエリが実際にどちらへ届くかを調べます。旧版マニュアルの結果はもっともらしくても、別の製品バージョンについて答えている場合があります。エクスポートには名前空間の探索やインデックス作成の制御がないため、ワークフローで識別子を推測せず、ご自身のアカウントから取得してください。
直近の作業が、閲覧を許可されたwikiを読むだけであれば、Confluence連携から始めてください。ソース内容の読み込みとインデックス検索は別の段階です。Pineconeノードを追加しても、ソースの権限が検索に引き継がれるとは確認できません。
2. Pineconeのフィールドを設定する
表は、エクスポートされた必須フラグに従っています。「任意」は、そのエクスポートで必須とされていないという意味です。このフラグからPineconeの既定値や実行時に設定が十分かどうかを判断することはできません。
カタログに基づく設定例。Ai Flowi による本番検証は未実施です。
| フィールド | 設定時の判断事項 | 型 / 必須 | 接続型 / 選択肢 |
|---|---|---|---|
distance_strategy | この距離尺度を、Pineconeインデックスについて記録した設定と一致させます。 | str / いいえ | Pinecone: input_typesの記載なし;選択肢: “Cosine”, “Euclidean”, “Dot Product” |
embedding | Pineconeインデックスと一致するモデルオブジェクトを接続します。数値のJSONでそのオブジェクトを代用することはできません。 | other / いいえ | Pinecone 接続型: Embeddings |
index_name | ご自身のプロバイダーアカウントで確認した、対象インデックスの正確な識別子を使用します。 | str / はい | Pinecone: input_typesの記載なし |
ingest_data | Data、DataFrame、Tableを渡す前に、Pineconeの取り込みサンプルを確認してください。 | other / いいえ | Pinecone 接続型: Data, DataFrame, Table |
namespace | マニュアルのグループを選びます。空の名前空間は別途調べてください。 | str / いいえ | Pinecone: input_typesの記載なし |
number_of_results | 確認用に小さな件数を設定します。カタログには既定値も範囲もありません。 | int / いいえ | Pinecone: input_typesの記載なし |
pinecone_api_key | 利用権限のあるご自身の認証情報を非公開で指定し、共有する例へコピーしないでください。 | str / はい | Pinecone: input_typesは[] |
search_query | 質問を、Messageと接続できるクエリ入力として指定します。 | query / いいえ | Pinecone 接続型: Message |
should_cache_vector_store | マニュアルを改訂したら、このキャッシュ切り替え設定を再確認してください。Pineconeの更新タイミングは未検証です。 | bool / いいえ | Pinecone: input_typesの記載なし |
text_key | 準備済みのレコードでテキストを保持するフィールドに合わせます。既定のフィールド名は確認されていません。 | str / いいえ | Pinecone: input_typesの記載なし |
3. 範囲を限定した検索設定から始める
- 準備済みのデータにOpenAIの埋め込みを使用している場合は、OpenAI Embeddingsを追加します。インデックスと一致する
modelを選び、非公開のopenai_api_keyを設定してください。カタログの選択肢には、"text-embedding-3-small"が含まれます。これは利用可能な設定であり、すべてのインデックスへの推奨ではありません。 - OpenAI Embeddingsの
embeddingsをPineconeのembeddingへ接続し、そのPineconeインデックスについて記録したモデル設定に従います。 - Pineconeの
index_nameを準備済みのインデックスに、namespaceを架空のデータ専用の名前空間に設定します。確認したマニュアルのテキストフィールドを、text_keyに指定してください。 - テスト文書の主題に関する質問など、架空の
search_queryを入力します。件数の例として、number_of_resultsを3に設定してください。検索経路を調べる間は、ingest_dataを接続せず、実行前に動作を確認します。 - 選択した出力とプロバイダー側のレコードを確認します。回答に使用する前に、ソーステキストと参照情報が対象の名前空間に属することを確かめてください。
これらの設定は、取り込み入力を空にすればすべての書き込みを防げることや、選択した距離計算方式がプロバイダーのインデックス設定を上書きすることを保証しません。Pineconeへの書き込みを伴わない検索に依存する前に、使い捨ての内容で両方の動作を確認してください。
4. 検索結果を受信コンポーネントへ対応付ける
Pineconeは、search_resultsをSearch Resultsという表示名のJSON型として、dataframeをTableという表示名のTable型としてエクスポートします。後続のJSON処理には前者のポートが必要で、Table対応の受信側は後者を使用できます。このカタログのスナップショットには、Pineconeの結果キー、スコアフィールド、メタデータ列はありません。
有用な出力は、準備済みのソースまで内容をたどれる、検索されたレコードの集合です。マニュアルの例では、引用を作る前に、検索された文章と版の参照情報を確認してください。観測した件数だけでは、マニュアルの名前空間を網羅したとは示せません。製品についての回答を受け入れる前に、引用元の文章を確認します。
取り込みと検索を分ける
入力のingest_dataは構造化されたソースデータに対応しますが、エクスポートにはレコード識別子、置き換え動作、重複処理の情報がありません。小さな取り込みサンプルを別途用意し、マニュアルの版の参照情報を保持して、プロバイダーのレコードの変化を確認してください。未知の取り込み動作を、本番の質問応答フローに組み込まないでください。
設定のtext_keyはテキストを含むレコードフィールドを、namespaceは選択したグループを指定します。これらのPinecone選択値には、読み手の認可ポリシーが文書化されていません。複数のチームでインデックスを共有する場合は、クエリで他チームのレコードが見えてしまわないか試し、検索した資料を表示する前にアクセス制御を適用してください。
Pinecone以外の方法を選ぶべき場合はいつですか?
ここにある出力だけでは、検索品質、スコアのしきい値、インデックス作成、ソースの自動同期、古いベクトルの削除を確認できません。キャッシュ動作とプロバイダーの失敗処理も個別に確認が必要です。認証情報、名前空間、内容を変更した後は、キャッシュが変更に追従すると想定せず、新しい結果を確認してください。
識別子による厳密な検索で作業を満たせる場合、埋め込み設定を確認できない場合、または未実装の文書ごとの権限をワークフローで強制する必要がある場合は、この連携を使用しないでください。PostgreSQLを使うベクトルストア仕様と比較するなら、PGVectorを参照してください。接続フィールドとコレクションフィールドが異なります。
利用量と関連する設定
他のノードの仕様は、コンポーネントカタログと連携ハブで確認できます。