Création d’une API REST avec Pinecone : Étape par Étape
Nous construisons une API REST avec Pinecone qui vous permet d’interagir sans effort avec des données vectorielles. Cette approche est cruciale pour ceux qui cherchent à mettre en œuvre des modèles d’apprentissage automatique et des données indexées sans se perdre dans les détails.
Prérequis
- Python 3.11+
- pip install pinecone-io
- Compréhension de base des API RESTful
Étape 1 : Configurer votre environnement
Tout d’abord, nous devrons configurer Python et installer le client Pinecone. Assurez-vous d’avoir la bonne version de Python. Le dernier client Python de Pinecone peut être trouvé 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 disant 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 bonne version ou activez l’environnement correct.
É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 génère 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éer 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 de mauvaises dimensions, vous verrez une erreur disant “Dimension mismatch”.
Étape 4 : Insérer des données dans l’index
Après que notre index soit prêt, insérons quelques données. Pour la démonstration, 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 d’insérer des données avec des vecteurs qui ne sont pas de la bonne longueur, vous verrez une erreur se plaignant de la taille du vecteur. Vérifiez toujours vos dimensions.
Étape 5 : Créer les points de terminaison de l’API
Enfin, nous avons besoin d’une application Flask pour exposer nos opérations Pinecone en tant que points de terminaison d’API REST. Voici comment mettre en place 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, donc ne le négligez pas.
Les pièges
- Exposition de la clé API : Il est facile de pousser accidentellement votre code sur un dépôt public avec votre clé API. Utilisez des variables d’environnement pour stocker les données sensibles en toute sécurité.
- Limites d’index Pinecone : Différents niveaux d’abonnement Pinecone ont des limites sur le nombre d’index que vous pouvez créer. Restez vigilant !
- 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 indiquer ce qui ne va pas.
- Taille 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 une 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)
Quelle est la suite
Maintenant que vous avez une API REST opérationnelle, l’étape logique suivante consiste à intégrer une interface utilisateur pour appeler cette API et visualiser les données. Envisagez d’utiliser une application React simple 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 des spécificités sur l’API, visitez le forum de la communauté Pinecone.
| Dépôt | Étoiles | Forks | Questions ouvertes | Licence | Dernière mise à jour |
|---|---|---|---|---|---|
| pinecone-io/pinecone-python-client | 422 | 117 | 43 | Apache-2.0 | 2026-03-17 |
Dernière mise à jour le 26 mars 2026. Données issues des documents officiels et des références de la communauté.
🕒 Published: