pinecone
本番AIアプリケーション向けのマネージドベクターデータベース。フルマネージドかつオートスケーリングに対応し、ハイブリッド検索(密+疎)、メタデータフィルタリング、名前空間をサポート。レイテンシは100ms未満(p95)を実現。本番RAG、レコメンデーションシステム、大規模セマンティック検索に最適で、サーバーレス・マネージドインフラを活用したい場合に特に有効。
description の原文を見る
Managed vector database for production AI applications. Fully managed, auto-scaling, with hybrid search (dense + sparse), metadata filtering, and namespaces. Low latency (<100ms p95). Use for production RAG, recommendation systems, or semantic search at scale. Best for serverless, managed infrastructure.
SKILL.md 本文
Pinecone - マネージド ベクトルデータベース
本番AI アプリケーション向けのベクトルデータベース。
Pinecone を使う時機
以下の場合に使用:
- マネージド、サーバーレスのベクトルデータベースが必要
- 本番環境の RAG アプリケーション
- 自動スケーリングが必要
- 低レイテンシが重要 (<100ms)
- インフラストラクチャを管理したくない
- ハイブリッド検索 (デンスベクトル + スパースベクトル) が必要
メトリクス:
- フルマネージド SaaS
- 数十億のベクトルまで自動スケーリング
- p95 レイテンシ <100ms
- 99.9% アップタイム SLA
代替案を検討:
- Chroma: セルフホスト、オープンソース
- FAISS: オフライン、純粋な類似度検索
- Weaviate: セルフホスト、より多くの機能
クイックスタート
インストール
pip install pinecone-client
基本的な使い方
from pinecone import Pinecone, ServerlessSpec
# 初期化
pc = Pinecone(api_key="your-api-key")
# インデックス作成
pc.create_index(
name="my-index",
dimension=1536, # Must match embedding dimension
metric="cosine", # or "euclidean", "dotproduct"
spec=ServerlessSpec(cloud="aws", region="us-east-1")
)
# インデックスに接続
index = pc.Index("my-index")
# ベクトルをアップサート
index.upsert(vectors=[
{"id": "vec1", "values": [0.1, 0.2, ...], "metadata": {"category": "A"}},
{"id": "vec2", "values": [0.3, 0.4, ...], "metadata": {"category": "B"}}
])
# クエリ実行
results = index.query(
vector=[0.1, 0.2, ...],
top_k=5,
include_metadata=True
)
print(results["matches"])
コア操作
インデックス作成
# サーバーレス (推奨)
pc.create_index(
name="my-index",
dimension=1536,
metric="cosine",
spec=ServerlessSpec(
cloud="aws", # or "gcp", "azure"
region="us-east-1"
)
)
# ポッドベース (一貫した性能向け)
from pinecone import PodSpec
pc.create_index(
name="my-index",
dimension=1536,
metric="cosine",
spec=PodSpec(
environment="us-east1-gcp",
pod_type="p1.x1"
)
)
ベクトルをアップサート
# 単一アップサート
index.upsert(vectors=[
{
"id": "doc1",
"values": [0.1, 0.2, ...], # 1536 dimensions
"metadata": {
"text": "Document content",
"category": "tutorial",
"timestamp": "2025-01-01"
}
}
])
# バッチアップサート (推奨)
vectors = [
{"id": f"vec{i}", "values": embedding, "metadata": metadata}
for i, (embedding, metadata) in enumerate(zip(embeddings, metadatas))
]
index.upsert(vectors=vectors, batch_size=100)
ベクトルをクエリ
# 基本的なクエリ
results = index.query(
vector=[0.1, 0.2, ...],
top_k=10,
include_metadata=True,
include_values=False
)
# メタデータフィルタ付き
results = index.query(
vector=[0.1, 0.2, ...],
top_k=5,
filter={"category": {"$eq": "tutorial"}}
)
# ネームスペースクエリ
results = index.query(
vector=[0.1, 0.2, ...],
top_k=5,
namespace="production"
)
# 結果にアクセス
for match in results["matches"]:
print(f"ID: {match['id']}")
print(f"Score: {match['score']}")
print(f"Metadata: {match['metadata']}")
メタデータフィルタリング
# 完全一致
filter = {"category": "tutorial"}
# 比較演算子
filter = {"price": {"$gte": 100}} # $gt, $gte, $lt, $lte, $ne
# 論理演算子
filter = {
"$and": [
{"category": "tutorial"},
{"difficulty": {"$lte": 3}}
]
} # Also: $or
# In演算子
filter = {"tags": {"$in": ["python", "ml"]}}
ネームスペース
# ネームスペース単位でデータを分割
index.upsert(
vectors=[{"id": "vec1", "values": [...]}],
namespace="user-123"
)
# 特定のネームスペースをクエリ
results = index.query(
vector=[...],
namespace="user-123",
top_k=5
)
# ネームスペースを一覧表示
stats = index.describe_index_stats()
print(stats['namespaces'])
ハイブリッド検索 (デンス + スパース)
# スパースベクトル付きアップサート
index.upsert(vectors=[
{
"id": "doc1",
"values": [0.1, 0.2, ...], # Dense vector
"sparse_values": {
"indices": [10, 45, 123], # Token IDs
"values": [0.5, 0.3, 0.8] # TF-IDF scores
},
"metadata": {"text": "..."}
}
])
# ハイブリッドクエリ
results = index.query(
vector=[0.1, 0.2, ...],
sparse_vector={
"indices": [10, 45],
"values": [0.5, 0.3]
},
top_k=5,
alpha=0.5 # 0=sparse, 1=dense, 0.5=hybrid
)
LangChain 統合
from langchain_pinecone import PineconeVectorStore
from langchain_openai import OpenAIEmbeddings
# ベクトルストア作成
vectorstore = PineconeVectorStore.from_documents(
documents=docs,
embedding=OpenAIEmbeddings(),
index_name="my-index"
)
# クエリ実行
results = vectorstore.similarity_search("query", k=5)
# メタデータフィルタ付き
results = vectorstore.similarity_search(
"query",
k=5,
filter={"category": "tutorial"}
)
# リトリーバーとして使用
retriever = vectorstore.as_retriever(search_kwargs={"k": 10})
LlamaIndex 統合
from llama_index.vector_stores.pinecone import PineconeVectorStore
# Pinecone に接続
pc = Pinecone(api_key="your-key")
pinecone_index = pc.Index("my-index")
# ベクトルストア作成
vector_store = PineconeVectorStore(pinecone_index=pinecone_index)
# LlamaIndex で使用
from llama_index.core import StorageContext, VectorStoreIndex
storage_context = StorageContext.from_defaults(vector_store=vector_store)
index = VectorStoreIndex.from_documents(documents, storage_context=storage_context)
インデックス管理
# インデックス一覧
indexes = pc.list_indexes()
# インデックス情報取得
index_info = pc.describe_index("my-index")
print(index_info)
# インデックス統計取得
stats = index.describe_index_stats()
print(f"Total vectors: {stats['total_vector_count']}")
print(f"Namespaces: {stats['namespaces']}")
# インデックス削除
pc.delete_index("my-index")
ベクトル削除
# ID で削除
index.delete(ids=["vec1", "vec2"])
# フィルタで削除
index.delete(filter={"category": "old"})
# ネームスペース内の全て削除
index.delete(delete_all=True, namespace="test")
# インデックス全体削除
index.delete(delete_all=True)
ベストプラクティス
- サーバーレスを使用 - 自動スケーリング、コスト効率的
- バッチアップサート - より効率的 (1バッチ100-200件)
- メタデータを追加 - フィルタリングを有効化
- ネームスペースを使用 - ユーザー/テナント単位でデータを分離
- 使用状況を監視 - Pinecone ダッシュボードで確認
- フィルタを最適化 - 頻繁にフィルタされるフィールドにインデックスを貼る
- フリーティアでテスト - 1インデックス、10万ベクトル無料
- ハイブリッド検索を使用 - より高い品質
- 適切なディメンション設定 - 埋め込みモデルに合わせる
- 定期的なバックアップ - 重要なデータをエクスポート
パフォーマンス
| 操作 | レイテンシ | 備考 |
|---|---|---|
| Upsert | ~50-100ms | バッチ単位 |
| Query (p50) | ~50ms | インデックスサイズに依存 |
| Query (p95) | ~100ms | SLA 目標 |
| Metadata filter | ~+10-20ms | 追加オーバーヘッド |
価格 (2025年現在)
サーバーレス:
- 読み取りユニット 100万件あたり $0.096
- 書き込みユニット 100万件あたり $0.06
- ストレージ GB/月あたり $0.06
フリーティア:
- サーバーレスインデックス 1個
- ベクトル 10万個 (1536次元)
- プロトタイピングに最適
リソース
- ウェブサイト: https://www.pinecone.io
- ドキュメント: https://docs.pinecone.io
- コンソール: https://app.pinecone.io
- 価格: https://www.pinecone.io/pricing
ライセンス: MIT(寛容ライセンスのため全文を引用しています) · 原本リポジトリ
詳細情報
- 作者
- davila7
- ライセンス
- MIT
- 最終更新
- 不明
Source: https://github.com/davila7/claude-code-templates / ライセンス: MIT
関連スキル
agent-browser
AI エージェント向けのブラウザ自動化 CLI です。ウェブサイトとの対話が必要な場合に使用します。ページ遷移、フォーム入力、ボタンクリック、スクリーンショット取得、データ抽出、ウェブアプリのテスト、ブラウザ操作の自動化など、あらゆるブラウザタスクに対応できます。「ウェブサイトを開く」「フォームに記入する」「ボタンをクリックする」「スクリーンショットを取得する」「ページからデータを抽出する」「このウェブアプリをテストする」「サイトにログインする」「ブラウザ操作を自動化する」といった要求や、プログラマティックなウェブ操作が必要なタスクで起動します。
anyskill
AnySkill — あなたのプライベート・スキルクラウド。GitHubを基盤としたリポジトリからエージェントスキルを管理、同期、動的にロードできます。自然言語でクラウドスキルを検索し、オンデマンドでプロンプトを自動ロード、カスタムスキルのアップロードと共有、スキルバンドルの一括インストールが可能です。OpenClaw、Antigravity、Claude Code、Cursorに対応しています。
engram
AIエージェント向けの永続的なメモリシステムです。バグ修正、意思決定、発見、設定変更の後はmem_saveを使用してください。ユーザーが「覚えている」「記憶している」と言及した場合、または以前のセッションと重複する作業を開始する際はmem_searchを使用します。セッション終了前にmem_session_summaryを使用して、コンテキストを保持してください。
skyvern
AI駆動のブラウザ自動化により、任意のウェブサイトを自動化できます。フォーム入力、データ抽出、ファイルダウンロード、ログイン、複数ステップのワークフロー実行など、ユーザーがウェブサイトと連携する必要があるときに使用します。Skyvernは、LLMとコンピュータビジョンを活用して、未知のサイトも自動操作可能です。Python SDK、TypeScript SDK、REST API、MCPサーバー、またはCLIを通じて統合できます。
pinchbench
PinchBenchベンチマークを実行して、OpenClawエージェントの実世界タスクにおけるパフォーマンスを評価できます。モデルの機能テスト、モデル間の比較、ベンチマーク結果のリーダーボード提出、またはOpenClawのセットアップがカレンダー、メール、リサーチ、コーディング、複数ステップのワークフローにどの程度対応しているかを確認する際に使用します。
openui
OpenUIとOpenUI Langを使用してジェネレーティブUIアプリを構築できます。これらはLLM生成インターフェースのためのトークン効率的なオープン標準です。OpenUI、@openuidev、ジェネレーティブUI、LLMからのストリーミングUI、AI向けコンポーネントライブラリ、またはjson-render/A2UIの置き換えについて述べる際に使用します。スキャフォルディング、defineComponent、システムプロンプト、Renderer、およびOpenUI Lang出力のデバッグに対応しています。