Pinecone
Managed vector database purpose-built for AI applications. Fully hosted with serverless scaling and a free tier (100k vectors). The fastest way to add semantic search or RAG to production.
Why Pinecone?
You want a managed vector DB with zero ops overhead
You're building RAG and need fast semantic search
You need serverless scaling with pay-per-use pricing
Signal Breakdown
What drives the Trust Score
Download Trend
Last 12 months
Tradeoffs & Caveats
Know before you commitYou need on-premise or self-hosted (try Weaviate or Chroma)
You want to run locally during development (use Chroma)
Cost at scale — gets expensive past 1M vectors
Pricing
Free tier & paid plans
1 index · 100K vectors (Starter)
$70/mo Serverless or pay-per-use
Serverless pricing scales with usage
Cost Calculator
Estimate your Pinecone cost
Estimated monthly cost
Free tier
Starter plan: 100K vectors free. Beyond that, Serverless from ~$0.04/1M reads.
Estimates only. Verify with official pricing pages before budgeting.
Often Used Together
Complementary tools that pair well with Pinecone
Learning Resources
Docs, videos, tutorials, and courses
Get Started
Repository and installation options
View on GitHub
github.com/pinecone-io/pinecone-ts-client
npm install @pinecone-database/pineconepip install pineconeQuick Start
Copy and adapt to get going fast
from pinecone import Pinecone
import os
pc = Pinecone(api_key=os.environ["PINECONE_API_KEY"])
index = pc.Index("my-index")
# Upsert vectors
index.upsert(vectors=[{
"id": "doc-1",
"values": embedding,
"metadata": {"text": "Source document text"},
}])
# Query
results = index.query(vector=query_embedding, top_k=5, include_metadata=True)
for match in results["matches"]:
print(match["metadata"]["text"], match["score"])Code Examples
Common usage patterns
RAG pipeline with OpenAI embeddings
Embed text and retrieve semantically similar chunks
import OpenAI from 'openai';
import { Pinecone } from '@pinecone-database/pinecone';
const openai = new OpenAI({ apiKey: process.env.OPENAI_API_KEY });
const pc = new Pinecone({ apiKey: process.env.PINECONE_API_KEY! });
const index = pc.index('docs');
async function embed(text: string) {
const res = await openai.embeddings.create({ model: 'text-embedding-3-small', input: text });
return res.data[0].embedding;
}
// Index documents
const docs = ['Pinecone is a vector database.', 'It supports serverless scaling.'];
await index.upsert(await Promise.all(docs.map(async (d, i) => ({
id: `doc-${i}`, values: await embed(d), metadata: { text: d },
}))));
// Query
const q = await embed('What is Pinecone?');
const { matches } = await index.query({ vector: q, topK: 3, includeMetadata: true });
const context = matches.map(m => m.metadata?.text).join('
');Create a serverless index
Provision a new Pinecone index via SDK
const pc = new Pinecone({ apiKey: process.env.PINECONE_API_KEY! });
await pc.createIndex({
name: 'my-index',
dimension: 1536,
metric: 'cosine',
spec: {
serverless: { cloud: 'aws', region: 'us-east-1' },
},
});Namespace isolation
Store vectors for different tenants in separate namespaces
const index = pc.index('my-index');
// Write to a namespace
await index.namespace('tenant-abc').upsert([{ id: 'doc-1', values: embedding }]);
// Query within namespace
const results = await index.namespace('tenant-abc').query({
vector: queryEmbedding, topK: 5, includeMetadata: true,
});Community Notes
Real experiences from developers who've used this tool