vector_search / Pineconeprac.py
MuazAshraf23's picture
Update Pineconeprac.py
066d256
raw
history blame contribute delete
No virus
2.72 kB
import gradio as gr
from scipy.spatial.distance import cosine
import pinecone
from sentence_transformers import SentenceTransformer
import openai
# Initialize Pinecone
pinecone.init(api_key='your pinecone key',
environment='your environment')
# Initialize the embedding model
model = SentenceTransformer(
'sentence-transformers/distilbert-base-nli-mean-tokens')
# Define department data
departments = ["design", "video_production", "marketing"]
# Generate embeddings for the departments
vectors = model.encode(departments)
# Create a Pinecone index
index_name = "mojosolo"
if index_name in pinecone.list_indexes():
pinecone.delete_index(name=index_name)
pinecone.create_index(name=index_name, dimension=768, metric='cosine')
# Insert department vectors into the Pinecone index
index = pinecone.Index(index_name)
upsert_response = index.upsert(
vectors=list(zip(departments, [vector.tolist() for vector in vectors])),
namespace="example-namespace"
)
def get_department(message):
query_vector = model.encode([message])[0]
min_distance = 1.0
best_department = None
for department, vector in zip(departments, vectors):
distance = cosine(query_vector, vector)
print(f"DEBUG: Department: {department}, Distance: {distance}")
if distance < min_distance:
min_distance = distance
best_department = department
if best_department is not None:
return best_department
else:
print("DEBUG: No department found")
return None
openai.api_key = 'your api key'
def chatbot(message):
department = get_department(message)
if department is not None:
response = openai.Completion.create(
engine="text-davinci-002",
prompt=f"[{department}] {message}",
max_tokens=50,
n=1,
stop=None,
temperature=0.7,
top_p=0.95,
)
return response.choices[0].text.strip()
else:
return "Sorry, I couldn't understand your query."
while True:
user_input = input("You:")
if user_input.lower() == "exit":
break
response = chatbot(user_input)
print(f"Bot: {response}")
# Query the Pinecone index using an example sentence
query_sentence = "We need a new video advertisement campaign."
query_vector = model.encode([query_sentence])[0]
query_response = index.query(
namespace="example-namespace",
top_k=1,
vector=query_vector.tolist()
)
# Print the query results
print("Query results:")
if query_response.results:
for result in query_response.results:
print(f"ID: {result.id}, Distance: {result.distance}")
else:
print("No results found.")