Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
|
@@ -82,33 +82,38 @@ def verify_api_key(authorization: str = Header(...)):
|
|
| 82 |
raise HTTPException(status_code=403, detail="Invalid or missing API key")
|
| 83 |
|
| 84 |
def create_serverless_index(pc, index_name):
|
| 85 |
-
"""Create a serverless index
|
| 86 |
existing_indexes = [index.name for index in pc.list_indexes()]
|
| 87 |
|
| 88 |
if index_name not in existing_indexes:
|
| 89 |
pc.create_index(
|
| 90 |
name=index_name,
|
| 91 |
-
dimension=1024, # multilingual-e5-large dimension
|
| 92 |
-
metric="cosine"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 93 |
)
|
| 94 |
print(f"✅ Created serverless index: {index_name}")
|
| 95 |
-
else:
|
| 96 |
-
print(f"📋 Index {index_name} already exists")
|
| 97 |
|
|
|
|
| 98 |
return pc.Index(index_name)
|
| 99 |
|
| 100 |
async def embed_with_pinecone_inference(pc, texts, model="multilingual-e5-large"):
|
| 101 |
-
"""Use Pinecone's hosted
|
| 102 |
try:
|
| 103 |
-
|
| 104 |
-
embeddings =
|
| 105 |
model=model,
|
| 106 |
inputs=texts,
|
| 107 |
parameters={"input_type": "passage"}
|
| 108 |
)
|
| 109 |
-
return [
|
| 110 |
except Exception as e:
|
| 111 |
-
print(f"❌
|
| 112 |
raise
|
| 113 |
|
| 114 |
def generate_sparse_vectors(texts):
|
|
|
|
| 82 |
raise HTTPException(status_code=403, detail="Invalid or missing API key")
|
| 83 |
|
| 84 |
def create_serverless_index(pc, index_name):
|
| 85 |
+
"""Create a Pinecone serverless index using managed model dimensions."""
|
| 86 |
existing_indexes = [index.name for index in pc.list_indexes()]
|
| 87 |
|
| 88 |
if index_name not in existing_indexes:
|
| 89 |
pc.create_index(
|
| 90 |
name=index_name,
|
| 91 |
+
dimension=1024, # multilingual-e5-large output dimension
|
| 92 |
+
metric="cosine",
|
| 93 |
+
spec={
|
| 94 |
+
"serverless": {
|
| 95 |
+
"cloud": "aws", # or gcp
|
| 96 |
+
"region": "us-west-2"
|
| 97 |
+
}
|
| 98 |
+
}
|
| 99 |
)
|
| 100 |
print(f"✅ Created serverless index: {index_name}")
|
|
|
|
|
|
|
| 101 |
|
| 102 |
+
# Return index object
|
| 103 |
return pc.Index(index_name)
|
| 104 |
|
| 105 |
async def embed_with_pinecone_inference(pc, texts, model="multilingual-e5-large"):
|
| 106 |
+
"""Use Pinecone's hosted inference model for embeddings."""
|
| 107 |
try:
|
| 108 |
+
inference_client = pc.inference
|
| 109 |
+
embeddings = inference_client.embed(
|
| 110 |
model=model,
|
| 111 |
inputs=texts,
|
| 112 |
parameters={"input_type": "passage"}
|
| 113 |
)
|
| 114 |
+
return [item["values"] for item in embeddings["results"]]
|
| 115 |
except Exception as e:
|
| 116 |
+
print(f"❌ Pinecone Inference Error: {e}")
|
| 117 |
raise
|
| 118 |
|
| 119 |
def generate_sparse_vectors(texts):
|