Skip to content

Commit 1023c8b

Browse files
authored
Merge pull request Azure-Samples#198 from Azure-Samples/embedding3l
Port to embedding-3-large
2 parents cf3f479 + 4e111c4 commit 1023c8b

16 files changed

+104602
-156825
lines changed

.env.sample

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -15,10 +15,10 @@ AZURE_OPENAI_ENDPOINT=https://YOUR-AZURE-OPENAI-SERVICE-NAME.openai.azure.com
1515
AZURE_OPENAI_VERSION=2024-03-01-preview
1616
AZURE_OPENAI_CHAT_DEPLOYMENT=gpt-4o-mini
1717
AZURE_OPENAI_CHAT_MODEL=gpt-4o-mini
18-
AZURE_OPENAI_EMBED_DEPLOYMENT=text-embedding-ada-002
19-
AZURE_OPENAI_EMBED_MODEL=text-embedding-ada-002
20-
AZURE_OPENAI_EMBED_DIMENSIONS=1536
21-
AZURE_OPENAI_EMBEDDING_COLUMN=embedding_ada002
18+
AZURE_OPENAI_EMBED_DEPLOYMENT=text-embedding-3-large
19+
AZURE_OPENAI_EMBED_MODEL=text-embedding-3-large
20+
AZURE_OPENAI_EMBED_DIMENSIONS=1024
21+
AZURE_OPENAI_EMBEDDING_COLUMN=embedding_3l
2222
AZURE_OPENAI_EVAL_DEPLOYMENT=gpt-4
2323
AZURE_OPENAI_EVAL_MODEL=gpt-4
2424
AZURE_TENANT_ID=
@@ -27,9 +27,9 @@ AZURE_OPENAI_KEY=
2727
# Needed for OpenAI.com:
2828
OPENAICOM_KEY=YOUR-OPENAI-API-KEY
2929
OPENAICOM_CHAT_MODEL=gpt-3.5-turbo
30-
OPENAICOM_EMBED_MODEL=text-embedding-ada-002
31-
OPENAICOM_EMBED_MODEL_DIMENSIONS=1536
32-
OPENAICOM_EMBEDDING_COLUMN=embedding_ada002
30+
OPENAICOM_EMBED_MODEL=text-embedding-3-large
31+
OPENAICOM_EMBED_MODEL_DIMENSIONS=1024
32+
OPENAICOM_EMBEDDING_COLUMN=embedding_3l
3333
# Needed for Ollama:
3434
OLLAMA_ENDPOINT=http://host.docker.internal:11434/v1
3535
OLLAMA_CHAT_MODEL=llama3.1

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -123,7 +123,7 @@ Once you've opened the project in [Codespaces](#github-codespaces), [Dev Contain
123123
azd up
124124
```
125125
126-
You will be asked to select two locations, first a region for most of the resources (Container Apps, PostgreSQL), then a region specifically for the Azure OpenAI models. This project uses the gpt-4o-mini and text-embedding-ada-002 models which may not be available in all Azure regions. Check for [up-to-date region availability](https://learn.microsoft.com/azure/ai-services/openai/concepts/models#standard-deployment-model-availability) and select a region accordingly.
126+
You will be asked to select two locations, first a region for most of the resources (Container Apps, PostgreSQL), then a region specifically for the Azure OpenAI models. This project uses the gpt-4o-mini and text-embedding-3-large models which may not be available in all Azure regions. Check for [up-to-date region availability](https://learn.microsoft.com/azure/ai-services/openai/concepts/models#standard-deployment-model-availability) and select a region accordingly.
127127
128128
## Local Development
129129

infra/main.bicep

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -303,11 +303,11 @@ var webAppEnv = union(azureOpenAIKeyEnv, openAIComKeyEnv, [
303303
}
304304
{
305305
name: 'OPENAICOM_EMBED_MODEL_DIMENSIONS'
306-
value: openAIEmbedHost == 'openaicom' ? '1536' : ''
306+
value: openAIEmbedHost == 'openaicom' ? '1024' : ''
307307
}
308308
{
309309
name: 'OPENAICOM_EMBED_MODEL'
310-
value: openAIEmbedHost == 'openaicom' ? 'text-embedding-ada-002' : ''
310+
value: openAIEmbedHost == 'openaicom' ? 'text-embedding-3-large' : ''
311311
}
312312
{
313313
name: 'AZURE_OPENAI_EMBED_MODEL'

infra/main.parameters.json

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -69,22 +69,22 @@
6969
"value": "${OPENAI_EMBED_HOST=azure}"
7070
},
7171
"embedModelName":{
72-
"value": "${AZURE_OPENAI_EMBED_MODEL=text-embedding-ada-002}"
72+
"value": "${AZURE_OPENAI_EMBED_MODEL=text-embedding-3-large}"
7373
},
7474
"embedDeploymentName": {
75-
"value": "${AZURE_OPENAI_EMBED_DEPLOYMENT=text-embedding-ada-002}"
75+
"value": "${AZURE_OPENAI_EMBED_DEPLOYMENT=text-embedding-3-large}"
7676
},
7777
"embedDeploymentVersion":{
78-
"value": "${AZURE_OPENAI_EMBED_DEPLOYMENT_VERSION=2}"
78+
"value": "${AZURE_OPENAI_EMBED_DEPLOYMENT_VERSION=1}"
7979
},
8080
"embedDeploymentSku": {
81-
"value": "${AZURE_OPENAI_EMBED_DEPLOYMENT_SKU=Standard}"
81+
"value": "${AZURE_OPENAI_EMBED_DEPLOYMENT_SKU=GlobalStandard}"
8282
},
8383
"embedDeploymentCapacity":{
8484
"value": "${AZURE_OPENAI_EMBED_DEPLOYMENT_CAPACITY=30}"
8585
},
8686
"embedDimensions": {
87-
"value": "${AZURE_OPENAI_EMBED_DIMENSIONS=1536}"
87+
"value": "${AZURE_OPENAI_EMBED_DIMENSIONS=1024}"
8888
},
8989
"openAIComKey": {
9090
"value": "${OPENAICOM_KEY}"

src/backend/fastapi_app/dependencies.py

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -42,20 +42,20 @@ async def common_parameters():
4242
OPENAI_EMBED_HOST = os.getenv("OPENAI_EMBED_HOST")
4343
OPENAI_CHAT_HOST = os.getenv("OPENAI_CHAT_HOST")
4444
if OPENAI_EMBED_HOST == "azure":
45-
openai_embed_deployment = os.getenv("AZURE_OPENAI_EMBED_DEPLOYMENT") or "text-embedding-ada-002"
46-
openai_embed_model = os.getenv("AZURE_OPENAI_EMBED_MODEL") or "text-embedding-ada-002"
47-
openai_embed_dimensions = int(os.getenv("AZURE_OPENAI_EMBED_DIMENSIONS") or 1536)
48-
embedding_column = os.getenv("AZURE_OPENAI_EMBEDDING_COLUMN") or "embedding_ada002"
45+
openai_embed_deployment = os.getenv("AZURE_OPENAI_EMBED_DEPLOYMENT") or "text-embedding-3-large"
46+
openai_embed_model = os.getenv("AZURE_OPENAI_EMBED_MODEL") or "text-embedding-3-large"
47+
openai_embed_dimensions = int(os.getenv("AZURE_OPENAI_EMBED_DIMENSIONS") or 1024)
48+
embedding_column = os.getenv("AZURE_OPENAI_EMBEDDING_COLUMN") or "embedding_3l"
4949
elif OPENAI_EMBED_HOST == "ollama":
5050
openai_embed_deployment = None
5151
openai_embed_model = os.getenv("OLLAMA_EMBED_MODEL") or "nomic-embed-text"
5252
openai_embed_dimensions = None
5353
embedding_column = os.getenv("OLLAMA_EMBEDDING_COLUMN") or "embedding_nomic"
5454
else:
5555
openai_embed_deployment = None
56-
openai_embed_model = os.getenv("OPENAICOM_EMBED_MODEL") or "text-embedding-ada-002"
57-
openai_embed_dimensions = int(os.getenv("OPENAICOM_EMBED_DIMENSIONS", 1536))
58-
embedding_column = os.getenv("OPENAICOM_EMBEDDING_COLUMN") or "embedding_ada002"
56+
openai_embed_model = os.getenv("OPENAICOM_EMBED_MODEL") or "text-embedding-3-large"
57+
openai_embed_dimensions = int(os.getenv("OPENAICOM_EMBED_DIMENSIONS", 1024))
58+
embedding_column = os.getenv("OPENAICOM_EMBEDDING_COLUMN") or "embedding_3l"
5959
if OPENAI_CHAT_HOST == "azure":
6060
openai_chat_deployment = os.getenv("AZURE_OPENAI_CHAT_DEPLOYMENT") or "gpt-4o-mini"
6161
openai_chat_model = os.getenv("AZURE_OPENAI_CHAT_MODEL") or "gpt-4o-mini"

src/backend/fastapi_app/postgres_models.py

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -19,16 +19,16 @@ class Item(Base):
1919
description: Mapped[str] = mapped_column()
2020
price: Mapped[float] = mapped_column()
2121
# Embeddings for different models:
22-
embedding_ada002: Mapped[Vector] = mapped_column(Vector(1536), nullable=True) # ada-002
22+
embedding_3l: Mapped[Vector] = mapped_column(Vector(1024), nullable=True) # text-embedding-3-large
2323
embedding_nomic: Mapped[Vector] = mapped_column(Vector(768), nullable=True) # nomic-embed-text
2424

2525
def to_dict(self, include_embedding: bool = False):
2626
model_dict = {column.name: getattr(self, column.name) for column in self.__table__.columns}
2727
if include_embedding:
28-
model_dict["embedding_ada002"] = model_dict.get("embedding_ada002", [])
28+
model_dict["embedding_3l"] = model_dict.get("embedding_3l", [])
2929
model_dict["embedding_nomic"] = model_dict.get("embedding_nomic", [])
3030
else:
31-
del model_dict["embedding_ada002"]
31+
del model_dict["embedding_3l"]
3232
del model_dict["embedding_nomic"]
3333
return model_dict
3434

@@ -51,12 +51,12 @@ def to_str_for_embedding(self):
5151

5252
table_name = Item.__tablename__
5353

54-
index_ada002 = Index(
55-
f"hnsw_index_for_cosine_{table_name}_embedding_ada002",
56-
Item.embedding_ada002,
54+
index_3l = Index(
55+
f"hnsw_index_for_cosine_{table_name}_embedding_3l",
56+
Item.embedding_3l,
5757
postgresql_using="hnsw",
5858
postgresql_with={"m": 16, "ef_construction": 64},
59-
postgresql_ops={"embedding_ada002": "vector_cosine_ops"},
59+
postgresql_ops={"embedding_3l": "vector_cosine_ops"},
6060
)
6161

6262
index_nomic = Index(

src/backend/fastapi_app/routes/api_routes.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ async def similar_handler(
6868
f"SELECT *, {context.embedding_column} <=> :embedding as DISTANCE FROM {Item.__tablename__} "
6969
"WHERE id <> :item_id ORDER BY distance LIMIT :n"
7070
),
71-
{"embedding": item.embedding_ada002, "n": n, "item_id": id},
71+
{"embedding": item.embedding_3l, "n": n, "item_id": id},
7272
)
7373
).fetchall()
7474

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy