Creare un’API REST con Pinecone: Passo dopo Passo
Stiamo costruendo un’API REST con Pinecone che ti consente di interagire facilmente con dati vettoriali. Questo approccio è cruciale per coloro che cercano di implementare modelli di apprendimento automatico e dati indicizzati senza perdersi nei dettagli.
Requisiti
- Python 3.11+
- pip install pinecone-io
- Comprensione di base delle API RESTful
Passo 1: Configurare il tuo Ambiente
Prima di tutto, dobbiamo configurare Python e installare il client Pinecone. Assicurati di avere la versione giusta di Python. L’ultimo client Python di Pinecone può essere trovato su GitHub:
pip install pinecone-client
Installa e verifica l’installazione con il seguente comando:
pip show pinecone-client
Se vedi un errore che indica che il pacchetto non è stato trovato, è probabile che tu sia in un ambiente virtuale che manca della libreria corretta o che la tua versione di Python non sia compatibile. Installa la versione corretta o attiva l’ambiente giusto.
Passo 2: Inizializzare Pinecone
Per utilizzare Pinecone, dobbiamo inizializzarlo. Avrai bisogno di una chiave API che puoi trovare nel tuo dashboard di Pinecone. Ecco come connetterti:
import pinecone
pinecone.init(api_key="YOUR_API_KEY", environment="us-west1-gcp")
Non dimenticare di sostituire YOUR_API_KEY con la tua vera chiave API di Pinecone. Se questa riga provoca un’eccezione, verifica se la tua chiave API è corretta o se hai accidentalmente configurato il tuo ambiente nella regione sbagliata.
Passo 3: Creare un Indice
Ora dobbiamo creare un indice. Un indice è il luogo in cui i nostri vettori saranno memorizzati. Specifica il nome dell’indice e la dimensione dei vettori:
index_name = "example-index"
pinecone.create_index(index_name=index_name, dimension=128)
Assicurati di scegliere una dimensione che corrisponda alla lunghezza dei tuoi embeddings vettoriali. Se cerchi di creare un indice con dimensioni errate, vedrai un errore che dice “Incompatibilità di dimensione”.
Passo 4: Inserire Dati nell’Indice
Dopo che il nostro indice è stato configurato, inseriamo alcuni dati. Per la dimostrazione, inseriamo tre vettori:
index = pinecone.Index(index_name)
# Dati di esempio : (id, vettore)
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)
Se cerchi di inserire dati con vettori che non hanno la lunghezza corretta, vedrai un errore che si lamenta della dimensione del vettore. Controlla sempre le tue dimensioni.
Passo 5: Creare i Punti di Fine API
Infine, abbiamo bisogno di un’applicazione Flask per esporre le nostre operazioni Pinecone come punti di fine API REST. Ecco come configurare un’API semplice:
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": "Vecteurs ajoutés"}), 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)
Con queste rotte, puoi aggiungere vettori tramite una richiesta POST e recuperarli con una richiesta GET. Assicurati di includere gli headers del tipo di contenuto quando testi con strumenti come Postman. Se dimentichi di farlo, la tua applicazione restituirà un errore per dati mancanti, quindi non trascurarlo.
Consigli
- Esporre la chiave API: È facile caricare accidentalmente il tuo codice in un repository pubblico con la tua chiave API. Usa variabili di ambiente per conservare i dati sensibili in modo sicuro.
- Limiti degli Indici di Pinecone: Diversi livelli di abbonamento a Pinecone hanno limiti sul numero di indici che puoi creare. Rimani vigile!
- Gestione degli Errori: Gestisci correttamente gli errori nella tua applicazione Flask. Se non lo fai, la tua interfaccia utente potrebbe bloccarsi senza alcun indizio su cosa sia andato storto.
- Dimensione dei Vettori: Assicurati sempre che le dimensioni dei tuoi vettori corrispondano a quelle del tuo indice. Questo ti farà risparmiare ore di debug.
Codice Completo
import pinecone
from flask import Flask, request, jsonify
# Passo 1: Inizializzare 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)
# Passo 2: Creare l'applicazione 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": "Vecteurs ajoutés"}), 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)
E Dopo?
Ora che hai un’API REST funzionante, il passo logico successivo è integrare un frontend per chiamare questa API e visualizzare i dati. Considera di utilizzare una semplice applicazione React o qualsiasi altro framework frontend moderno che ti consenta di fare chiamate API.
FAQ
- Cosa fare se i miei vettori non compaiono nell’indice?
Assicurati che la richiesta di inserimento sia formattata correttamente e controlla i log del server per errori. - Posso memorizzare dimensioni di vettori diverse?
No, tutti i vettori in un indice di Pinecone devono avere la stessa dimensione. - Come posso eliminare vettori?
Usa il metodo di eliminazione dell’indice con l’ID del vettore per rimuovere ingressi specifici.
Fonti di Dati
Consulta la documentazione ufficiale di Pinecone su GitHub per ulteriori dettagli: pinecone-io/pinecone-python-client. Per specifiche sull’API, visita il forum della comunità Pinecone.
| Deposito | Stelle | Forks | Problemi Aperti | Licenza | Ultimo Aggiornamento |
|---|---|---|---|---|---|
| pinecone-io/pinecone-python-client | 422 | 117 | 43 | Apache-2.0 | 2026-03-17 |
Ultimo aggiornamento il 26 marzo 2026. Dati provenienti da documenti ufficiali e benchmark della comunità.
🕒 Published: