Skip to content

Commit f57a424

Browse files
Copilotowndev
andcommitted
Revert "Fix Azure Search validation errors" - restore required fields
Co-authored-by: owndev <69784886+owndev@users.noreply.github.com>
1 parent cec256c commit f57a424

2 files changed

Lines changed: 57 additions & 33 deletions

File tree

docs/azure-ai-integration.md

Lines changed: 13 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,9 @@ AZURE_SEARCH_ENDPOINT="https://your-search-service.search.windows.net"
5555
# Azure Search index name containing the documents
5656
AZURE_SEARCH_INDEX_NAME="your-index-name"
5757

58+
# Azure Search project resource ID (optional)
59+
AZURE_SEARCH_PROJECT_RESOURCE_ID="your-project-resource-id"
60+
5861
# Azure Search API key (if using api_key authentication)
5962
AZURE_SEARCH_KEY="your-search-api-key"
6063

@@ -64,6 +67,12 @@ AZURE_SEARCH_AUTHENTICATION_TYPE="system_assigned_managed_identity"
6467
# Semantic configuration name for Azure Search
6568
AZURE_SEARCH_SEMANTIC_CONFIGURATION="azureml-default"
6669

70+
# Azure Search embedding endpoint (optional)
71+
AZURE_SEARCH_EMBEDDING_ENDPOINT="your-embedding-endpoint"
72+
73+
# Azure Search embedding API key (optional)
74+
AZURE_SEARCH_EMBEDDING_KEY="your-embedding-key"
75+
6776
# Query type for Azure Search
6877
AZURE_SEARCH_QUERY_TYPE="vectorSimpleHybrid"
6978

@@ -95,43 +104,15 @@ Configure Azure Search by setting the following environment variables:
95104

96105
#### Optional Settings:
97106

107+
- **AZURE_SEARCH_PROJECT_RESOURCE_ID**: Project resource ID
98108
- **AZURE_SEARCH_SEMANTIC_CONFIGURATION**: Semantic configuration name
109+
- **AZURE_SEARCH_EMBEDDING_ENDPOINT**: Embedding service endpoint
110+
- **AZURE_SEARCH_EMBEDDING_KEY**: Embedding service API key
99111
- **AZURE_SEARCH_QUERY_TYPE**: Query type (`vectorSimpleHybrid`, `vector`, `semantic`)
100112
- **AZURE_SEARCH_IN_SCOPE**: Limit to indexed documents only
101113
- **AZURE_SEARCH_ROLE_INFORMATION**: Role information for responses
102114
- **AZURE_SEARCH_STRICTNESS**: Strictness level (1-5)
103-
- **AZURE_SEARCH_TOP_N_DOCUMENTS**: Number of documents to retrieve
104-
105-
#### Example Generated Data Sources Configuration:
106-
107-
When Azure Search is configured, requests to Azure AI will automatically include:
108-
109-
```json
110-
{
111-
"model": "gpt-4o",
112-
"messages": [...],
113-
"data_sources": [
114-
{
115-
"type": "azure_search",
116-
"parameters": {
117-
"filter": null,
118-
"endpoint": "https://your-search-service.search.windows.net",
119-
"index_name": "your-index-name",
120-
"authentication": {
121-
"type": "system_assigned_managed_identity",
122-
"key": null
123-
},
124-
"query_type": "vectorSimpleHybrid",
125-
"in_scope": false,
126-
"role_information": "You are an AI assistant.",
127-
"strictness": 5,
128-
"top_n_documents": 20,
129-
"semantic_configuration": "azureml-default"
130-
}
131-
}
132-
]
133-
}
134-
```
115+
- **AZURE_SEARCH_TOP_N_DOCUMENTS**: Number of documents to retrieve
135116

136117
> [!TIP]
137118
> To use **Azure OpenAI** and other **Azure AI** models **simultaneously**, you can use the following URL: `https://<your project>.services.ai.azure.com/models/chat/completions?api-version=2024-05-01-preview`

pipelines/azure/azure_ai_foundry.py

