Pinecone für RAG in großskaliger Produktion
Setzen Sie produktionsbereite Vektorsuche ein: Konfiguration von Pinecone, Indexierungsstrategien und Skalierung bis zu Milliarden von Vektoren.
Warum Pinecone ?
- Vollständig verwaltet (keine Ops)
- Skalierbar bis zu Milliarden von vectors
- Latenz p95 von 50ms
- Integrierte Hybrid-Suche
- SOC 2-konform
Konfiguration (November 2025)
DEVELOPERpythonfrom pinecone import Pinecone pc = Pinecone(api_key="YOUR_API_KEY") # Index erstellen pc.create_index( name="rag-production", dimension=1536, # OpenAI text-embedding-3-small metric="cosine", spec=ServerlessSpec( cloud="aws", region="us-east-1" ) ) index = pc.Index("rag-production")
Einfügen von Dokumenten
DEVELOPERpythonfrom openai import OpenAI client = OpenAI() def upsert_documents(documents): vectors = [] for i, doc in enumerate(documents): # Embedding erzeugen embedding = client.embeddings.create( model="text-embedding-3-small", input=doc['text'] ).data[0].embedding vectors.append({ "id": f"doc_{i}", "values": embedding, "metadata": { "text": doc['text'], "source": doc['source'], "date": doc['date'] } }) # Batch-Einfügen (max. 100 pro Batch) for i in range(0, len(vectors), 100): batch = vectors[i:i+100] index.upsert(vectors=batch)
Abfragen
DEVELOPERpythondef search(query, top_k=10): # Anfrage-Embedding erstellen query_embedding = client.embeddings.create( model="text-embedding-3-small", input=query ).data[0].embedding # Suchen results = index.query( vector=query_embedding, top_k=top_k, include_metadata=True ) return [match['metadata']['text'] for match in results['matches']]
Metadatenfilterung
DEVELOPERpython# Nach Quelle filtern results = index.query( vector=query_embedding, filter={"source": {"$eq": "wikipedia"}}, top_k=10, include_metadata=True ) # Datumsbereich results = index.query( vector=query_embedding, filter={ "date": {"$gte": "2025-01-01", "$lte": "2025-12-31"} }, top_k=10 )
Namespaces (Multi-tenancy)
DEVELOPERpython# Kundendaten trennen index.upsert( vectors=[...], namespace="customer_123" ) # Ein bestimmtes Namespace abfragen results = index.query( vector=query_embedding, namespace="customer_123", top_k=10 )
Hybride Suche (Sparse + Dense)
DEVELOPERpython# Einfügen mit sparse Vektoren index.upsert( vectors=[{ "id": "doc1", "values": dense_vector, # Embedding dense "sparse_values": { "indices": [10, 45, 123], # Indices BM25 "values": [0.5, 0.3, 0.2] }, "metadata": {"text": "..."} }] ) # Hybride Anfrage results = index.query( vector=dense_query, sparse_vector={ "indices": [10, 45], "values": [0.6, 0.4] }, top_k=10, alpha=0.7 # Gewicht für dense )
Kostenoptimierung
Serverless-Preise (Nov 2025):
- $0.09 par million d'unités de lecture
- $2.00 par million d'unités d'écriture
- $0.00025 par GB-heure de stockage
Tipps:
- Serverless für variable Lasten verwenden
- Batch-Einfügungen (100 pro Anfrage)
- Häufige Anfragen cachen
- Alte Daten löschen
Überwachung
DEVELOPERpython# Index-Statistiken stats = index.describe_index_stats() print(f"Total vectors: {stats['total_vector_count']}") print(f"Dimension: {stats['dimension']}")
Pinecone ist produktionsreif. Verwenden Sie es, wenn Sie Skalierbarkeit, Zuverlässigkeit und zero ops benötigen.
Tags
Verwandte Artikel
Beste Vektordatenbanken 2025: Pinecone vs Qdrant vs Weaviate
Umfassender Vergleich von Vektordatenbanken für RAG: Pinecone, Qdrant, Weaviate, Milvus, Chroma. Benchmarks, Preise und Empfehlungen je nach Anwendungsfall.
Milvus: Vektorielle Suche im Milliardenmaßstab
Setzen Sie Milvus für ein produktionsfähiges RAG ein, das Milliarden von Vektoren verwaltet, mit horizontaler Skalierung und GPU-Beschleunigung.
Weaviate: Vektor-Datenbank angetrieben von GraphQL
Konfigurieren Sie Weaviate für den produktiven RAG-Betrieb mit GraphQL-Abfragen, hybrider Suche und generativen Modulen.