Pinecone_docker / app.py
jaothan's picture
Upload 2 files
f766ad9 verified
from pinecone.grpc import PineconeGRPC, GRPCClientConfig
from pinecone import ServerlessSpec
import time
# Initialize a client.
# API key is required, but the value does not matter.
# Host and port of the Pinecone Local instance
# is required when starting without indexes.
pc = PineconeGRPC(
api_key="pclocal",
host="http://localhost:5080"
)
# Create an index
index_name = "example-index"
if not pc.has_index(index_name):
pc.create_index(
name=index_name,
dimension=2,
metric="cosine",
spec=ServerlessSpec(
cloud="aws",
region="us-east-1",
)
)
# Wait for the index to be ready
while not pc.describe_index(index_name).status['ready']:
time.sleep(1)
# Target the index, disabling tls
index_host = pc.describe_index(index_name).host
index = pc.Index(host=index_host, grpc_config=GRPCClientConfig(secure=False))
# Upsert records into the index
index.upsert(
vectors=[
{
"id": "vec1",
"values": [1.0, -2.5],
"metadata": {"genre": "drama"}
},
{
"id": "vec2",
"values": [3.0, -2.0],
"metadata": {"genre": "documentary"}
},
{
"id": "vec3",
"values": [0.5, -1.5],
"metadata": {"genre": "documentary"}
}
],
namespace="example-namespace"
)
# Check the number of records in the index
print("Index stats:\n", index.describe_index_stats())
# Query the index with a metadata filter
response = index.query(
vector=[3.0, -2.0],
filter={"genre": {"$eq": "documentary"}},
top_k=1,
include_values=True,
include_metadata=True,
namespace='example-namespace'
)
print("\nQuery response:\n", response)
# Delete the index
pc.delete_index(index_name)