|
import pinecone |
|
import os |
|
from dotenv import load_dotenv |
|
|
|
load_dotenv() |
|
|
|
class PineconeStore: |
|
def __init__(self): |
|
api_key = os.getenv("PINECONE_API_KEY") |
|
environment = os.getenv("PINECONE_ENV") |
|
pinecone.init(api_key=api_key, environment=environment) |
|
|
|
self.index_name = "soccer-highlights" |
|
if self.index_name not in pinecone.list_indexes(): |
|
pinecone.create_index( |
|
name=self.index_name, |
|
dimension=1024, |
|
metric="cosine" |
|
) |
|
self.index = pinecone.Index(self.index_name) |
|
|
|
def upsert(self, id, vector, metadata): |
|
self.index.upsert([(id, vector.tolist(), metadata)]) |
|
|
|
def query(self, vector, filter_key, top_k): |
|
return [ |
|
m["metadata"] for m in self.index.query( |
|
vector.tolist(), |
|
top_k=top_k, |
|
include_metadata=True |
|
)["matches"] if filter_key in m["id"] |
|
] |
|
|