Skip to content

Commit 2d1e006

Browse files
committed
checkpoint 2
1 parent 0ac1085 commit 2d1e006

File tree

6 files changed

+50
-26
lines changed

6 files changed

+50
-26
lines changed

articles/search/TOC.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -127,7 +127,7 @@
127127
href: samples-rest.md
128128
- name: Concepts
129129
items:
130-
- name: Storage (indexes)
130+
- name: Storage
131131
items:
132132
- name: Search index
133133
href: search-what-is-an-index.md
@@ -137,7 +137,7 @@
137137
href: knowledge-store-concept-intro.md
138138
- name: Data import strategies
139139
href: search-what-is-data-import.md
140-
- name: Enrichment (skills)
140+
- name: Enrichment
141141
items:
142142
- name: Enrichment overview
143143
href: cognitive-search-concept-intro.md
@@ -147,7 +147,7 @@
147147
href: cognitive-search-working-with-skillsets.md
148148
- name: Integrated vectorization (preview)
149149
href: vector-search-integrated-vectorization.md
150-
- name: Retrieval (queries)
150+
- name: Retrieval
151151
items:
152152
- name: Full-text search
153153
href: search-lucene-query-architecture.md

articles/search/cognitive-search-concept-intro.md

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,20 +12,25 @@ ms.custom:
1212
ms.topic: conceptual
1313
ms.date: 01/30/2024
1414
---
15+
1516
# AI enrichment in Azure AI Search
1617

1718
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.
1819

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*.
2023

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:
2225

2326
+ Translation and language detection for multi-lingual search
2427
+ Entity recognition to extract people names, places, and other entities from large chunks of text
2528
+ Key phrase extraction to identify and output important terms
2629
+ Optical Character Recognition (OCR) to recognize printed and handwritten text in binary files
2730
+ Image analysis to describe image content, and output the descriptions as searchable text fields
2831

32+
Custom skills running your external code can be used for transformations and processing that you want to include in the pipeline.
33+
2934
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.
3035

3136
The following diagram shows the progression of AI enrichment:
19 KB
Loading
53.7 KB
Loading

articles/search/vector-search-filters.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ ms.date: 02/14/2024
1616

1717
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.
1818

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.
2020

2121
This article describes each filter mode and provides guidance on when to use each one.
2222

articles/search/vector-store.md

Lines changed: 39 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -35,15 +35,15 @@ In Azure AI Search, there are two patterns for working with search results.
3535

3636
Your index schema should reflect your primary use case.
3737

38-
## Schema designs for each retrieval pattern
38+
## Schema of a vector store
3939

4040
The following examples highlight the differences in field composition for solutions build for generative AI or classic search.
4141

4242
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).
4343

4444
### Basic vector field configuration
4545

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.
4747

4848
```json
4949
{
@@ -56,9 +56,11 @@ A vector field, such as "content_vector" in the following example, is of type `C
5656
}
5757
```
5858

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
6060

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.
6264

6365
```json
6466
"name": "example-basic-vector-idx",
@@ -91,33 +93,51 @@ In the following example, for each search document, there's one chunk ID, chunk,
9193
]
9294
```
9395

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.
9599

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.":::
97101

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:
103+
104+
```json
105+
"name": "example-index-from-accelerator",
106+
"fields": [
107+
{ "name": "id", "type": "Edm.String", "searchable": false, "filterable": true, "retrievable": true },
108+
{ "name": "content", "type": "Edm.String", "searchable": true, "filterable": false, "retrievable": true },
109+
{ "name": "content_vector", "type": "Collection(Edm.Single)", "searchable": true, "retrievable": true, "dimensions": 1536, "vectorSearchProfile": "my-vector-profile"},
110+
{ "name": "metadata", "type": "Edm.String", "searchable": true, "filterable": false, "retrievable": true },
111+
{ "name": "title", "type": "Edm.String", "searchable": true, "filterable": true, "retrievable": true, "facetable": true },
112+
{ "name": "source", "type": "Edm.String", "searchable": true, "filterable": true, "retrievable": true },
113+
{ "name": "chunk", "type": "Edm.Int32", "searchable": false, "filterable": true, "retrievable": true },
114+
{ "name": "offset", "type": "Edm.Int32", "searchable": false, "filterable": true, "retrievable": true }
115+
]
116+
```
99117

100-
+ 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.
101119

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.":::
103121

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
105123

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.
107125

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.
109127

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.
111129

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.
113131

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
115133

116134
### Secure access to vector data
117135

118136
<!-- Azure AI Search supports comprehensive security. Authentication and authorization -->
119137

120-
## Manage vector indexes
138+
## Manage vector stores
139+
140+
Azure provides a monitoring platform that includes diagnostic logging and alerting.
121141

122142
+ Enable logging
123143
+ Set up alerts
@@ -126,7 +146,6 @@ Key points to keep in mind for vector retrieval:
126146

127147
## See also
128148

129-
+ [Quickstart: Vector search using REST APIs](search-get-started-vector.md)
130-
+ [Vector store creation](vector-search-how-to-create-index.md)
131-
+ [Vector query creation](vector-search-how-to-query.md)
132-
+ [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

Comments
 (0)