Pinecone : définition, fonctionnement et exemple en Python
La base de données vectorielle managée qui stocke les embeddings et les retrouve par similarité, sans serveur à administrer : index, namespaces, filtres, architecture serverless et exemple en Python.
Par Équipe Blent· Mis à jour le · 15 min de lecture· Niveau intermédiaire
Pinecone en bref
- Type
- Base de données vectorielle managée (SaaS)
- Éditeur
- Pinecone, fondée en 2019 par Edo Liberty
- Lancement public
- 2021
- Modèle
- Service propriétaire, pas de version open source
- Clouds
- AWS, Google Cloud, Microsoft Azure
- Architecture
- Serverless, stockage et calcul séparés
- Notions clés
- Index, namespaces, métadonnées, filtres
Définition : Pinecone
Pinecone est une base de données vectorielle proposée uniquement sous forme de service managé dans le cloud. Elle stocke des embeddings, c'est-à-dire des vecteurs numériques qui représentent le sens de textes, d'images ou d'autres contenus, et retrouve en quelques millisecondes ceux qui sont les plus proches d'un vecteur de requête. Chaque vecteur peut porter des métadonnées filtrables et être rangé dans un namespace pour isoler les données d'un client ou d'un projet. Sans serveur à installer ni à dimensionner, Pinecone sert surtout de brique de recherche dans les systèmes RAG, les moteurs de recherche sémantique et les systèmes de recommandation.
En une phrase : Pinecone stocke vos embeddings dans le cloud et retrouve les plus proches d'une requête, sans infrastructure à gérer.
Dans cette définition
Qu'est-ce que Pinecone ?
Pinecone est une base de données spécialisée dans un seul type de donnée : le vecteur. Dans une application d'IA générative, chaque document, paragraphe ou image est converti en embedding, une liste de plusieurs centaines de nombres qui encode son sens. Retrouver les contenus pertinents pour une question revient alors à chercher les vecteurs les plus proches de celui de la question. Pinecone fait exactement cela, à l'échelle de millions ou de milliards de vecteurs.
L'entreprise a été fondée en 2019 par Edo Liberty, ancien responsable de laboratoire de recherche chez Amazon et Yahoo, et a ouvert son service au public en 2021. L'essor des LLM et du RAG à partir de 2023 en a fait l'une des bases vectorielles les plus citées. En 2024, Pinecone a lancé une architecture serverless qui sépare le stockage, confié à un stockage objet, de la puissance de calcul, allouée à la demande.
Son positionnement est net : Pinecone est un service managé, et uniquement cela. Il n'existe pas de version open source à installer sur vos serveurs. On crée un index par API, on y écrit, on l'interroge, et l'éditeur se charge de la réplication, des sauvegardes et de la montée en charge. C'est ce qui le distingue de bases comme Weaviate ou Qdrant, open source et auto-hébergeables.
À retenir : Pinecone ne génère pas de texte et ne comprend pas les documents. Il stocke des vecteurs produits par un modèle d'embedding et retrouve rapidement les plus proches.
Exemple : indexer et interroger une FAQ avec le client Python
Une plateforme de support veut retrouver les réponses de sa FAQ les plus proches d'une question client, en isolant les données de chacun de ses clients. Le code suivant utilise le SDK officiel (paquet pinecone) et un modèle d'embedding open source exécuté localement.
import os
from pinecone import Pinecone, ServerlessSpec
from sentence_transformers import SentenceTransformer
pc = Pinecone(api_key=os.environ["PINECONE_API_KEY"])
encoder = SentenceTransformer("sentence-transformers/paraphrase-multilingual-MiniLM-L12-v2")
# 1. Index serverless : la dimension est celle du modèle (384)
index_name = "support-faq"
if not pc.has_index(index_name):
pc.create_index(
name=index_name,
dimension=384,
metric="cosine",
spec=ServerlessSpec(cloud="aws", region="eu-west-1"),
)
index = pc.Index(index_name)
# 2. Upsert : identifiant, vecteur et métadonnées, dans le namespace du client
faq = [
{"id": "faq-001", "text": "Le remboursement intervient sous 14 jours après réception du retour.", "produit": "boutique", "annee": 2026},
{"id": "faq-002", "text": "Les frais de livraison sont offerts dès 50 euros d'achat.", "produit": "boutique", "annee": 2025},
{"id": "faq-003", "text": "L'abonnement peut être résilié à tout moment depuis l'espace client.", "produit": "abonnement", "annee": 2026},
]
index.upsert(
vectors=[
{
"id": item["id"],
"values": encoder.encode(item["text"]).tolist(),
"metadata": {"text": item["text"], "produit": item["produit"], "annee": item["annee"]},
}
for item in faq
],
namespace="client-acme",
)
# 3. Query : les 3 vecteurs les plus proches, filtrés sur les métadonnées
question = "Sous quel délai suis-je remboursé ?"
results = index.query(
namespace="client-acme",
vector=encoder.encode(question).tolist(),
top_k=3,
filter={"produit": {"$eq": "boutique"}, "annee": {"$gte": 2025}},
include_metadata=True,
)
for match in results.matches:
print(match.id, round(match.score, 3), match.metadata["text"])
Trois points méritent attention. La dimension de l'index doit correspondre exactement à celle du modèle d'embedding, et la question doit être vectorisée avec ce même modèle. Le texte d'origine est stocké dans les métadonnées pour pouvoir l'afficher ou le transmettre au LLM sans seconde requête. Enfin, le filtre restreint la recherche aux vecteurs dont les métadonnées respectent les conditions, avec des opérateurs proches de ceux de MongoDB ($eq, $in, $gte, $and...). Dans un RAG, ces résultats sont ensuite injectés dans le prompt, souvent par l'intermédiaire de LangChain ou de LlamaIndex, qui disposent d'intégrations officielles.
Index, namespaces, métadonnées : l'organisation des données
Pinecone structure les données sur trois niveaux, qu'il faut concevoir avant d'écrire le premier vecteur.
- Index : le conteneur principal, défini par une dimension, une métrique et une région. Un index est dense (vecteurs d'embeddings classiques) ou creux (vecteurs de termes pour la recherche lexicale). On crée en général un index par modèle d'embedding.
- Namespace : une partition de l'index. Requêtes et écritures ciblent toujours un namespace, ce qui garantit l'isolation des données. On l'utilise pour séparer les clients d'un SaaS, les environnements ou les langues. Supprimer toutes les données d'un client revient à supprimer son namespace.
- Métadonnées : des paires clé-valeur (texte, nombre, booléen, liste de textes) attachées à chaque vecteur. Elles servent à filtrer la recherche (par date, source, droit d'accès) et à restituer le contenu.
L'architecture serverless
Dans l'architecture serverless, les vecteurs sont stockés sur un stockage objet et regroupés en fichiers indexés. Les requêtes sont traitées par des ressources de calcul allouées à la demande, qui ne chargent que les portions utiles de l'index. Conséquence pratique : il n'y a plus de capacité à réserver, et la facturation suit les volumes stockés, lus et écrits. L'architecture historique à base de pods, où l'on choisissait le type et le nombre de machines, laisse place à ce modèle, désormais recommandé par l'éditeur.
La recherche hybride
La recherche vectorielle seule rate parfois des correspondances exactes : un code produit, un nom propre, un acronyme interne. Pinecone répond à ce besoin avec des vecteurs creux, qui encodent la présence et le poids des termes. On peut stocker vecteurs denses et creux dans un même index et pondérer leur contribution, ou interroger un index dense et un index creux puis fusionner les classements, par exemple avec la Reciprocal Rank Fusion. Un modèle de reranking hébergé peut ensuite réordonner les meilleurs résultats.
À quoi sert Pinecone ?
Pinecone intervient partout où il faut retrouver des contenus proches par le sens plutôt que par les mots exacts.
RAG en production
Fournir à un LLM les passages pertinents d'un corpus de plusieurs millions de fragments.
Recherche sémantique
Trouver des documents qui répondent à une question formulée avec d'autres mots.
Recommandation
Suggérer des produits, articles ou contenus proches de ceux qu'un utilisateur consulte.
SaaS multi-clients
Isoler les données de chaque client dans un namespace, au sein d'un même index.
Détection de doublons
Repérer des tickets, fiches ou images quasi identiques à l'aide de leurs vecteurs.
Mémoire d'agent
Conserver et retrouver les faits utiles aux conversations passées d'un agent IA.
Quels sont les avantages de Pinecone ?
L'argument principal de Pinecone est opérationnel : la recherche vectorielle à grande échelle sans équipe d'infrastructure dédiée.
- Aucun serveur à installer, dimensionner, mettre à jour ou sauvegarder.
- Mise à l'échelle automatique avec l'architecture serverless, facturée à l'usage.
- Filtres sur métadonnées et namespaces natifs, adaptés aux applications multi-clients.
- API simple et SDK officiels, avec intégrations dans LangChain et LlamaIndex.
- Modèles d'embedding et de reranking hébergés, pour simplifier le pipeline.
- Disponible sur les trois grands clouds, avec choix de la région d'hébergement.
Quelles sont les limites de Pinecone ?
La contrepartie d'un service entièrement managé : moins de contrôle, et une dépendance forte à un fournisseur.
- Service propriétaire : pas d'installation sur vos propres serveurs ni de code source accessible.
- Dépendance à l'éditeur : migrer vers une autre base suppose de réexporter tous les vecteurs.
- Coût difficile à prévoir quand le volume de requêtes varie fortement.
- Les données quittent votre infrastructure, ce qui peut bloquer certains projets réglementés.
- Les écritures récentes peuvent mettre quelques secondes à devenir interrogeables.
Pinecone vs bases auto-hébergées : quelles différences ?
Le choix d'une base vectorielle se joue moins sur la qualité de la recherche, comparable d'une solution à l'autre, que sur le modèle d'exploitation. Voici comment Pinecone se situe face aux trois alternatives les plus fréquentes.
| Critère | Pinecone | Weaviate | Qdrant | pgvector |
|---|---|---|---|---|
| Modèle | Service propriétaire | Open source (BSD-3) | Open source (Apache 2.0) | Extension PostgreSQL open source |
| Hébergement | Cloud de l'éditeur uniquement | Vos serveurs ou cloud managé | Vos serveurs ou cloud managé | Partout où tourne PostgreSQL |
| Exploitation | Aucune | À votre charge si auto-hébergé | À votre charge si auto-hébergé | Celle de votre base existante |
| Recherche hybride | Vecteurs denses et creux | BM25 et vecteurs natifs | Vecteurs denses et creux | À composer avec le plein texte PostgreSQL |
| Multi-locataire | Namespaces | Tenants natifs | Filtres ou collections | Schémas, lignes et droits SQL |
| Coût | À l'usage | Infrastructure ou abonnement | Infrastructure ou abonnement | Inclus dans la base existante |
| Idéal pour | Équipes sans exploitation, croissance rapide | Contrôle des données, vectorisation intégrée | Performances et filtres fins | Corpus modestes, stack PostgreSQL |
Une démarche fréquente consiste à prototyper avec un index en mémoire ou pgvector, puis à choisir la base de production selon les contraintes : souveraineté des données et réversibilité orientent vers une solution open source, absence d'équipe d'exploitation vers Pinecone. Notre article Pinecone : la base de données vectorielle managée revient en détail sur le fonctionnement des bases vectorielles.
Quand choisir Pinecone ?
Le critère décisif est rarement la qualité de la recherche, comparable entre bases vectorielles : c'est le modèle d'exploitation que vous acceptez.
Vous voulez déléguer l'infrastructure
- L'équipe est réduite et sans compétence d'exploitation de bases de données.
- Le volume de vecteurs ou de requêtes croît vite et de façon imprévisible.
- L'application sert plusieurs clients à isoler les uns des autres.
- Héberger les données chez un fournisseur cloud est acceptable.
Vous devez garder la main
- Les données doivent rester sur votre infrastructure ou sur site.
- Vous exigez une solution open source et réversible.
- Le corpus est modeste et une base PostgreSQL existe déjà.
- Le coût doit être fixe et maîtrisé quel que soit le trafic.
Outils et alternatives autour de Pinecone
Pinecone s'insère dans une chaîne qui comprend un modèle d'embedding, un framework d'orchestration et, souvent, une base concurrente évaluée en parallèle.
- Alternative open source
Weaviate
Base vectorielle auto-hébergeable ou managée, avec recherche hybride native.
- Alternative open source
Qdrant
Moteur vectoriel écrit en Rust, réputé pour ses filtres sur métadonnées.
- Alternative
pgvector
Extension PostgreSQL pour ajouter la recherche vectorielle à une base existante.
- Alternative
Chroma
Base vectorielle open source légère, prisée pour le prototypage.
- Orchestration
LlamaIndex
Framework de données pour LLM, qui utilise Pinecone comme vector store.
- Orchestration
LangChain
Intégration officielle pour utiliser un index Pinecone comme retriever.
- Modèles
Hugging Face
Modèles d'embedding open source pour vectoriser textes et images.
Les concepts à connaître pour utiliser Pinecone
Ces notions expliquent ce que Pinecone stocke, comment il compare les vecteurs et où il se place dans une application IA.
- EmbeddingLe vecteur qui représente le sens d'un contenu, unité de base de Pinecone.
- RAGL'architecture qui utilise une base vectorielle pour alimenter un LLM.
- Recherche hybrideLa combinaison de la similarité vectorielle et de la correspondance par mots-clés.
- RerankingLe réordonnancement des résultats par un modèle plus précis après la recherche.
- ServerlessLe modèle où l'on paie l'usage réel sans dimensionner de serveurs.
- LLMLe modèle de langage qui exploite les passages retrouvés par Pinecone.
Ressources pour approfondir Pinecone
Trois articles du blog Blent pour comprendre les bases vectorielles et les exploiter dans un RAG.
- Guide
Pinecone : la base de données vectorielle managée
Le fonctionnement des bases vectorielles et la prise en main de Pinecone.
Lire l'article - Technique
Reciprocal Rank Fusion : améliorer son RAG
Fusionner les résultats de plusieurs recherches pour une recherche hybride robuste.
Lire l'article - Concept
Word Embedding et NLP : définition, exemples
Comprendre comment un texte devient un vecteur comparable par le sens.
Lire l'article
Questions fréquentes
Questions fréquentes
Expertise
À propos de l'auteur
Équipe Blent
Les ingénieurs et mentors Blent conçoivent, évaluent et mettent en production des applications LLM, et forment chaque année des centaines de professionnels à l'IA générative.
Sources et méthodologie
- Documentation officielle Pinecone (index, namespaces, filtres, SDK Python)
- Annonce de Pinecone Serverless, janvier 2024
- Retours d'expérience des projets et formations Blent
Comment fonctionne Pinecone ?
Utiliser Pinecone revient à suivre cinq étapes, de la création de l'index à l'exploitation des résultats par un LLM ou une application.
Créer un index
On choisit la dimension des vecteurs (celle du modèle d'embedding), la métrique de similarité (cosinus, produit scalaire ou distance euclidienne), le cloud et la région d'hébergement.
Vectoriser les contenus
Chaque texte ou image est transformé en vecteur par un modèle d'embedding, exécuté chez vous ou directement par Pinecone, qui héberge aussi des modèles d'embedding.
Insérer les vecteurs
L'opération upsert envoie chaque vecteur avec un identifiant unique et ses métadonnées (source, date, langue, droits), dans le namespace choisi. Un identifiant existant est mis à jour.
Interroger l'index
La requête est vectorisée avec le même modèle. Pinecone renvoie les k vecteurs les plus proches, éventuellement restreints par un filtre sur les métadonnées, avec leur score de similarité.
Exploiter les résultats
Les passages retrouvés sont réordonnés si besoin par un modèle de reranking, puis transmis au LLM dans un RAG, ou affichés directement dans un moteur de recherche.