init
Browse files- app/main.py +20 -19
app/main.py
CHANGED
|
@@ -114,21 +114,30 @@ def get_embedding(text: str) -> List[float]:
|
|
| 114 |
"""
|
| 115 |
Generate embedding for semantic search.
|
| 116 |
|
| 117 |
-
|
| 118 |
-
|
| 119 |
-
2. Create deployment: text-embedding-3-small
|
| 120 |
-
3. Set dimensions to 1024 to match Pinecone index
|
| 121 |
-
|
| 122 |
-
Alternative: Set AZURE_EMBEDDING_MODEL env var to your deployment name
|
| 123 |
"""
|
| 124 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 125 |
|
| 126 |
# Get embedding model from env or use default
|
| 127 |
embedding_model = os.getenv("AZURE_EMBEDDING_MODEL", "text-embedding-3-small")
|
| 128 |
embedding_dims = int(os.getenv("AZURE_EMBEDDING_DIMS", "1024"))
|
| 129 |
|
| 130 |
try:
|
| 131 |
-
response =
|
| 132 |
input=text,
|
| 133 |
model=embedding_model,
|
| 134 |
dimensions=embedding_dims
|
|
@@ -139,17 +148,9 @@ def get_embedding(text: str) -> List[float]:
|
|
| 139 |
|
| 140 |
# Provide helpful error message
|
| 141 |
if "DeploymentNotFound" in error_msg or "404" in error_msg:
|
| 142 |
-
print(f"❌ EMBEDDING ERROR: Deployment '{embedding_model}' not found
|
| 143 |
-
print(f"")
|
| 144 |
-
print(f"
|
| 145 |
-
print(f" 1. Go to: https://oai.azure.com/portal")
|
| 146 |
-
print(f" 2. Navigate to: Deployments → Create new deployment")
|
| 147 |
-
print(f" 3. Model: text-embedding-3-small")
|
| 148 |
-
print(f" 4. Deployment name: text-embedding-3-small")
|
| 149 |
-
print(f" 5. Set: dimensions=1024")
|
| 150 |
-
print(f"")
|
| 151 |
-
print(f" OR set environment variable:")
|
| 152 |
-
print(f" AZURE_EMBEDDING_MODEL=<your-existing-embedding-deployment>")
|
| 153 |
else:
|
| 154 |
print(f"Embedding error: {e}")
|
| 155 |
|
|
|
|
| 114 |
"""
|
| 115 |
Generate embedding for semantic search.
|
| 116 |
|
| 117 |
+
Uses separate Azure OpenAI resource for embeddings (memory-efficient for Render free tier).
|
| 118 |
+
Supports custom endpoint/key via AZURE_EMBEDDING_* environment variables.
|
|
|
|
|
|
|
|
|
|
|
|
|
| 119 |
"""
|
| 120 |
+
# Check if using separate embedding resource
|
| 121 |
+
embedding_endpoint = os.getenv("AZURE_EMBEDDING_ENDPOINT")
|
| 122 |
+
embedding_api_key = os.getenv("AZURE_EMBEDDING_API_KEY")
|
| 123 |
+
|
| 124 |
+
if embedding_endpoint and embedding_api_key:
|
| 125 |
+
# Use separate embedding client
|
| 126 |
+
embedding_client = AzureOpenAI(
|
| 127 |
+
api_key=embedding_api_key,
|
| 128 |
+
api_version=os.getenv("AZURE_OPENAI_API_VERSION", "2024-08-01-preview"),
|
| 129 |
+
azure_endpoint=embedding_endpoint
|
| 130 |
+
)
|
| 131 |
+
else:
|
| 132 |
+
# Fallback to main Azure client
|
| 133 |
+
embedding_client = get_azure_client()
|
| 134 |
|
| 135 |
# Get embedding model from env or use default
|
| 136 |
embedding_model = os.getenv("AZURE_EMBEDDING_MODEL", "text-embedding-3-small")
|
| 137 |
embedding_dims = int(os.getenv("AZURE_EMBEDDING_DIMS", "1024"))
|
| 138 |
|
| 139 |
try:
|
| 140 |
+
response = embedding_client.embeddings.create(
|
| 141 |
input=text,
|
| 142 |
model=embedding_model,
|
| 143 |
dimensions=embedding_dims
|
|
|
|
| 148 |
|
| 149 |
# Provide helpful error message
|
| 150 |
if "DeploymentNotFound" in error_msg or "404" in error_msg:
|
| 151 |
+
print(f"❌ EMBEDDING ERROR: Deployment '{embedding_model}' not found")
|
| 152 |
+
print(f" Endpoint: {embedding_endpoint or os.getenv('AZURE_OPENAI_ENDPOINT')}")
|
| 153 |
+
print(f" Model: {embedding_model}")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 154 |
else:
|
| 155 |
print(f"Embedding error: {e}")
|
| 156 |
|