Créer une API REST avec Pinecone : Étape par Étape
Nous construisons une API REST avec Pinecone qui vous permet d’interagir avec des données vectorielles sans effort. Cette approche est cruciale pour ceux qui cherchent à mettre en œuvre des modèles de machine learning et des données indexées sans se perdre dans les détails.
Prérequis
- Python 3.11+
- pip install pinecone-io
- Connaissance de base des API RESTful
Étape 1 : Configuration de votre environnement
Tout d’abord, nous devons configurer Python et installer le client Pinecone. Assurez-vous d’avoir la bonne version de Python. Le dernier client Python de Pinecone se trouve sur GitHub :
pip install pinecone-client
Installez-le et vérifiez l’installation avec la commande suivante :
pip show pinecone-client
Si vous voyez une erreur indiquant que le paquet n’est pas trouvé, il est probable que vous soyez dans un environnement virtuel qui manque de la bonne bibliothèque ou que votre version de Python soit incompatible. Installez la version correcte ou activez le bon environnement.
Étape 2 : Initialiser Pinecone
Pour utiliser Pinecone, nous devons l’initialiser. Vous aurez besoin d’une clé API que vous pouvez trouver dans votre tableau de bord Pinecone. Voici comment vous connecter :
import pinecone
pinecone.init(api_key="YOUR_API_KEY", environment="us-west1-gcp")
N’oubliez pas de remplacer YOUR_API_KEY par votre véritable clé API Pinecone. Si cette ligne lève une exception, vérifiez si votre clé API est correcte ou si vous avez accidentellement configuré votre environnement dans la mauvaise région.
Étape 3 : Création d’un Index
Maintenant, nous devons créer un index. Un index est l’endroit où nos vecteurs seront stockés. Spécifiez le nom de l’index et la dimension des vecteurs :
index_name = "example-index"
pinecone.create_index(index_name=index_name, dimension=128)
Assurez-vous de choisir une dimension qui correspond à la longueur de vos embeddings vectoriels. Si vous essayez de créer un index avec les mauvaises dimensions, vous verrez une erreur indiquant « Dimension mismatch ».
Étape 4 : Insertion de Données dans l’Index
Après avoir configuré notre index, insérons des données. À titre d’exemple, nous insérons trois vecteurs :
index = pinecone.Index(index_name)
# Données d'exemple : (id, vecteur)
data = [
("vec1", [0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8]),
("vec2", [0.2, 0.3, 0.1, 0.5, 0.6, 0.8, 0.9, 0.7, 0.1, 0.4, 0.2, 0.3, 0.5, 0.2, 0.1, 0.5, 0.3, 0.2, 0.1, 0.4, 0.6, 0.3, 0.5, 0.1, 0.8, 0.5, 0.4, 0.3, 0.2, 0.1, 0.5, 0.9, 0.6, 0.7, 0.3, 0.9, 0.5, 0.2],
("vec3", [0.3, 0.4, 0.1, 0.2, 0.5, 0.6, 0.1, 0.7, 0.8, 0.9, 0.4, 0.2, 0.6, 0.7, 0.8, 0.5, 0.3, 0.2, 0.3, 0.1, 0.9, 0.8, 0.5, 0.4, 0.7, 0.1, 0.3, 0.2, 0.4, 0.1, 0.5, 0.6, 0.9, 0.2, 0.3, 0.5, 0.8, 0.7)
]
index.upsert(items=data)
Si vous essayez de mettre à jour des données avec des vecteurs qui n’ont pas la bonne longueur, vous verrez une erreur signalant la taille du vecteur. Vérifiez toujours vos dimensions.
Étape 5 : Création des Points de Terminaison de l’API
Enfin, nous avons besoin d’une application Flask pour exposer nos opérations Pinecone sous forme de points de terminaison d’API REST. Voici comment configurer une API simple :
from flask import Flask, request, jsonify
app = Flask(__name__)
@app.route('/vectors', methods=['POST'])
def add_vectors():
vectors = request.json.get('vectors')
index.upsert(items=vectors)
return jsonify({"status": "success", "message": "Vectors added"}), 201
@app.route('/vectors/', methods=['GET'])
def get_vector(id):
vector = index.fetch(ids=[id])
return jsonify({"vector": vector}), 200
if __name__ == "__main__":
app.run(debug=True)
Avec ces routes, vous pouvez ajouter des vecteurs via une requête POST et les récupérer avec une requête GET. Assurez-vous d’inclure les en-têtes de type de contenu lors des tests avec des outils comme Postman. Si vous oubliez cela, votre application renverra une erreur pour données manquantes, ne l’oubliez pas.
Les Pièges
- Exposition de la clé API : Il est facile de pousser accidentellement votre code vers un dépôt public avec votre clé API. Utilisez des variables d’environnement pour stocker des données sensibles en toute sécurité.
- Limites d’Index de Pinecone : Différents niveaux d’abonnement Pinecone ont des limites sur le nombre d’index que vous pouvez créer. Gardez un œil là-dessus !
- Gestion des Erreurs : Gérez correctement les erreurs dans votre application Flask. Si vous ne le faites pas, votre interface utilisateur pourrait se casser sans indication de ce qui a mal tourné.
- Dimensionnement des Vecteurs : Assurez-vous toujours que les dimensions de vos vecteurs correspondent aux dimensions de votre index. Cela vous fera gagner des heures de débogage.
Code Complet
import pinecone
from flask import Flask, request, jsonify
# Étape 1 : Initialiser Pinecone
pinecone.init(api_key="YOUR_API_KEY", environment="us-west1-gcp")
index_name = "example-index"
pinecone.create_index(index_name=index_name, dimension=128)
# Étape 2 : Créer l'application Flask
app = Flask(__name__)
index = pinecone.Index(index_name)
@app.route('/vectors', methods=['POST'])
def add_vectors():
vectors = request.json.get('vectors')
index.upsert(items=vectors)
return jsonify({"status": "success", "message": "Vectors added"}), 201
@app.route('/vectors/', methods=['GET'])
def get_vector(id):
vector = index.fetch(ids=[id])
return jsonify({"vector": vector}), 200
if __name__ == "__main__":
app.run(debug=True)
Et Ensuite
Maintenant que vous avez une API REST fonctionnelle, la prochaine étape logique est d’intégrer un frontend pour appeler cette API et visualiser les données. Envisagez d’utiliser une simple application React ou tout autre framework frontend moderne qui vous permet de faire des appels API.
FAQ
- Que faire si mes vecteurs n’apparaissent pas dans l’index ?
Assurez-vous que la requête d’insertion est correctement formatée et vérifiez les journaux du serveur pour des erreurs. - Puis-je stocker différentes dimensions de vecteurs ?
Non, tous les vecteurs dans un index Pinecone doivent avoir la même dimension. - Comment supprimer des vecteurs ?
Utilisez la méthode de suppression de l’index avec l’ID du vecteur pour supprimer des entrées spécifiques.
Sources de Données
Consultez la documentation officielle de Pinecone sur GitHub pour plus de détails : pinecone-io/pinecone-python-client. Pour les spécificités de l’API, visitez le forum de la communauté Pinecone.
| Repository | Stars | Forks | Open Issues | License | Last Updated |
|---|---|---|---|---|---|
| pinecone-io/pinecone-python-client | 422 | 117 | 43 | Apache-2.0 | 2026-03-17 |
Dernière mise à jour le 26 mars 2026. Données provenant de la documentation officielle et des benchmarks de la communauté.
🕒 Published: