You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: articles/search/cognitive-search-concept-intro.md
+7-2Lines changed: 7 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -12,20 +12,25 @@ ms.custom:
12
12
ms.topic: conceptual
13
13
ms.date: 01/30/2024
14
14
---
15
+
15
16
# AI enrichment in Azure AI Search
16
17
17
18
In Azure AI Search, *AI enrichment* refers to integration with [Azure AI services](/azure/ai-services/what-are-ai-services) to process content that isn't searchable in its raw form. Through enrichment, analysis and inference are used to create searchable content and structure where none previously existed.
18
19
19
-
Because Azure AI Search is a text and vector search solution, the purpose of AI enrichment is to improve the utility of your content in search-related scenarios. Source content must be textual (you can't enrich vectors), but the content created by an enrichment pipeline can be vectorized and indexed in a vector store using skills like [Text Split skill](cognitive-search-skill-textsplit.md) for chunking and [AzureOpenAiEmbedding skill](cognitive-search-skill-azure-openai-embedding.md) for encoding.
20
+
Because Azure AI Search is a text and vector search solution, the purpose of AI enrichment is to improve the utility of your content in search-related scenarios. Source content must be textual (you can't enrich vectors), but the content created by an enrichment pipeline can be vectorized and indexed in a vector store using skills like [Text Split skill](cognitive-search-skill-textsplit.md) for chunking and [AzureOpenAiEmbedding skill](cognitive-search-skill-azure-openai-embedding.md) for encoding.
21
+
22
+
AI enrichment is based on *skills*.
20
23
21
-
Built-in skills apply the following transformation and processing to raw content:
24
+
Built-in skills that tap Azure AI services apply the following transformation and processing to raw content:
22
25
23
26
+ Translation and language detection for multi-lingual search
24
27
+ Entity recognition to extract people names, places, and other entities from large chunks of text
25
28
+ Key phrase extraction to identify and output important terms
26
29
+ Optical Character Recognition (OCR) to recognize printed and handwritten text in binary files
27
30
+ Image analysis to describe image content, and output the descriptions as searchable text fields
28
31
32
+
Custom skills running your external code can be used for transformations and processing that you want to include in the pipeline.
33
+
29
34
AI enrichment is an extension of an [**indexer pipeline**](search-indexer-overview.md) that connects to Azure data sources. An enrichment pipeline has all of the components of an indexer pipeline (indexer, data source, index), plus a [**skillset**](cognitive-search-working-with-skillsets.md) that specifies atomic enrichment steps.
30
35
31
36
The following diagram shows the progression of AI enrichment:
Copy file name to clipboardExpand all lines: articles/search/vector-search-filters.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -16,7 +16,7 @@ ms.date: 02/14/2024
16
16
17
17
You can set a [**vector filter modes on a vector query**](vector-search-how-to-query.md) to specify whether you want filtering before or after query execution.
18
18
19
-
Filters set the scope of a vector query. Filter are set on and iterate over nonvector string and numeric fields attributed as `filterable` in the index, but the effects of filtering determine *what* the vector query executes over: the searchable space, or the contents of the search results.
19
+
Filters determine the scope of a vector query. Filters are set on and iterate over nonvector string and numeric fields attributed as `filterable` in the index, but the purpose of a filter determines *what* the vector query executes over: the entire searchable space, or the contents of a search result.
20
20
21
21
This article describes each filter mode and provides guidance on when to use each one.
Copy file name to clipboardExpand all lines: articles/search/vector-store.md
+39-20Lines changed: 39 additions & 20 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -35,15 +35,15 @@ In Azure AI Search, there are two patterns for working with search results.
35
35
36
36
Your index schema should reflect your primary use case.
37
37
38
-
## Schema designs for each retrieval pattern
38
+
## Schema of a vector store
39
39
40
40
The following examples highlight the differences in field composition for solutions build for generative AI or classic search.
41
41
42
42
An index schema for a vector store requires a name, a key field (string), one or more vector fields, and a vector configuration. Nonvector fields are recommended for hybrid queries, or for returning verbatim human readable content that doesn't have to go through a language model. For instructions about vector configuration, see [Create a vector store](vector-search-how-to-create-index.md).
43
43
44
44
### Basic vector field configuration
45
45
46
-
A vector field, such as "content_vector" in the following example, is of type `Collection(Edm.Single)`. It must be searchable and retrievable. It can't be filterable, facetable, or sortable, and it can't have analyzers, normalizers, or synonym map assignments. It must have dimensions set to the number of embeddings generated by the embedding model. For instance, if you're using text-embedding-ada-002, it generates 1,536 embeddings. A vector search profile is specified in a separate vector search configuration and assigned to a vector field using a profile name.
46
+
A vector field, such as `"content_vector"` in the following example, is of type `Collection(Edm.Single)`. It must be searchable and retrievable. It can't be filterable, facetable, or sortable, and it can't have analyzers, normalizers, or synonym map assignments. It must have dimensions set to the number of embeddings generated by the embedding model. For instance, if you're using text-embedding-ada-002, it generates 1,536 embeddings. A vector search profile is specified in a separate vector search configuration and assigned to a vector field using a profile name.
47
47
48
48
```json
49
49
{
@@ -56,9 +56,11 @@ A vector field, such as "content_vector" in the following example, is of type `C
56
56
}
57
57
```
58
58
59
-
Within the fields collection with other fields, content (nonvector) fields are useful for human readable text returned directly from the search engine. Although if you're using language models exclusively for response formulation, you can skip nonvector content fields.
59
+
### Fields collection for basic vector workloads
60
60
61
-
The following example assumes that "content" is the human readable equivalent of the "content_vector" field. The key field is "id" in this example. Metadata fields are useful for filters, especially if metadata includes origin information about the source document. You can't filter on a vector field directly, but you can set prefilter or postfilter modes to filter before or after vector query execution.
61
+
Here's an example showing a vector field in context, with other fields in a collection.
62
+
63
+
The key field (required) is `"id"` in this example. The `"content"` field is the human readable equivalent of the `"content_vector"` field. Although if you're using language models exclusively for response formulation, you can skip nonvector content fields. Metadata fields are useful for filters, especially if metadata includes origin information about the source document. You can't filter on a vector field directly, but you can set prefilter or postfilter modes to filter before or after vector query execution.
62
64
63
65
```json
64
66
"name": "example-basic-vector-idx",
@@ -91,33 +93,51 @@ In the following example, for each search document, there's one chunk ID, chunk,
91
93
]
92
94
```
93
95
94
-
## Sizing a vector index
96
+
### Schema for RAG and chat-style apps
97
+
98
+
If you're designing storage for generative search, you can create separate indexes for the static content that you indexed and vectorized, and a second index for converations that can be used in prompt flows. The following indexes are created from the [**chat-with-your-data-solution-accelerator**](https://github.com/Azure-Samples/azure-search-openai-solution-accelerator) accelerator.
95
99
96
-
Vector stores are subject to limits imposed at the service-level. Maximum storage varies by service tier, and also by when the search service was created. Newer same-tier services have significantly more capacity for vector indexes.
100
+
:::image type="content" source="media/vector-search-overview/accelerator-indexes.png" alt-text="Screenshot of the indexes created by the acceletor.":::
97
101
98
-
+ Check the deployment date of your search service. If it was created before July 1, 2023, consider creating a new search service for greater capacity.
102
+
Fields from the chat index that support generative search experience:
+ Review [Vector index size limits](Vector index size limits.md).
118
+
Here's a screenshot showing [Search explorer](search-explorer.md) search results for the conversations index. The search score is 1.00 because the search was unqualified. Notice the fields that exist to support orchestration and prompt flows. A conversation ID identifies a specific chat. `"type"` indicates whether the content is from the user or the assistant. Dates are used to age out chats from the history.
101
119
102
-
In terms of usage metrics, a vector index is an internal data structure created for each vector field. As such, a vector index will always be a fraction of the overall index size, as other nonvector fields and data structures consume the remainder of the quota.
120
+
:::image type="content" source="media/vetor-search-overview/vector-schema-search-results.png" alt-text="Screenshot of Search Explorer with results from an index designed for RAG apps.":::
103
121
104
-
The size of vector indexes is measured in bytes. The size constraints are based on memory reserved for vector search, but also have implications for storage at the service level. Size constraints vary by service tier (or SKU).
122
+
## Physical structure and size
105
123
106
-
## Vector data retrieval
124
+
Vector store index limits and estimations are covered in [another article](vector-search-index-size.md), but it's highlighted here to emphasize that maximum storage varies by service tier, and also by when the search service was created. Newer same-tier services have significantly more capacity for vector indexes.
107
125
108
-
Key points to keep in mind for vector retrieval:
126
+
+[Check the deployment date of your search service](vector-search-index-size.md#how-to-determine-service-creation-date). If it was created before July 1, 2023, consider creating a new search service for greater capacity.
109
127
110
-
+The vector search algorithms specify the navigation structures used at query time. The structures are created during indexing, but used during queries.
128
+
+[Choose a scaleable tier](search-sku-tier.md) if you anticipate fluctuations in vector storage requirements. The Basic tier is fixed at one partition. Consider Standard 1 (S1) and above for more flexibility and faster performance.
111
129
112
-
+ The content of your vector fields is determined by the [embedding step](vector-search-how-to-generate-embeddings.md) that vectorizes or encodes your content. If you use the same embedding model for all of your fields, you can [build vector queries](vector-search-how-to-query.md) that cover all of them in a single request.
130
+
In terms of usage metrics, a vector index is an internal data structure created for each vector field. As such, a vector sotrage is always a fraction of the overall index size. Other nonvector fields and data structures consume the remainder of the quota for index size and consumed storage at the service level.
113
131
114
-
+ If you use search results as grounding data, where a chat model generates the answer to a query, design a schema that stores chunks of text. Data chunking is a requirement if source files are too large for the embedding model. It's also efficient for chat if the original source files contain a varied information.
132
+
## Basic operations and interaction
115
133
116
134
### Secure access to vector data
117
135
118
136
<!-- Azure AI Search supports comprehensive security. Authentication and authorization -->
119
137
120
-
## Manage vector indexes
138
+
## Manage vector stores
139
+
140
+
Azure provides a monitoring platform that includes diagnostic logging and alerting.
121
141
122
142
+ Enable logging
123
143
+ Set up alerts
@@ -126,7 +146,6 @@ Key points to keep in mind for vector retrieval:
126
146
127
147
## See also
128
148
129
-
+[Quickstart: Vector search using REST APIs](search-get-started-vector.md)
130
-
+[Vector store creation](vector-search-how-to-create-index.md)
+[Azure Cognitive Search and LangChain: A Seamless Integration for Enhanced Vector Search Capabilities](https://techcommunity.microsoft.com/t5/azure-ai-services-blog/azure-cognitive-search-and-langchain-a-seamless-integration-for/ba-p/3901448)
149
+
+[Create a vector store using REST APIs](search-get-started-vector.md)
150
+
+[Create a vector store](vector-search-how-to-create-index.md)
151
+
+[Query a vector store](vector-search-how-to-query.md)
0 commit comments