SF001-123456's picture
Upload 10 files
e43be0f verified
from pinecone import Pinecone
from dotenv import load_dotenv
import os
load_dotenv()
class PineconeRetriever:
"""Class for initializing and querying Pinecone."""
def __init__(self, api_key, index_name, namespace):
self.api_key = api_key
self.index_name = index_name
self.namespace = namespace
self.pc = Pinecone(api_key=self.api_key)
self.index = self.pc.Index(self.index_name)
def retrieve_data(self, query, top_k=1):
"""Retrieve relevant data from Pinecone."""
# Convert the query into a numerical vector that Pinecone can search with
query_embedding = self.pc.inference.embed(
model="multilingual-e5-large",
inputs=[query],
parameters={
"input_type": "query",
"truncate": "END"
}
)
results = self.index.query(namespace=self.namespace,
vector=query_embedding[0].values,
top_k=top_k,
include_values=False,
include_metadata=True
)
return results
def retrieve_context(self, query, top_k=1):
results = self.retrieve_data(query, top_k)
context = ""
for match in results['matches']:
context += match['metadata']['source_text']
return context
if __name__ == "__main__":
pinecone_api=os.getenv("PINECONE_API_KEY"),
pinecone_index=os.getenv("PINECONE_INDEX"),
pinecone_namespace=os.getenv("PINECONE_NAMESPACE")
retriever = PineconeRetriever(API_KEY, INDEX_NAME, NAMESPACE)
query_result = retriever.retrieve_context("hi")
print(query_result)