Lines changed: 44 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -187,6 +187,11 @@ class Valves(BaseModel):
187187
description="Azure Search index name for RAG",
188188
)
189189

190+
AZURE_SEARCH_PROJECT_RESOURCE_ID: str = Field(
191+
default=os.getenv("AZURE_SEARCH_PROJECT_RESOURCE_ID", ""),
192+
description="Azure Search project resource ID",
193+
)
194+
190195
AZURE_SEARCH_KEY: EncryptedStr = Field(
191196
default=os.getenv("AZURE_SEARCH_KEY", ""),
192197
description="Azure Search API key",
@@ -204,6 +209,16 @@ class Valves(BaseModel):
204209
description="Azure Search semantic configuration name",
205210
)
206211

212+
AZURE_SEARCH_EMBEDDING_ENDPOINT: str = Field(
213+
default=os.getenv("AZURE_SEARCH_EMBEDDING_ENDPOINT", ""),
214+
description="Azure Search embedding endpoint URL",
215+
)
216+
217+
AZURE_SEARCH_EMBEDDING_KEY: EncryptedStr = Field(
218+
default=os.getenv("AZURE_SEARCH_EMBEDDING_KEY", ""),
219+
description="Azure Search embedding API key",
220+
)
221+
207222
AZURE_SEARCH_QUERY_TYPE: str = Field(
208223
default=os.getenv("AZURE_SEARCH_QUERY_TYPE", "vectorSimpleHybrid"),
209224
description="Azure Search query type (vectorSimpleHybrid, vector, semantic)",
@@ -324,7 +339,7 @@ def get_azure_search_data_sources(self) -> Optional[List[Dict[str, Any]]]:
324339
):
325340
auth_config["key"] = self.valves.AZURE_SEARCH_KEY.get_decrypted()
326341

327-
# Build the data source configuration with only officially supported parameters
342+
# Build the data source configuration
328343
data_source = {
329344
"type": "azure_search",
330345
"parameters": {
@@ -340,12 +355,40 @@ def get_azure_search_data_sources(self) -> Optional[List[Dict[str, Any]]]:
340355
},
341356
}
342357

358+
# Add optional project resource ID if configured
359+
if self.valves.AZURE_SEARCH_PROJECT_RESOURCE_ID:
360+
data_source["parameters"]["project_resource_id"] = (
361+
self.valves.AZURE_SEARCH_PROJECT_RESOURCE_ID
362+
)
363+
343364
# Add semantic configuration if configured
344365
if self.valves.AZURE_SEARCH_SEMANTIC_CONFIGURATION:
345366
data_source["parameters"]["semantic_configuration"] = (
346367
self.valves.AZURE_SEARCH_SEMANTIC_CONFIGURATION
347368
)
348369

370+
# Add embedding configuration if configured
371+
if self.valves.AZURE_SEARCH_EMBEDDING_ENDPOINT:
372+
data_source["parameters"]["embeddingEndpoint"] = (
373+
self.valves.AZURE_SEARCH_EMBEDDING_ENDPOINT
374+
)
375+
data_source["parameters"]["embedding_dependency"] = None
376+
377+
if self.valves.AZURE_SEARCH_EMBEDDING_KEY:
378+
data_source["parameters"]["embeddingKey"] = (
379+
self.valves.AZURE_SEARCH_EMBEDDING_KEY.get_decrypted()
380+
)
381+
382+
# Add additional Azure Search parameters if using API key
383+
if (
384+
self.valves.AZURE_SEARCH_AUTHENTICATION_TYPE == "api_key"
385+
and self.valves.AZURE_SEARCH_KEY
386+
):
387+
data_source["parameters"]["key"] = (
388+
self.valves.AZURE_SEARCH_KEY.get_decrypted()
389+
)
390+
data_source["parameters"]["indexName"] = self.valves.AZURE_SEARCH_INDEX_NAME
391+
349392
return [data_source]
350393

351394
def parse_models(self, models_str: str) -> List[str]:

0 commit comments

Comments
 (0)