Creare un API REST con Pinecone: Passo dopo Passo
Stiamo costruendo un’API REST con Pinecone che ti consente di interagire con dati vettoriali senza sforzo. Questo approccio è cruciale per coloro che cercano di implementare modelli di machine learning e dati indicizzati senza perdersi nei dettagli.
Prerequisiti
- Python 3.11+
- pip install pinecone-io
- Conoscenze di base delle API RESTful
Passo 1: Configurazione del tuo ambiente
Prima di tutto, dobbiamo configurare Python e installare il client Pinecone. Assicurati di avere la versione corretta di Python. L’ultimo client Python di Pinecone si trova su GitHub:
pip install pinecone-client
Installalo 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 sia incompatibile. 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 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 Pinecone. Se questa riga solleva un’eccezione, controlla se la tua chiave API è corretta o se hai accidentalmente configurato il tuo ambiente nella regione sbagliata.
Passo 3: Creazione di un indice
Adesso 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 indica “Dimension mismatch”.
Passo 4: Inserimento dei dati nell’indice
Dopo aver configurato il nostro indice, inseriamo dei dati. A titolo di esempio, 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 aggiornare i dati con vettori che non hanno la lunghezza corretta, vedrai un errore che segnala la dimensione del vettore. Controlla sempre le tue dimensioni.
Passo 5: Creazione dei punti di accesso dell’API
Infine, abbiamo bisogno di un’applicazione Flask per esporre le nostre operazioni Pinecone sotto forma di punti di accesso dell’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": "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)
Con queste route, puoi aggiungere vettori tramite una richiesta POST e recuperarli con una richiesta GET. Assicurati di includere gli header del tipo di contenuto durante i test con strumenti come Postman. Se dimentichi questo, la tua applicazione restituirà un errore per dati mancanti, non scordarlo.
Trappole
- Esposizione della chiave API: È facile spingere accidentalmente il tuo codice verso un deposito pubblico con la tua chiave API. Usa variabili d’ambiente per memorizzare in modo sicuro i dati sensibili.
- Limiti dell’indice di Pinecone: Diversi livelli di abbonamento Pinecone hanno limiti sul numero di indici che puoi creare. Fai attenzione a questo!
- Gestione degli errori: Gestisci correttamente gli errori nella tua applicazione Flask. Se non lo fai, la tua interfaccia utente potrebbe rompersi senza indicazione di cosa sia andato storto.
- Dimensionamento 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": "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)
E Poi
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 appaiono nell’indice?
Assicurati che la richiesta di inserimento sia formattata correttamente e controlla i log del server per eventuali errori. - Posso memorizzare vettori di dimensioni diverse?
No, tutti i vettori in un indice Pinecone devono avere la stessa dimensione. - Come posso eliminare vettori?
Usa il metodo di eliminazione dell’indice con l’ID del vettore per rimuovere voci specifiche.
Fonti di Dati
Consulta la documentazione ufficiale di Pinecone su GitHub per ulteriori dettagli: pinecone-io/pinecone-python-client. Per le specifiche dell’API, visita il forum della comunità Pinecone.
| Repository | Stars | Forks | Open Issues | License | Last Updated |
|---|---|---|---|---|---|
| pinecone-io/pinecone-python-client | 422 | 117 | 43 | Apache-2.0 | 2026-03-17 |
Ultimo aggiornamento il 26 marzo 2026. Dati provenienti dalla documentazione ufficiale e dai benchmark della comunità.
🕒 Published: