Spaces:
Sleeping
Sleeping
Update vector_handler.py
Browse files- vector_handler.py +16 -10
vector_handler.py
CHANGED
|
@@ -1,37 +1,43 @@
|
|
| 1 |
-
import pinecone
|
| 2 |
-
import os
|
| 3 |
import time
|
| 4 |
import threading
|
|
|
|
| 5 |
from langchain_google_genai import GoogleGenerativeAIEmbeddings
|
| 6 |
from langchain.vectorstores.pinecone import Pinecone as LangchainPinecone
|
| 7 |
|
| 8 |
-
|
|
|
|
| 9 |
|
|
|
|
| 10 |
embedding_model = GoogleGenerativeAIEmbeddings(model="models/embedding-001")
|
| 11 |
|
|
|
|
| 12 |
def create_vector_store(session_id, texts):
|
| 13 |
index_name = session_id
|
| 14 |
-
if index_name not in
|
| 15 |
-
|
| 16 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
| 17 |
vectorstore = LangchainPinecone.from_texts(texts, embedding_model, index_name=index_name)
|
| 18 |
|
| 19 |
-
|
| 20 |
def query_vector_store(session_id, question):
|
| 21 |
index_name = session_id
|
| 22 |
vectorstore = LangchainPinecone.from_existing_index(index_name, embedding_model)
|
| 23 |
-
chain = get_chain()
|
| 24 |
docs = vectorstore.similarity_search(question)
|
| 25 |
result = chain({"input_documents": docs, "question": question}, return_only_outputs=True)
|
| 26 |
return result["output_text"]
|
| 27 |
|
| 28 |
-
|
| 29 |
def delete_vector_store(index_name, delay=0):
|
| 30 |
def delayed_delete():
|
| 31 |
if delay:
|
| 32 |
time.sleep(delay)
|
| 33 |
try:
|
| 34 |
-
|
| 35 |
print(f"Deleted index {index_name}")
|
| 36 |
except Exception as e:
|
| 37 |
print(f"Error deleting index {index_name}: {e}")
|
|
|
|
|
|
|
|
|
|
| 1 |
import time
|
| 2 |
import threading
|
| 3 |
+
from pinecone import Pinecone, ServerlessSpec
|
| 4 |
from langchain_google_genai import GoogleGenerativeAIEmbeddings
|
| 5 |
from langchain.vectorstores.pinecone import Pinecone as LangchainPinecone
|
| 6 |
|
| 7 |
+
# Initialize Pinecone client with API key
|
| 8 |
+
pc = Pinecone(api_key="YOUR_API_KEY") # Replace with your actual key or use os.getenv if needed
|
| 9 |
|
| 10 |
+
# Initialize embedding model
|
| 11 |
embedding_model = GoogleGenerativeAIEmbeddings(model="models/embedding-001")
|
| 12 |
|
| 13 |
+
# Create vector store (index) using session_id
|
| 14 |
def create_vector_store(session_id, texts):
|
| 15 |
index_name = session_id
|
| 16 |
+
if not pc.list_indexes().names or index_name not in pc.list_indexes().names:
|
| 17 |
+
pc.create_index(
|
| 18 |
+
name=index_name,
|
| 19 |
+
dimension=768, # Match your embedding model dimension
|
| 20 |
+
spec=ServerlessSpec(cloud="aws", region="us-east-1")
|
| 21 |
+
)
|
| 22 |
+
time.sleep(5) # Wait for index to be ready
|
| 23 |
vectorstore = LangchainPinecone.from_texts(texts, embedding_model, index_name=index_name)
|
| 24 |
|
| 25 |
+
# Query vector store
|
| 26 |
def query_vector_store(session_id, question):
|
| 27 |
index_name = session_id
|
| 28 |
vectorstore = LangchainPinecone.from_existing_index(index_name, embedding_model)
|
| 29 |
+
chain = get_chain() # Make sure `get_chain` is defined elsewhere
|
| 30 |
docs = vectorstore.similarity_search(question)
|
| 31 |
result = chain({"input_documents": docs, "question": question}, return_only_outputs=True)
|
| 32 |
return result["output_text"]
|
| 33 |
|
| 34 |
+
# Delete vector store with optional delay
|
| 35 |
def delete_vector_store(index_name, delay=0):
|
| 36 |
def delayed_delete():
|
| 37 |
if delay:
|
| 38 |
time.sleep(delay)
|
| 39 |
try:
|
| 40 |
+
pc.delete_index(index_name)
|
| 41 |
print(f"Deleted index {index_name}")
|
| 42 |
except Exception as e:
|
| 43 |
print(f"Error deleting index {index_name}: {e}")
|