Diff Insight Report - search

最終更新日: 2026-02-11

利用上の注意

このポストは Microsoft 社の Azure 公式ドキュメント(CC BY 4.0 または MIT ライセンス) をもとに生成AIを用いて翻案・要約した派生作品です。 元の文書は MicrosoftDocs/azure-ai-docs にホストされています。

生成AIの性能には限界があり、誤訳や誤解釈が含まれる可能性があります。 本ポストはあくまで参考情報として用い、正確な情報は必ず元の文書を参照してください。

このポストで使用されている商標はそれぞれの所有者に帰属します。これらの商標は技術的な説明のために使用されており、商標権者からの公式な承認や推奨を示すものではありません。

View Diff on GitHub


# ハイライト
このコードの変更は、Azure AI Searchに関するドキュメントのクイックスタートを様々なプログラミング言語で更新するものでした。特に、手順の明確化、バージョン要件の明示、一貫性のあるコードスタイルの採用などを通じて、初心者ユーザーにとってのユーザビリティを向上させることが目的です。また、「コードスニペットの免責事項」を含む新しいファイルが追加されており、これには、ユーザーに誤解を与えないようにするための情報が含まれています。

新機能

  • 「コードスニペットの免責事項」を含む新しいファイルの追加。

破壊的変更

特に破壊的な変更は含まれていません。

その他の更新

  • C#, Java, JavaScript, PowerShell, Python, REST, TypeScript向けの全テキスト検索クイックスタートの手順とバージョン情報の更新。
  • ベクトル検索に関する.NET, Java, JavaScript, Python, REST, TypeScript向けのクイックスタートドキュメントの更新。
  • 手順の明確化、ページ間のリンク修正、一貫性のあるコードスタイルへの統一。
  • 関連コンテンツセクションの追加により、学習リソースへのアクセスが容易に。

洞察

この一連の変更は、幅広いプログラミング言語にわたってAzure AI Searchの利用方法を容易にするための重要な改善です。特に、新しい開発者がこれらのツールを迅速に理解し、活用するために手順が明確化され、必要なバージョン要件が詳しく記載されています。これにより、利用者は間違いなく最新の環境で最適な機能を利用することができ、実際の実装においてトラブルシューティングの手間を削減できます。

また、新たに追加されたコードスニペットの免責事項ファイルは、開発者が提供されるコードサンプルに対して実行例を見ることで、期待する結果を得るために無駄なく作業を進められるよう支援します。このように、コードの可読性と信頼性を低下させることなく、ユーザーは具体的かつ実践的な洞察を得ることができるようになっています。

さらに、ベクトル検索関連のクイックスタートにおける情報と手順の具体化は、特に複雑な機能を実装する開発者にとって貴重であり、これによってAzure AI Searchの可能性をさらに引き出すことができます。関連コンテンツがリンクされていることで、ユーザーはより深い理解を追求しやすくなり、プロジェクトにおける実践的な成功の可能性が高まります。

全体として、この更新はAzure AI Searchを活用したアプリケーション開発における障壁を低くし、ユーザーが迅速かつ効果的に成果を得られるようサポートするものです。ユーザー体験の向上を目指すこれらの改訂は、開発者が機能を最大限に活用できるように設計されています。

Summary Table

Filename Type Title Status A D M
full-text-csharp.md minor update 全テキスト検索に関するC#クイックスタートの更新 modified 22 15 37
full-text-java.md minor update 全テキスト検索に関するJavaクイックスタートの更新 modified 27 14 41
full-text-javascript.md minor update 全テキスト検索に関するJavaScriptクイックスタートの更新 modified 26 13 39
full-text-powershell.md minor update 全テキスト検索に関するPowerShellクイックスタートの更新 modified 11 11 22
full-text-python.md minor update 全テキスト検索に関するPythonクイックスタートの更新 modified 21 12 33
full-text-rest.md minor update 全テキスト検索に関するRESTクイックスタートの更新 modified 15 10 25
full-text-typescript.md minor update 全テキスト検索に関するTypeScriptクイックスタートの更新 modified 33 16 49
search-get-started-vector-dotnet.md minor update ベクトル検索に関する.NETクイックスタートの拡充 modified 381 286 667
search-get-started-vector-java.md minor update ベクトル検索に関するJavaクイックスタートの更新 modified 313 410 723
search-get-started-vector-javascript.md minor update ベクトル検索に関するJavaScriptクイックスタートのアップデート modified 306 427 733
search-get-started-vector-python.md minor update ベクトル検索に関するPythonクイックスタートの更新 modified 209 695 904
search-get-started-vector-rest.md minor update REST APIを使用したベクトル検索のクイックスタートの更新 modified 309 1024 1333
search-get-started-vector-typescript.md minor update TypeScriptを使用したベクトル検索のクイックスタートの更新 modified 300 455 755
understand-code-note.md new feature コードスニペットの免責事項を含むファイルの追加 added 12 0 12
search-get-started-vector.md minor update 関連コンテンツセクションの追加 modified 5 0 5
search-try-for-free.md minor update リンクの修正 modified 1 1 2

Modified Contents

articles/search/includes/quickstarts/full-text-csharp.md

Diff
@@ -20,7 +20,7 @@ Full-text search uses Apache Lucene for indexing and queries and the BM25 rankin
 
 - An [Azure AI Search service](../../search-create-service-portal.md). You can use a free service for this quickstart.
 
-- The latest version of the [.NET SDK](https://dotnet.microsoft.com/download).
+- [.NET 8](https://dotnet.microsoft.com/download) or later.
 
 - [Visual Studio Code](https://code.visualstudio.com/download).
 
@@ -40,33 +40,38 @@ Full-text search uses Apache Lucene for indexing and queries and the BM25 rankin
 
 1. Use Git to clone the sample repository.
 
-   ```console
-   git clone https://github.com/Azure-Samples/azure-search-dotnet-samples
-   ```
+    ```bash
+    git clone https://github.com/Azure-Samples/azure-search-dotnet-samples
+    ```
 
-1. Open the `azure-search-dotnet-samples/quickstart-keyword-search/AzureSearchQuickstart` folder in Visual Studio Code.
+1. Navigate to the quickstart folder and open it in Visual Studio Code.
 
-1. Open the `Program.cs` file.
+    ```bash
+    cd azure-search-dotnet-samples/quickstart-keyword-search/AzureSearchQuickstart
+    code .
+    ```
 
-1. Replace the placeholder value for `serviceEndpoint` with the URL you obtained in [Get endpoint](#get-endpoint).
+1. In `Program.cs`, replace the placeholder value for `serviceEndpoint` with the URL you obtained in [Get endpoint](#get-endpoint).
 
-1. Install the dependencies from the `AzureSearchQuickstart.csproj` file.
+1. Install the dependencies from `AzureSearchQuickstart.csproj`.
 
-   ```console
-   dotnet restore
-   ```
+    ```bash
+    dotnet restore
+    ```
+
+    When the restore completes, verify that no errors appear in the output.
 
 1. For keyless authentication with Microsoft Entra ID, sign in to your Azure account. If you have multiple subscriptions, select the one that contains your Azure AI Search service.
 
-    ```azurecli
-    az login
-    ```
+   ```azurecli
+   az login
+   ```
 
 ## Run the code
 
 Build and run the application.
 
-```console
+```bash
 dotnet run
 ```
 
@@ -154,6 +159,8 @@ Complete. Press any key to end this program...
 
 ## Understand the code
 
+[!INCLUDE [understand code note](../understand-code-note.md)]
+
 Now that you've run the code, let's break down the key steps:
 
 1. [Create a search client](#create-a-search-client)

Summary

{
    "modification_type": "minor update",
    "modification_title": "全テキスト検索に関するC#クイックスタートの更新"
}

Explanation

この変更では、全テキスト検索に関連するC#クイックスタートのドキュメントが更新されました。主な変更点として、必要なソフトウェアのバージョン情報が明確になり、手順が改善されています。

具体的には、.NET SDKの最新バージョンに関する記述が「.NET 8またはそれ以降」に更新され、コードの例が明確に区別されるように修正されました。また、一部の手順が整理され、より直感的に理解しやすくなっています。コマンドの記述スタイルが統一され、すべてのコードブロックがbashスタイルに変更されたことも、結果として文書の整合性を高めています。

さらに、Program.csファイルの開き方や依存関係のインストール手順も、より詳細に説明されるようになりました。これにより、新しいユーザーがこのクイックスタートを使用する際に、よりスムーズにプロセスを進められるよう配慮がされています。最終的に、これらの変更がユーザー体験の向上に寄与することを意図しています。

articles/search/includes/quickstarts/full-text-java.md

Diff
@@ -40,37 +40,48 @@ Full-text search uses Apache Lucene for indexing and queries and the BM25 rankin
 
 1. Use Git to clone the sample repository.
 
-   ```console
-   git clone https://github.com/Azure-Samples/azure-search-java-samples
-   ```
+    ```bash
+    git clone https://github.com/Azure-Samples/azure-search-java-samples
+    ```
+
+1. Navigate to the quickstart folder and open it in Visual Studio Code.
 
-1. Open the `azure-search-java-samples/quickstart-keyword-search` folder in Visual Studio Code.
+    ```bash
+    cd azure-search-java-samples/quickstart-keyword-search
+    code .
+    ```
 
-1. Open the `App.java` file in the `src/main/java/azure/search/sample` folder.
+1. In `src/main/java/azure/search/sample/App.java`, replace the placeholder value for `searchServiceEndpoint` with the URL you obtained in [Get endpoint](#get-endpoint).
 
-1. Replace the placeholder value for `searchServiceEndpoint` with the URL you obtained in [Get endpoint](#get-endpoint).
+1. Install the dependencies.
 
-1. Use a terminal in Visual Studio Code to install the dependencies.
+    ```bash
+    mvn clean dependency:copy-dependencies
+    ```
 
-   ```console
-   mvn clean dependency:copy-dependencies
-   ```
+    When the build completes, verify that no errors appear in the output.
 
 1. For keyless authentication with Microsoft Entra ID, sign in to your Azure account. If you have multiple subscriptions, select the one that contains your Azure AI Search service.
 
-    ```azurecli
-    az login
-    ```
+   ```azurecli
+   az login
+   ```
 
 ## Run the code
 
 Compile and run the application.
 
-```console
+```bash
 javac -d target/classes -cp "target/dependency/*" src/main/java/azure/search/sample/*.java
 java -cp "target/classes;target/dependency/*" azure.search.sample.App
 ```
 
+On macOS or Linux, use `:` instead of `;` as the classpath separator.
+
+```bash
+java -cp "target/classes:target/dependency/*" azure.search.sample.App
+```
+
 ### Output
 
 The output should be similar to the following:
@@ -117,6 +128,8 @@ Complete.
 
 ## Understand the code
 
+[!INCLUDE [understand code note](../understand-code-note.md)]
+
 Now that you've run the code, let's break down the key steps:
 
 1. [Create a search client](#create-a-search-client)

Summary

{
    "modification_type": "minor update",
    "modification_title": "全テキスト検索に関するJavaクイックスタートの更新"
}

Explanation

この変更では、全テキスト検索に関するJavaのクイックスタートドキュメントが更新され、手順が改善されました。主な変更点は、コード例の書式が一貫して統一され、ユーザビリティが向上している点です。

具体的には、リポジトリのクローン作成手順がbashスタイルのコードブロックに変更され、フォルダの移動やVisual Studio Codeでの開き方も詳細に記載されています。また、App.javaファイルの修正手順についても、より具体的に記載されており、依存関係のインストール方法が明記されたことで、新しいユーザーにとって理解しやすくなっています。特に、ビルド後のエラー確認の手順が追加され、実行時のエラーハンドリングに対する配慮がなされています。

さらに、アプリケーションのコンパイルと実行手順にも改善が加えられており、macOSやLinuxのユーザー向けにはクラスパスの区切り文字に関する追加情報も含まれています。これにより、OSに関係なく、シンプルかつスムーズに手順を進めることができるようになっています。これらの変更により、ドキュメント全体が一層アクセスしやすく、効果的なものとなっています。

articles/search/includes/quickstarts/full-text-javascript.md

Diff
@@ -20,7 +20,7 @@ Full-text search uses Apache Lucene for indexing and queries and the BM25 rankin
 
 - An [Azure AI Search service](../../search-create-service-portal.md). You can use a free service for this quickstart.
 
-- The latest LTS version of [Node.js](https://nodejs.org/en/download/).
+- [Node.js 20 LTS](https://nodejs.org/en/download/) or later.
 
 - [Visual Studio Code](https://code.visualstudio.com/download).
 
@@ -40,33 +40,44 @@ Full-text search uses Apache Lucene for indexing and queries and the BM25 rankin
 
 1. Use Git to clone the sample repository.
 
-   ```console
-   git clone https://github.com/Azure-Samples/azure-search-javascript-samples
-   ```
+    ```bash
+    git clone https://github.com/Azure-Samples/azure-search-javascript-samples
+    ```
+
+1. Navigate to the quickstart folder and open it in Visual Studio Code.
+
+    ```bash
+    cd azure-search-javascript-samples/quickstart-keyword-search
+    code .
+    ```
 
-1. Open the `azure-search-javascript-samples/quickstart-keyword-search` folder in Visual Studio Code.
+1. In `sample.env`, replace the placeholder value for `SEARCH_API_ENDPOINT` with the URL you obtained in [Get endpoint](#get-endpoint).
 
-1. Rename the `sample.env` file to `.env`, and then open the file.
+1. Rename `sample.env` to `.env`.
 
-1. Replace the placeholder value for `SEARCH_API_ENDPOINT` with the URL you obtained in [Get endpoint](#get-endpoint).
+    ```bash
+    mv sample.env .env
+    ```
 
-1. Use a terminal in Visual Studio Code to install the dependencies.
+1. Install the dependencies.
 
-    ```console
+    ```bash
     npm install
     ```
 
+    When the installation completes, you should see a `node_modules` folder in the project directory.
+
 1. For keyless authentication with Microsoft Entra ID, sign in to your Azure account. If you have multiple subscriptions, select the one that contains your Azure AI Search service.
 
-    ```azurecli
-    az login
-    ```
+   ```azurecli
+   az login
+   ```
 
 ## Run the code
 
 Run the application.
 
-```console
+```bash
 node index.js
 ```
 
@@ -109,6 +120,8 @@ HotelId: 3; HotelName: Gastronomic Landscape Hotel
 
 ## Understand the code
 
+[!INCLUDE [understand code note](../understand-code-note.md)]
+
 Now that you've run the code, let's break down the key steps:
 
 1. [Create a search client](#create-a-search-client)

Summary

{
    "modification_type": "minor update",
    "modification_title": "全テキスト検索に関するJavaScriptクイックスタートの更新"
}

Explanation

この変更では、全テキスト検索に関するJavaScriptのクイックスタートドキュメントが更新され、手順の明確さと一貫性が向上しています。主な変更点には、必要なソフトウェアのバージョン情報の更新や手続きの改善が含まれています。

具体的には、Node.jsのバージョン要件が「Node.js 20 LTSまたはそれ以降」に変更されました。また、サンプルリポジトリのクローン作成手順や、Visual Studio Codeでのディレクトリの開き方がbashスタイルで統一されてわかりやすくなっています。

sample.envファイルのリネーム手順が明確にされ、環境変数SEARCH_API_ENDPOINTの設定方法が具体的に示されています。さらに、依存関係のインストールが明示的に記載され、インストール完了後にnode_modulesフォルダーがプロジェクトディレクトリに作成されることが確認されるようになっています。このような注意点が加わることで、ユーザーは手順をより安心して進めることができます。

実行コマンドもbashスタイルに統一され、全体を通じて文書の形式が整えられました。これにより、JavaScriptを使用するユーザーがこのクイックスタートをより簡単に利用できるよう工夫されています。全体的に、ドキュメントは一層使いやすく、理解しやすくなっています。

articles/search/includes/quickstarts/full-text-powershell.md

Diff
@@ -20,7 +20,7 @@ Full-text search uses Apache Lucene for indexing and queries and the BM25 rankin
 
 - An [Azure AI Search service](../../search-create-service-portal.md). You can use a free service for this quickstart.
 
-- The latest version of [PowerShell](https://github.com/PowerShell/PowerShell).
+- [PowerShell 7](https://github.com/PowerShell/PowerShell) or later.
 
 - [Git](https://git-scm.com/downloads) to clone the sample repository.
 
@@ -38,25 +38,23 @@ Full-text search uses Apache Lucene for indexing and queries and the BM25 rankin
 
 1. Use Git to clone the sample repository.
 
-   ```powershell
-   git clone https://github.com/Azure-Samples/azure-search-powershell-samples
-   ```
+    ```powershell
+    git clone https://github.com/Azure-Samples/azure-search-powershell-samples
+    ```
 
-1. Navigate to the `Quickstart` folder.
+1. Navigate to the quickstart folder.
 
-   ```powershell
-   cd azure-search-powershell-samples/Quickstart
-   ```
+    ```powershell
+    cd azure-search-powershell-samples/Quickstart
+    ```
 
 1. For keyless authentication with Microsoft Entra ID, sign in to your Azure account. If you have multiple subscriptions, select the one that contains your Azure AI Search service.
 
    ```azurecli
    az login
    ```
 
-1. Open the `azure-search-powershell-samples/Quickstart/azure-search-quickstart.ps1` file in a text editor.
-
-1. Replace the placeholder value for `$baseUrl` with the URL you obtained in [Get endpoint](#get-endpoint).
+1. In `azure-search-quickstart.ps1`, replace the placeholder value for `$baseUrl` with the URL you obtained in [Get endpoint](#get-endpoint).
 
 ## Run the code
 
@@ -91,6 +89,8 @@ The script deletes any existing index, creates a new index, uploads documents, a
 
 ## Understand the code
 
+[!INCLUDE [understand code note](../understand-code-note.md)]
+
 Now that you've run the code, let's break down the key steps:
 
 1. [Create a search index](#create-a-search-index)

Summary

{
    "modification_type": "minor update",
    "modification_title": "全テキスト検索に関するPowerShellクイックスタートの更新"
}

Explanation

この変更は、全テキスト検索に関するPowerShellのクイックスタートドキュメントの更新を示しています。主な変更点は、手順の記述の整理とバージョン要件の明確化です。

最初に、PowerShellに関する要件が変更され、「最新バージョン」から「PowerShell 7またはそれ以降」に更新され、ユーザーに必要なソフトウェアのバージョンが明示的になりました。これにより、最新の環境での使用が推奨されます。

また、Gitリポジトリのクローン作成やディレクトリ移動の手順がpowershellスタイルのコードブロックで示され、より視覚的にわかりやすくなっています。手順の番号付けも整理され、特にファイルの編集に関する指示が具体的に見やすくなっています。azure-search-quickstart.ps1ファイル内の$baseUrlプレースホルダーの置き換え手順も、具体的に記載されていることで理解しやすくなっています。

全体として、この変更によりPowerShellクイックスタートが一層使いやすくなり、スムーズに実行できるよう工夫されています。文書の整形が進むことで、特に初心者ユーザーが手順を追いやすくなっている点が評価されるべきです。

articles/search/includes/quickstarts/full-text-python.md

Diff
@@ -20,7 +20,7 @@ Full-text search uses Apache Lucene for indexing and queries and the BM25 rankin
 
 - An [Azure AI Search service](../../search-create-service-portal.md). You can use a free service for this quickstart.
 
-- The latest version of [Python](https://www.python.org/downloads/).
+- [Python 3.8](https://www.python.org/downloads/) or later.
 
 - [Visual Studio Code](https://code.visualstudio.com/download) with the [Python](https://marketplace.visualstudio.com/items?itemName=ms-python.python) and [Jupyter](https://marketplace.visualstudio.com/items?itemName=ms-toolsai.jupyter) extensions.
 
@@ -40,25 +40,32 @@ Full-text search uses Apache Lucene for indexing and queries and the BM25 rankin
 
 1. Use Git to clone the sample repository.
 
-   ```console
-   git clone https://github.com/Azure-Samples/azure-search-python-samples
-   ```
+    ```bash
+    git clone https://github.com/Azure-Samples/azure-search-python-samples
+    ```
+
+1. Navigate to the quickstart folder and open it in Visual Studio Code.
+
+    ```bash
+    cd azure-search-python-samples/Quickstart-Keyword-Search
+    code .
+    ```
 
-1. Open the `azure-search-python-samples/Quickstart-Keyword-Search` folder in Visual Studio Code.
+1. Open `azure-search-quickstart.ipynb`.
 
-1. Open the `azure-search-quickstart.ipynb` file.
+1. Press **Ctrl+Shift+P**, select **Notebook: Select Notebook Kernel**, and follow the prompts to create a virtual environment.
 
-1. In the upper-right corner of the notebook, select **Select Kernel** > **Python Environments...** > **Create Python Environment**, and then follow the prompts to create a virtual environment.
+   When complete, you should see a `.venv` folder in the project directory.
 
 1. Run the first code cell to install the required packages.
 
-1. In the second code cell, replace the placeholder value for `search_endpoint` with the URL you obtained in [Get endpoint](#get-endpoint), and then run the cell.
+1. In the second code cell, replace the placeholder value for `search_endpoint` with the URL you obtained in [Get endpoint](#get-endpoint), and run the cell.
 
 1. For keyless authentication with Microsoft Entra ID, sign in to your Azure account. If you have multiple subscriptions, select the one that contains your Azure AI Search service.
 
-    ```azurecli
-    az login
-    ```
+   ```azurecli
+   az login
+   ```
 
 ## Run the code
 
@@ -90,6 +97,8 @@ Description: This classic hotel is fully-refurbished and ideally located on the
 
 ## Understand the code
 
+[!INCLUDE [understand code note](../understand-code-note.md)]
+
 Now that you've run the code, let's break down the key steps:
 
 1. [Create the clients](#create-the-clients)
@@ -151,7 +160,7 @@ print(f' {result.name} created')
 
 Azure AI Search searches over content stored in the service. In this step, you load JSON documents that conform to the hotel index you created.
 
-In Azure AI Search, documents are data structures that are both inputs to indexing and outputs from queries. The notebook defines a documents payload as a list of dictionaries containing hotel data:
+In Azure AI Search, documents are data structures that are both inputs to indexing and outputs from queries. The notebook defines a documents payload as a list of dictionaries containing hotel data.
 
 ```python
 # Create a documents payload

Summary

{
    "modification_type": "minor update",
    "modification_title": "全テキスト検索に関するPythonクイックスタートの更新"
}

Explanation

この変更は、全テキスト検索に関するPythonのクイックスタートドキュメントに対する更新です。主に手順の明確化と、Pythonのバージョン要件の指定が強化されています。

まず、Pythonの要件が「最新バージョン」から「Python 3.8またはそれ以降」に変更され、ユーザーに推奨バージョンが明示されました。これにより、適切な環境での実行が促進されます。

手順の部分では、リポジトリのクローン作成やディレクトリ移動のコードがbash形式で統一され、より一貫性のある記述になっています。特にディレクトリの変更とVisual Studio Codeでの作業方法が整理され、ユーザーが手順を追いやすくしています。

ノートブックのカーネル設定に関する指示が追加され、特に仮想環境の作成手順が明確になっています。これにより、ユーザーは環境の準備をスムーズに進めることができます。

また、その後の手順では、必要なパッケージのインストール手順と、Azureアカウントへのサインインに関する情報が引き続き含まれており、実行方法が徹底されています。

全体として、これらの更新によりPythonクイックスタートのドキュメントがより使いやすくなり、特に初めてこの技術を扱うユーザーにとって理解しやすい構成に改善されています。この改訂は、実際の利用環境に即した形で情報を提供するための重要なステップです。

articles/search/includes/quickstarts/full-text-rest.md

Diff
@@ -38,21 +38,24 @@ Full-text search uses Apache Lucene for indexing and queries and the BM25 rankin
 
 1. Use Git to clone the sample repository.
 
-   ```console
-   git clone https://github.com/Azure-Samples/azure-search-rest-samples
-   ```
+    ```bash
+    git clone https://github.com/Azure-Samples/azure-search-rest-samples
+    ```
 
-1. Open the `azure-search-rest-samples/Quickstart-keyword-search` folder in Visual Studio Code.
+1. Navigate to the quickstart folder and open it in Visual Studio Code.
 
-1. Open the `az-search-quickstart.rest` file.
+    ```bash
+    cd azure-search-rest-samples/Quickstart-keyword-search
+    code .
+    ```
 
-1. Replace the placeholder value for `@baseUrl` with the URL you obtained in [Get endpoint](#get-endpoint).
+1. In `az-search-quickstart.rest`, replace the placeholder value for `@baseUrl` with the URL you obtained in [Get endpoint](#get-endpoint).
 
 1. For keyless authentication with Microsoft Entra ID, sign in to your Azure account. If you have multiple subscriptions, select the one that contains your Azure AI Search service.
 
-    ```azurecli
-    az login
-    ```
+   ```azurecli
+   az login
+   ```
 
 1. For keyless authentication with Microsoft Entra ID, generate an access token.
 
@@ -66,7 +69,7 @@ Full-text search uses Apache Lucene for indexing and queries and the BM25 rankin
 
 1. Under `### List existing indexes by name`, select **Send Request** to verify your connection.
 
-   A response should appear in an adjacent pane. If you have existing indexes, they're listed. Otherwise, the list is empty. If the HTTP code is `200 OK`, you're ready to proceed.
+    A response should appear in an adjacent pane. If you have existing indexes, they're listed. Otherwise, the list is empty. If the HTTP code is `200 OK`, you're ready to proceed.
 
 1. Send the remaining requests sequentially to create an index, upload documents, and query the index.
 
@@ -94,6 +97,8 @@ Each request returns different JSON based on the operation.  The key output is f
 
 ## Understand the code
 
+[!INCLUDE [understand code note](../understand-code-note.md)]
+
 Now that you've run the code, let's break down the key steps:
 
 1. [Create a search index](#create-a-search-index)

Summary

{
    "modification_type": "minor update",
    "modification_title": "全テキスト検索に関するRESTクイックスタートの更新"
}

Explanation

この変更は、全テキスト検索に関するRESTのクイックスタートドキュメントの更新を示しています。主に手順のクリアランスと一貫したフォーマットの適用が行われています。

まず、リポジトリのクローン作成に際して、コマンドの書式がconsoleからbashに統一され、より適切な形式での記述が促進されています。加えて、クイックスタートフォルダへの移動やVisual Studio Codeのオープン手順が簡潔に整理されており、ユーザーがこれらの手順をフォローしやすくなっています。

新たに加えられた指示として、az-search-quickstart.restファイルの編集手順が明確にされ、具体的にプレースホルダーの置き換えが示されています。これにより、ユーザーは何を編集すべきかを一目で理解できるようになっています。

また、Microsoft Entra IDを使った認証手順の明確さも向上し、アクセス トークンの生成が強調されています。これにより、ユーザーはログイン後の次のステップをよりスムーズに実行できます。

全体として、この変更によりRESTクイックスタートが格段に使いやすくなり、特に初心者にとって明確なガイドラインを提供しています。改訂により、手順の合理化と理解のしやすさが向上しており、ユーザーがAzure AI Searchの機能を効果的に活用できるようになっています。

articles/search/includes/quickstarts/full-text-typescript.md

Diff
@@ -20,7 +20,9 @@ Full-text search uses Apache Lucene for indexing and queries and the BM25 rankin
 
 - An [Azure AI Search service](../../search-create-service-portal.md). You can use a free service for this quickstart.
 
-- The latest LTS version of [Node.js](https://nodejs.org/en/download/).
+- [Node.js 20 LTS](https://nodejs.org/en/download/) or later to run the compiled code.
+
+- [TypeScript](https://www.typescriptlang.org/download/) to compile TypeScript to JavaScript.
 
 - [Visual Studio Code](https://code.visualstudio.com/download).
 
@@ -40,32 +42,45 @@ Full-text search uses Apache Lucene for indexing and queries and the BM25 rankin
 
 1. Use Git to clone the sample repository.
 
-   ```console
-   git clone https://github.com/Azure-Samples/azure-search-javascript-samples
-   ```
+    ```bash
+    git clone https://github.com/Azure-Samples/azure-search-javascript-samples
+    ```
+
+1. Navigate to the quickstart folder and open it in Visual Studio Code.
+
+    ```bash
+    cd azure-search-javascript-samples/quickstart-keyword-search
+    code .
+    ```
 
-1. Open the `azure-search-javascript-samples/quickstart-keyword-search` folder in Visual Studio Code.
+1. In `sample.env`, replace the placeholder value for `SEARCH_API_ENDPOINT` with the URL you obtained in [Get endpoint](#get-endpoint).
 
-1. Rename the `sample.env` file to `.env`, and then open the file.
+1. Rename `sample.env` to `.env`.
 
-1. Replace the placeholder value for `SEARCH_API_ENDPOINT` with the URL you obtained in [Get endpoint](#get-endpoint).
+    ```bash
+    mv sample.env .env
+    ```
 
-1. Use a terminal in Visual Studio Code to install the dependencies and initialize the project for TypeScript.
+1. Install the dependencies.
 
-    ```console
+    ```bash
     npm install
     npm install typescript @types/node --save-dev
     npm pkg set type=module
     ```
 
+    When the installation completes, you should see a `node_modules` folder in the project directory.
+
 1. For keyless authentication with Microsoft Entra ID, sign in to your Azure account. If you have multiple subscriptions, select the one that contains your Azure AI Search service.
 
-    ```azurecli
-    az login
-    ```
+   ```azurecli
+   az login
+   ```
 
 ## Run the code
 
+The sample code uses JavaScript by default. To run the code with TypeScript:
+
 1. Create a file named `tsconfig.json`, and then paste the following code into it.
 
     ```json
@@ -349,13 +364,13 @@ Full-text search uses Apache Lucene for indexing and queries and the BM25 rankin
 
 1. Transpile from TypeScript to JavaScript.
 
-    ```console
+    ```bash
     npx tsc
     ```
 
 1. Run the application.
 
-    ```console
+    ```bash
     node index.js
     ```
 
@@ -397,6 +412,8 @@ HotelId: 3; HotelName: Gastronomic Landscape Hotel
 
 ## Understand the code
 
+[!INCLUDE [understand code note](../understand-code-note.md)]
+
 Now that you've run the code, let's break down the key steps:
 
 1. [Create a search client](#create-a-search-client)
@@ -480,7 +497,7 @@ let index: SearchIndex = await searchIndexClient.createIndex(indexDefinition);
 
 In Azure AI Search, documents are data structures that are both inputs to indexing and outputs from queries. You can push such data to the index or use an [indexer](/azure/search/search-indexer-overview). In this quickstart, you programmatically push the documents to the index.
 
-Document inputs might be rows in a database, blobs in Azure Blob Storage, or JSON documents on disk, as in this quickstart. The hotel data is imported at the top of the file:
+Document inputs might be rows in a database, blobs in Azure Blob Storage, or JSON documents on disk, as in this quickstart. The hotel data is imported at the top of the file.
 
 ```typescript
 import hotelData from './hotels.json' with { type: "json" };
@@ -504,7 +521,7 @@ let indexDocumentsResult = await searchClient.mergeOrUploadDocuments(hotelData['
 
 With an index created and documents uploaded, you're ready to send queries to the index. This section sends five different queries to the search index to demonstrate different pieces of query functionality available to you.
 
-The queries are written in a `sendQueries()` function that is called in the main function:
+The queries are written in a `sendQueries()` function that is called in the main function.
 
 ```typescript
 await sendQueries(searchClient);

Summary

{
    "modification_type": "minor update",
    "modification_title": "全テキスト検索に関するTypeScriptクイックスタートの更新"
}

Explanation

この変更は、全テキスト検索に関するTypeScriptのクイックスタートドキュメントに対する更新です。主な更新は、必要な開発環境の要件、手順の明確化、及び情報の整理が行われています。

まず、Node.jsのバージョン要件が「最新のLTSバージョン」から「Node.js 20 LTSまたはそれ以降」と明確に指定され、ユーザーは適切な環境を整えやすくなりました。また、TypeScriptのインストール指示が追加され、TypeScriptをJavaScriptにコンパイルする必要が強調されています。

手順としては、リポジトリのクローン作成時に使用するコマンドの書式がconsoleからbashに統一され、さらにクイックスタートフォルダに移動するプロセスが新たに追加されました。これにより、手順がシンプルで理解しやすくなっています。

sample.envファイルの名前を.envに変更するステップがより詳しくなり、プレースホルダーの置き換えも具体的なコマンドで示されています。ユーザーはこれを実行することで、必要な環境変数を簡単に設定できるようになりました。

さらに、TypeScriptからJavaScriptへのトランスパイル手順と実行方法に関する詳細な指示が追加され、ユーザーがサンプルコードを迅速に実行できるようになっています。これにより、TypeScriptの利用が促進され、コード実行の流れがよりスムーズになっています。

最後に、「コードの理解」セクションに追加情報が含まれており、全体的にクイックスタートのドキュメントがより使いやすくなり、特に初心者にとっての利便性が向上しました。この改訂は、ユーザーがAzure AI Searchをより効果的に活用できるための重要な改良です。

articles/search/includes/quickstarts/search-get-started-vector-dotnet.md

Diff
@@ -4,368 +4,463 @@ author: rotabor
 ms.author: haileytapia
 ms.service: azure-ai-search
 ms.topic: include
-ms.date: 01/14/2026
+ms.date: 02/05/2026
 ms.custom: dev-focus
 ai-usage: ai-assisted
 ---
 
-In this quickstart, you use a .NET app to create, load, and query a [vector index](../../vector-store.md). The code performs these operations by using the [Azure AI Search client library for .NET](/dotnet/api/overview/azure/search), which provides an abstraction over the REST APIs to access index operations.
+In this quickstart, you use the [Azure AI Search client library for .NET](/dotnet/api/overview/azure/search) to create, load, and query a [vector index](../../vector-store.md). The .NET client library provides an abstraction over the REST APIs for index operations.
 
 In Azure AI Search, a vector index has an index schema that defines vector and nonvector fields, a vector search configuration for algorithms that create the embedding space, and settings on vector field definitions that are evaluated at query time. [Indexes - Create or Update](/rest/api/searchservice/indexes/create-or-update) (REST API) creates the vector index.
 
-> [!NOTE]
-> This quickstart omits the vectorization step and provides inline embeddings. If you want to add [built-in data chunking and vectorization](../../vector-search-integrated-vectorization.md) over your own content, try the [**Import data (new)** wizard](../../search-get-started-portal-import-vectors.md) for an end-to-end walkthrough.
+> [!TIP]
+> + Want to get started right away? Download the [source code](https://github.com/Azure-Samples/azure-search-dotnet-samples/tree/main/quickstart-vector-search) on GitHub.
+> + This quickstart omits the vectorization step and provides inline embeddings. For [integrated vectorization](../../vector-search-integrated-vectorization.md) over your own content, try the [**Import data (new)** wizard](../../search-get-started-portal-import-vectors.md).
 
 ## Prerequisites
 
-+ An Azure account with an active subscription. [Create an account for free](https://azure.microsoft.com/pricing/purchase-options/azure-account?cid=msft_learn).
+- An Azure account with an active subscription. [Create an account for free](https://azure.microsoft.com/pricing/purchase-options/azure-account?cid=msft_learn).
 
-+ An [Azure AI Search service](../../search-create-service-portal.md).
+- An [Azure AI Search service](../../search-create-service-portal.md). You can use the Free tier for most of this quickstart, but we recommend Basic or higher for larger data files.
 
-    + You can use the Free tier for most of this quickstart, but we recommend Basic or higher for larger data files.
+- [Semantic ranker enabled on your search service](../../semantic-how-to-enable-disable.md) for the optional semantic hybrid query.
 
-    + For [keyless authentication](../../search-get-started-rbac.md) with Microsoft Entra ID, assign the **Search Index Data Contributor role** to your user account.
-    
-    + To run the semantic hybrid query, you must [enable semantic ranker](../../semantic-how-to-enable-disable.md).
+- [.NET 8](https://dotnet.microsoft.com/download) or later.
 
-+ [Visual Studio Code](https://code.visualstudio.com/download) or [Visual Studio](https://visualstudio.com) to run the code.
+- [Visual Studio Code](https://code.visualstudio.com/download).
 
-+ [Git](https://git-scm.com/downloads) to clone the sample repo.
+- [Git](https://git-scm.com/downloads) to clone the sample repository.
 
-## Get service information
+- The [Azure CLI](/cli/azure/install-azure-cli) for keyless authentication with Microsoft Entra ID.
 
-Requests to the search endpoint must be authenticated and authorized. While it's possible to use API keys for this task, we recommend [using a keyless connection via Microsoft Entra ID](../../search-get-started-rbac.md).
+## Configure access
 
-This quickstart uses `DefaultAzureCredential`, which simplifies authentication in both development and production scenarios. However, for production scenarios, you might have more advanced requirements that require a different approach. To understand all of your options, see [Authenticate .NET apps to Azure services by using the Azure SDK for .NET](/dotnet/azure/sdk/authentication/).
+[!INCLUDE [resource authentication](../resource-authentication.md)]
 
-## Clone the code and setup environment
+## Get endpoint
 
-1. Clone the repo containing the code for this quickstart.
+[!INCLUDE [resource endpoint](../resource-endpoint.md)]
+
+## Set up the environment
+
+1. Use Git to clone the sample repository.
 
    ```bash
    git clone https://github.com/Azure-Samples/azure-search-dotnet-samples
    ```
 
-1. Open the `quickstart-vector-search` folder in Visual Studio Code or double-click the `VectorSearchQuickstart.sln` file to open the solution in Visual Studio.
+1. Navigate to the quickstart folder and open it in Visual Studio Code.
 
-1. Open `appsettings.json` in both `VectorSearchCreatePopulateIndex` and `VectorSearchExamples` folders. 
-
-1. Set `Endpoint` to your search service URL, which should be similar to `https://mydemo.search.windows.net`.
+   ```bash
+   cd azure-search-dotnet-samples/quickstart-vector-search
+   code .
+   ```
 
-1. Set `IndexName` to a unique name for your index. You can also use the default `hotels-vector-quickstart` name.
+1. In `VectorSearchCreatePopulateIndex/appsettings.json`, replace the placeholder value for `Endpoint` with the URL you obtained in [Get endpoint](#get-endpoint).
 
-## Create a vector index and upload documents
+1. Repeat the previous step for `VectorSearchExamples/appsettings.json`.
 
-To run search queries against your Azure AI Search service, you must first create a search index and upload documents to the index.
+1. For keyless authentication with Microsoft Entra ID, sign in to your Azure account. If you have multiple subscriptions, select the one that contains your Azure AI Search service.
 
-To create and populate the index:
+   ```azurecli
+   az login
+   ```
 
-1. Open a terminal in the `VectorSearchCreatePopulateIndex` folder.
+## Run the code
 
-1. Use the `dotnet run` command to run the project.
+1. Run the first project to create and populate the index.
 
-    ```dotnetcli
+    ```bash
+    cd VectorSearchCreatePopulateIndex
     dotnet run
     ```
 
-    The following code executes to create an index:
-    
-    :::code language="csharp" source="~/azure-search-dotnet-samples/quickstart-vector-search/vectorsearchcreatepopulateindex/program.cs" id="CreateSearchindex":::
-    
-    The following code uploads JSON-formatted documents in the `hotel-samples.json` file to your search service.
-    
-    :::code language="csharp" source="~/azure-search-dotnet-samples/quickstart-vector-search/vectorsearchcreatepopulateindex/program.cs" id="UploadDocs":::
-    
-    After you run the project, the following output is printed.
-    
-    ```output
-    Key: 1, Succeeded: True
-    Key: 2, Succeeded: True
-    Key: 3, Succeeded: True
-    Key: 4, Succeeded: True
-    Key: 48, Succeeded: True
-    Key: 49, Succeeded: True
-    Key: 13, Succeeded: True
+1. In `VectorSearchExamples/Program.cs`, uncomment the query methods you want to run.
+
+1. Run the second project to execute those queries against the index.
+
+    ```bash
+    cd ..\VectorSearchExamples
+    dotnet run
     ```
-    
-    Key takeaways:
 
-    + Your code interacts with a specific search index hosted in your Azure AI Search service through the SearchClient, which is the main object provided by the azure-search-documents package. The SearchClient provides access to index operations, such as:
+### Output
 
-        + Data ingestion: `UploadDocuments()`, `MergeDocuments()`, `DeleteDocuments()`
+The output of the first project includes confirmation of index creation and successful document uploads.
 
-        + Search operations: `Search()`, `Autocomplete()`, `Suggest()`
-        
-        + Index management operations: `CreateOrUpdateIndex()`
-    
-    + Vector fields contain floating point values. The dimensions attribute has a minimum of 2 and a maximum of 4096 floating point values each. This quickstart sets the dimensions attribute to 1,536 because that's the size of embeddings generated by the `text-embedding-ada-002` model.
+```output
+Creating or updating index 'hotels-vector-quickstart'...
+Index 'hotels-vector-quickstart' updated.
 
-## Run queries
+Key: 1, Succeeded: True
+Key: 2, Succeeded: True
+Key: 3, Succeeded: True
+Key: 4, Succeeded: True
+Key: 48, Succeeded: True
+Key: 49, Succeeded: True
+Key: 13, Succeeded: True
+```
 
-To issue the vector queries in this section, open `Program.cs` in the `VectorSearchExamples` folder, and then open a terminal in the `VectorSearchExamples` folder.
+The output of the second project shows the search results for each enabled query method. The following example shows single vector search results.
 
-Queries in this section:
+```output
+Single Vector Search Results:
+Score: 0.6605852, HotelId: 48, HotelName: Nordick's Valley Motel
+Score: 0.6333684, HotelId: 13, HotelName: Luxury Lion Resort
+Score: 0.605672, HotelId: 4, HotelName: Sublime Palace Hotel
+Score: 0.6026341, HotelId: 49, HotelName: Swirling Currents Hotel
+Score: 0.57902366, HotelId: 2, HotelName: Old Century Hotel
+```
 
-+ [Single vector search](#single-vector-search)
-+ [Single vector search with filter](#single-vector-search-with-filter)
-+ [Hybrid search](#hybrid-search)
-+ [Semantic hybrid search with filter](#semantic-hybrid-search-with-a-filter)
+## Understand the code
 
-### Single vector search
+[!INCLUDE [understand code note](../understand-code-note.md)]
 
-The first query demonstrates a basic scenario where you want to find document descriptions that closely match the search string.
+Now that you've run the code, let's break down the key steps:
 
-To create a single vector search:
+1. [Create a vector index](#create-a-vector-index)
+1. [Upload documents to the index](#upload-documents-to-the-index)
+1. [Query the index](#query-the-index)
 
-1. In the `Program.cs` file of the `VectorSearchExamples` folder, uncomment the `SearchExamples.SearchSingleVector(searchClient, vectorizedResult);` method call.
+### Create a vector index
 
-    This method executes the following search function in the `SearchExamples.cs` class.
+Before you add content to Azure AI Search, you must create an index to define how the content is stored and structured.
 
-    :::code language="csharp" source="~/azure-search-dotnet-samples/quickstart-vector-search/vectorsearchexamples/SearchExamples.cs" id="SearchSingleVector":::
+The index schema is organized around hotel content. Sample data consists of vector and nonvector descriptions of fictitious hotels. The following code in `VectorSearchCreatePopulateIndex/Program.cs` creates the index schema, including the vector field `DescriptionVector`.
 
-1. Run `dotnet run` to execute the query, which returns the following results.
-    
-    ```output
-    Single Vector Search Results:
-    Score: 0.6605852, HotelId: 48, HotelName: Nordick's Valley Motel
-    Score: 0.6333684, HotelId: 13, HotelName: Luxury Lion Resort
-    Score: 0.605672, HotelId: 4, HotelName: Sublime Palace Hotel
-    Score: 0.6026341, HotelId: 49, HotelName: Swirling Currents Hotel
-    Score: 0.57902366, HotelId: 2, HotelName: Old Century Hotel
-    ```
+```csharp
+static async Task CreateSearchIndex(string indexName, SearchIndexClient indexClient)
+{
+    var addressField = new ComplexField("Address");
+    addressField.Fields.Add(new SearchableField("StreetAddress") { AnalyzerName = LexicalAnalyzerName.EnMicrosoft });
+    addressField.Fields.Add(new SearchableField("City") { AnalyzerName = LexicalAnalyzerName.EnMicrosoft, IsFacetable = true, IsFilterable = true });
+    addressField.Fields.Add(new SearchableField("StateProvince") { AnalyzerName = LexicalAnalyzerName.EnMicrosoft, IsFacetable = true, IsFilterable = true });
+    addressField.Fields.Add(new SearchableField("PostalCode") { AnalyzerName = LexicalAnalyzerName.EnMicrosoft, IsFacetable = true, IsFilterable = true });
+    addressField.Fields.Add(new SearchableField("Country") { AnalyzerName = LexicalAnalyzerName.EnMicrosoft, IsFacetable = true, IsFilterable = true });
+
+    var allFields = new List<SearchField>()
+    {
+        new SimpleField("HotelId", SearchFieldDataType.String) { IsKey = true, IsFacetable = true, IsFilterable = true },
+        new SearchableField("HotelName") { AnalyzerName = LexicalAnalyzerName.EnMicrosoft },
+        new SearchableField("Description") { AnalyzerName = LexicalAnalyzerName.EnMicrosoft },
+        new VectorSearchField("DescriptionVector", 1536, "my-vector-profile"),
+        new SearchableField("Category") { AnalyzerName = LexicalAnalyzerName.EnMicrosoft, IsFacetable = true, IsFilterable = true },
+        new SearchableField("Tags", collection: true) { AnalyzerName = LexicalAnalyzerName.EnMicrosoft, IsFacetable = true, IsFilterable = true },
+        new SimpleField("ParkingIncluded", SearchFieldDataType.Boolean) { IsFacetable = true, IsFilterable = true },
+        new SimpleField("LastRenovationDate", SearchFieldDataType.DateTimeOffset) { IsSortable = true },
+        new SimpleField("Rating", SearchFieldDataType.Double) { IsFacetable = true, IsFilterable = true, IsSortable = true },
+        addressField,
+        new SimpleField("Location", SearchFieldDataType.GeographyPoint) { IsFilterable = true, IsSortable = true },
+    };
+
+    // Create the suggester configuration
+    var suggester = new SearchSuggester("sg", new[] { "Address/City", "Address/Country" });
+
+    // Create the semantic search
+    var semanticSearch = new SemanticSearch()
+    {
+        Configurations =
+        {
+            new SemanticConfiguration(
+                name: "semantic-config",
+                prioritizedFields: new SemanticPrioritizedFields
+                {
+                    TitleField = new SemanticField("HotelName"),
+                    KeywordsFields = { new SemanticField("Category") },
+                    ContentFields = { new SemanticField("Description") }
+                })
+        }
+    };
 
-### Single vector search with filter
+    // Add vector search configuration
+    var vectorSearch = new VectorSearch();
+    vectorSearch.Algorithms.Add(new HnswAlgorithmConfiguration(name: "my-hnsw-vector-config-1"));
+    vectorSearch.Profiles.Add(new VectorSearchProfile(name: "my-vector-profile", algorithmConfigurationName: "my-hnsw-vector-config-1"));
 
-In Azure AI Search, [filters](../../vector-search-filters.md) apply to nonvector fields in an index. This example filters on the `Tags` field to filter out any hotels that don't provide free Wi-Fi.
+    var definition = new SearchIndex(indexName)
+    {
+        Fields = allFields,
+        Suggesters = { suggester },
+        VectorSearch = vectorSearch,
+        SemanticSearch = semanticSearch
+    };
 
-To create a single vector search with a filter:
+    // Create or update the index
+    Console.WriteLine($"Creating or updating index '{indexName}'...");
+    var result = await indexClient.CreateOrUpdateIndexAsync(definition);
+    Console.WriteLine($"Index '{result.Value.Name}' updated.");
+    Console.WriteLine();
+}
+```
 
-1. In the `Program.cs` file of the `VectorSearchExamples` folder, uncomment the `SearchExamples.SearchSingleVectorWithFilter(searchClient, vectorizedResult);` method call.
+Key takeaways:
 
-    This method executes the following search function in the `SearchExamples.cs` class.
++ You define an index by creating a list of fields.
 
-    :::code language="csharp" source="~/azure-search-dotnet-samples/quickstart-vector-search/vectorsearchexamples/SearchExamples.cs" id="SearchSingleVectorWithFilter":::
++ This particular index supports multiple search capabilities:
 
-1.  Run `dotnet run` to execute the query, which returns only hotels that provide free Wi-Fi. 
-    
-       ```output
-        Single Vector Search With Filter Results:
-        Score: 0.6605852, HotelId: 48, HotelName: Nordick's Valley Motel, Tags: continental breakfastair conditioningfree wifi
-        Score: 0.57902366, HotelId: 2, HotelName: Old Century Hotel, Tags: poolfree wifiair conditioningconcierge
-       ```
+    + [Full-text search](../../search-lucene-query-architecture.md) (`SearchableField`)
 
-1. For a geo filter, uncomment `SearchExamples.SingleSearchWithGeoFilter(searchClient, vectorizedResult);` in `Program.cs`.
+    + [Vector search](../../vector-search-overview.md) (`VectorSearchField`)
 
-    This method executes the following search function in the `SearchExamples.cs` class.
+    + [Semantic ranking](../../semantic-search-overview.md) (`SemanticSearch`)
 
-    :::code language="csharp" source="~/azure-search-dotnet-samples/quickstart-vector-search/vectorsearchexamples/SearchExamples.cs" id="SingleSearchWithGeoFilter":::
+    + [Faceted search](../../search-faceted-navigation.md) (fields marked with `IsFacetable`)
 
-1.  Run `dotnet run` to execute the query, which returns only hotels within 300 kilometers.
-   
-    ```output
-    Vector query with a geo filter:
-    -HotelId: 48
-    HotelName: Nordick's Valley Motel
-    Score: 0.6605852246284485
-    City/State: Washington D.C./null
-    Description: Only 90 miles (about 2 hours) from the nation's capital and nearby most everything the historic valley has to offer. Hiking? Wine Tasting? Exploring the caverns? It's all nearby and we have specially priced packages to help make our B&B your home base for fun while visiting the valley.
-    
-    -HotelId: 49
-    HotelName: Swirling Currents Hotel
-    Score: 0.602634072303772
-    City/State: Arlington/VA
-    Description: Spacious rooms, glamorous suites and residences, rooftop pool, walking access to shopping, dining, entertainment and the city center. Each room comes equipped with a microwave, a coffee maker and a minifridge. In-room entertainment includes complimentary Wi-Fi and flat-screen TVs.
-    ```
+    + [Geo-spatial search](../../search-query-odata-geo-spatial-functions.md) (`Location` field with `SearchFieldDataType.GeographyPoint`)
 
-### Hybrid search
-
-[Hybrid search](../../hybrid-search-overview.md) combines keyword and vector queries in one request. This example runs the following full-text and vector query strings concurrently:
-
-+ Search string: `historic hotel walk to restaurants and shopping`
-+ Vector query string: `quintessential lodging near running trails, eateries, retail` (vectorized into a mathematical representation)
-
-To create a hybrid search:
-
-1. In the `Program.cs` file, uncomment the `SearchExamples.SearchHybridVectorAndText(searchClient, vectorizedResult);` method call.
-
-    This method executes the following search function in the `SearchExamples.cs` class.
-
-    :::code language="csharp" source="~/azure-search-dotnet-samples/quickstart-vector-search/vectorsearchexamples/SearchExamples.cs" id="SearchHybridVectorAndText":::
-
-1.  Run `dotnet run` to execute the query, which returns the following results.
-
-       ```output
-       Hybrid search results:
-       Score: 0.03279569745063782
-       HotelId: 4
-       HotelName: Sublime Palace Hotel
-       Description: Sublime Palace Hotel is located in the heart of the historic center of Sublime in an extremely vibrant and lively area within short walking distance to the sites and landmarks of the city and is surrounded by the extraordinary beauty of churches, buildings, shops and monuments. Sublime Cliff is part of a lovingly restored 19th   century resort, updated for every modern convenience.
-       Category: Boutique
-       Tags: conciergeviewair conditioning
-       
-       Score: 0.032786883413791656
-       HotelId: 13
-       HotelName: Luxury Lion Resort
-       Description: Unmatched Luxury. Visit our downtown hotel to indulge in luxury accommodations. Moments from the stadium and transportation hubs, we feature the best in convenience and comfort.
-       Category: Luxury
-       Tags: barconciergerestaurant
-       
-       Score: 0.03205128386616707
-       HotelId: 48
-       HotelName: Nordick's Valley Motel
-       Description: Only 90 miles (about 2 hours) from the nation's capital and nearby most everything the historic valley has to offer. Hiking? Wine Tasting? Exploring the caverns? It's all nearby and we have specially priced packages to help make our B&B your home base for fun while visiting the valley.
-       Category: Boutique
-       Tags: continental breakfastair conditioningfree wifi
-       
-       Score: 0.0317460335791111
-       HotelId: 49
-       HotelName: Swirling Currents Hotel
-       Description: Spacious rooms, glamorous suites and residences, rooftop pool, walking access to shopping, dining, entertainment and the city center. Each room comes equipped with a microwave, a coffee maker and a minifridge. In-room entertainment includes complimentary W-Fi and flat-screen TVs.
-       Category: Suite
-       Tags: air conditioninglaundry service24-hour front desk service
-       
-       Score: 0.03077651560306549
-       HotelId: 2
-       HotelName: Old Century Hotel
-       Description: The hotel is situated in a nineteenth century plaza, which has been expanded and renovated to the highest architectural standards to create a modern, functional and first-class hotel in which art and unique historical elements coexist with the most modern comforts. The hotel also regularly hosts events like wine tastings, beer   dinners, and live music.
-       Category: Boutique
-       Tags: poolfree wifiair conditioningconcierge
-       ```
-    
-    Because Reciprocal Rank Fusion (RRF) merges results, it helps to review the inputs. The following results are from the full-text query only. The top two results are Sublime Palace Hotel and Luxury Lion Resort. The Sublime Palace Hotel has a stronger BM25 relevance score.
-
-    ```json
-    {
-        "@search.score": 2.2626662,
-        "HotelName": "Sublime Palace Hotel",
-        "Description": "Sublime Palace Hotel is located in the heart of the historic center of Sublime in an extremely vibrant and lively area within short walking distance to the sites and landmarks of the city and is surrounded by the extraordinary beauty of churches, buildings, shops and monuments. Sublime Palace is part of a lovingly restored 1800 palace."
-    },
-    {
-        "@search.score": 0.86421645,
-        "HotelName": "Luxury Lion Resort",
-        "Description": "Unmatched Luxury.  Visit our downtown hotel to indulge in luxury accommodations. Moments from the stadium, we feature the best in comfort"
-    },
-    ```
+    + [Filtering](../../search-filters.md) and sorting (fields marked with `IsFilterable` and `IsSortable`)
+
++ The second parameter in `VectorSearchField` specifies `vectorSearchDimensions`, which must match the output size of your embedding model. This quickstart uses 1,536 dimensions to match the `text-embedding-ada-002` model.
 
-    In the vector-only query, which uses HNSW for finding matches, the Sublime Palace Hotel drops to the fourth position. Luxury Lion, which was second in the full-text search and third in the vector search, doesn't experience the same range of fluctuation, so it appears as a top match in a homogenized result set.
++ The `VectorSearch` configuration defines the Approximate Nearest Neighbor (ANN) algorithm. Supported algorithms include Hierarchical Navigable Small World (HNSW) and exhaustive K-Nearest Neighbor (KNN). For more information, see [Relevance in vector search](../../vector-search-ranking.md).
 
-    ```json
-    "value": [
+### Upload documents to the index
+
+Newly created indexes are empty. To populate an index and make it searchable, you must upload JSON documents that conform to the index schema.
+
+In Azure AI Search, documents serve as both inputs for indexing and outputs for queries. For simplicity, this quickstart provides sample hotel documents with precomputed vectors. In production scenarios, content is often pulled from connected data sources and transformed into JSON using [indexers](../../search-indexer-overview.md).
+
+The following code uploads documents from `HotelData.json` to your search service.
+
+```csharp
+static async Task UploadDocs(SearchClient searchClient)
+{
+    var jsonPath = Path.Combine(Directory.GetCurrentDirectory(), "HotelData.json");
+
+    // Read and parse hotel data
+    var json = await File.ReadAllTextAsync(jsonPath);
+    List<Hotel> hotels = new List<Hotel>();
+    try
+    {
+        using var doc = JsonDocument.Parse(json);
+        if (doc.RootElement.ValueKind != JsonValueKind.Array)
         {
-            "@search.score": 0.857736,
-            "HotelId": "48",
-            "HotelName": "Nordick's Valley Motel",
-            "Description": "Only 90 miles (about 2 hours) from the nation's capital and nearby most everything the historic valley has to offer.  Hiking? Wine Tasting? Exploring the caverns?  It's all nearby and we have specially priced packages to help make our B&B your home base for fun while visiting the valley.",
-            "Category": "Boutique"
-        },
+            Console.WriteLine("HotelData.json root is not a JSON array.");
+        }
+        // Deserialize all hotel objects
+        hotels = doc.RootElement.EnumerateArray()
+            .Select(e => JsonSerializer.Deserialize<Hotel>(e.GetRawText()))
+            .Where(h => h != null)
+            .ToList();
+    }
+    catch (JsonException ex)
+    {
+        Console.WriteLine($"Failed to parse HotelData.json: {ex.Message}");
+    }
+
+    try
+    {
+        // Upload hotel documents to Azure Search
+        var result = await searchClient.UploadDocumentsAsync(hotels);
+        foreach (var r in result.Value.Results)
         {
-            "@search.score": 0.8399129,
-            "HotelId": "49",
-            "HotelName": "Swirling Currents Hotel",
-            "Description": "Spacious rooms, glamorous suites and residences, rooftop pool, walking access to shopping, dining, entertainment and the city center.",
-            "Category": "Luxury"
-        },
+            Console.WriteLine($"Key: {r.Key}, Succeeded: {r.Succeeded}");
+        }
+    }
+    catch (Exception ex)
+    {
+        Console.WriteLine("Failed to upload documents: " + ex);
+    }
+}
+```
+
+Your code interacts with a specific search index hosted in your Azure AI Search service through the `SearchClient`, which is the main object provided by the [`Azure.Search.Documents`](/dotnet/api/overview/azure/search.documents-readme) package. The `SearchClient` provides access to index operations, such as:
+
++ Data ingestion: `UploadDocuments()`, `MergeDocuments()`, `DeleteDocuments()`
+
++ Search operations: `Search()`, `Autocomplete()`, `Suggest()`
+
+### Query the index
+
+The queries in `VectorSearchExamples` demonstrate different search patterns. The example vector queries are based on two strings:
+
++ Full-text search string: `"historic hotel walk to restaurants and shopping"`
+
++ Vector query string: `"quintessential lodging near running trails, eateries, retail"` (vectorized into a mathematical representation)
+
+The vector query string is semantically similar to the full-text search string, but it includes terms that don't exist in the index. A keyword-only search for the vector query string returns zero results. However, vector search finds relevant matches based on meaning rather than exact keywords.
+
+The following examples start with a basic vector query and progressively add filters, keyword search, and semantic reranking.
+
+#### Single vector search
+
+The `SearchSingleVector` method demonstrates a basic scenario where you want to find document descriptions that closely match the vector query string. `VectorizedQuery` configures the vector search:
+
++ `KNearestNeighborsCount` limits how many results are returned based on vector similarity.
++ `Fields` specifies the vector field to search against.
+
+```csharp
+public static async Task SearchSingleVector(SearchClient searchClient, ReadOnlyMemory<float> precalculatedVector)
+{
+    SearchResults<Hotel> response = await searchClient.SearchAsync<Hotel>(
+        new SearchOptions
         {
-            "@search.score": 0.8383954,
-            "HotelId": "13",
-            "HotelName": "Luxury Lion Resort",
-            "Description": "Unmatched Luxury.  Visit our downtown hotel to indulge in luxury accommodations. Moments from the stadium, we feature the best in comfort",
-            "Category": "Resort and Spa"
-        },
+            VectorSearch = new()
+            {
+                Queries = { new VectorizedQuery(precalculatedVector) { KNearestNeighborsCount = 5, Fields = { "DescriptionVector" } } }
+            },
+            Select = { "HotelId", "HotelName", "Description", "Category", "Tags" },
+        });
+
+    Console.WriteLine($"Single Vector Search Results:");
+    await foreach (SearchResult<Hotel> result in response.GetResultsAsync())
+    {
+        Hotel doc = result.Document;
+        Console.WriteLine($"Score: {result.Score}, HotelId: {doc.HotelId}, HotelName: {doc.HotelName}");
+    }
+    Console.WriteLine();
+}
+```
+
+#### Single vector search with a filter
+
+In Azure AI Search, [filters](../../vector-search-filters.md) apply to nonvector fields in an index. The `SearchSingleVectorWithFilter` method filters on the `Tags` field to filter out any hotels that don't provide free Wi-Fi.
+
+```csharp
+public static async Task SearchSingleVectorWithFilter(SearchClient searchClient, ReadOnlyMemory<float> precalculatedVector)
+{
+    SearchResults<Hotel> responseWithFilter = await searchClient.SearchAsync<Hotel>(
+        new SearchOptions
         {
-            "@search.score": 0.8254346,
-            "HotelId": "4",
-            "HotelName": "Sublime Palace Hotel",
-            "Description": "Sublime Palace Hotel is located in the heart of the historic center of Sublime in an extremely vibrant and lively area within short walking distance to the sites and landmarks of the city and is surrounded by the extraordinary beauty of churches, buildings, shops and monuments. Sublime Palace is part of a lovingly restored 1800 palace.",
-            "Category": "Boutique"
-        },
+            VectorSearch = new()
+            {
+                Queries = { new VectorizedQuery(precalculatedVector) { KNearestNeighborsCount = 5, Fields = { "DescriptionVector" } } }
+            },
+            Filter = "Tags/any(tag: tag eq 'free wifi')",
+            Select = { "HotelId", "HotelName", "Description", "Category", "Tags" }
+        });
+
+    Console.WriteLine($"Single Vector Search With Filter Results:");
+    await foreach (SearchResult<Hotel> result in responseWithFilter.GetResultsAsync())
+    {
+        Hotel doc = result.Document;
+        Console.WriteLine($"Score: {result.Score}, HotelId: {doc.HotelId}, HotelName: {doc.HotelName}, Tags: {string.Join(String.Empty, doc.Tags)}");
+    }
+    Console.WriteLine();
+}
+```
+
+#### Single vector search with a geo filter
+
+You can specify a [geo-spatial filter](../../search-query-odata-geo-spatial-functions.md) to limit results to a specific geographic area. The `SingleSearchWithGeoFilter` method specifies a geographic point (Washington D.C., using longitude and latitude coordinates) and returns hotels within 300 kilometers. By default, filters run after the vector search.
+
+```csharp
+public static async Task SingleSearchWithGeoFilter(SearchClient searchClient, ReadOnlyMemory<float> precalculatedVector)
+{
+    SearchResults<Hotel> responseWithGeoFilter = await searchClient.SearchAsync<Hotel>(
+        new SearchOptions
         {
-            "@search.score": 0.82380056,
-            "HotelId": "1",
-            "HotelName": "Stay-Kay City Hotel",
-            "Description": "The hotel is ideally located on the main commercial artery of the city in the heart of New York.",
-            "Category": "Boutique"
-        },
+            VectorSearch = new()
+            {
+                Queries = { new VectorizedQuery(precalculatedVector) { KNearestNeighborsCount = 5, Fields = { "DescriptionVector" } } }
+            },
+            Filter = "geo.distance(Location, geography'POINT(-77.03241 38.90166)') le 300",
+            Select = { "HotelId", "HotelName", "Description", "Address", "Category", "Tags" },
+            Facets = { "Address/StateProvince" },
+        });
+
+    Console.WriteLine($"Vector query with a geo filter:");
+    await foreach (SearchResult<Hotel> result in responseWithGeoFilter.GetResultsAsync())
+    {
+        Hotel doc = result.Document;
+        Console.WriteLine($"HotelId: {doc.HotelId}");
+        Console.WriteLine($"HotelName: {doc.HotelName}");
+        Console.WriteLine($"Score: {result.Score}");
+        Console.WriteLine($"City/State: {doc.Address.City}/{doc.Address.StateProvince}");
+        Console.WriteLine($"Description: {doc.Description}");
+        Console.WriteLine();
+    }
+    Console.WriteLine();
+}
+```
+
+#### Hybrid search
+
+[Hybrid search](../../hybrid-search-overview.md) combines full-text and vector queries in a single request. The `SearchHybridVectorAndText` method runs both query types concurrently, and then uses Reciprocal Rank Fusion (RRF) to merge the results into a unified ranking. RRF uses the inverse of result rankings from each result set to produce a merged ranking. Notice that hybrid search scores are uniformly smaller than single-query scores.
+
+```csharp
+public static async Task<SearchResults<Hotel>> SearchHybridVectorAndText(SearchClient searchClient, ReadOnlyMemory<float> precalculatedVector)
+{
+    SearchResults<Hotel> responseWithFilter = await searchClient.SearchAsync<Hotel>(
+        "historic hotel walk to restaurants and shopping",
+        new SearchOptions
         {
-            "@search.score": 0.81514084,
-            "HotelId": "2",
-            "HotelName": "Old Century Hotel",
-            "Description": "The hotel is situated in a  nineteenth century plaza, which has been expanded and renovated to the highest architectural standards to create a modern, functional and first-class hotel in which art and unique historical elements coexist with the most modern comforts.",
-            "Category": "Boutique"
-        },
+            VectorSearch = new()
+            {
+                Queries = { new VectorizedQuery(precalculatedVector) { KNearestNeighborsCount = 5, Fields = { "DescriptionVector" } } }
+            },
+            Select = { "HotelId", "HotelName", "Description", "Category", "Tags" },
+            Size = 5,
+        });
+
+    Console.WriteLine($"Hybrid search results:");
+    await foreach (SearchResult<Hotel> result in responseWithFilter.GetResultsAsync())
+    {
+        Hotel doc = result.Document;
+        Console.WriteLine($"Score: {result.Score}");
+        Console.WriteLine($"HotelId: {doc.HotelId}");
+        Console.WriteLine($"HotelName: {doc.HotelName}");
+        Console.WriteLine($"Description: {doc.Description}");
+        Console.WriteLine($"Category: {doc.Category}");
+        Console.WriteLine($"Tags: {string.Join(String.Empty, doc.Tags)}");
+        Console.WriteLine();
+    }
+    Console.WriteLine();
+    return responseWithFilter;
+}
+```
+
+#### Semantic hybrid search
+
+The `SearchHybridVectorAndSemantic` method demonstrates [semantic ranking](../../semantic-search-overview.md), which reranks results based on language understanding.
+
+```csharp
+public static async Task SearchHybridVectorAndSemantic(SearchClient searchClient, ReadOnlyMemory<float> precalculatedVector)
+{
+    SearchResults<Hotel> responseWithFilter = await searchClient.SearchAsync<Hotel>(
+        "historic hotel walk to restaurants and shopping",
+        new SearchOptions
         {
-            "@search.score": 0.8133763,
-            "HotelId": "3",
-            "HotelName": "Gastronomic Landscape Hotel",
-            "Description": "The Hotel stands out for its gastronomic excellence under the management of William Dough, who advises on and oversees all of the Hotel’s restaurant services.",
-            "Category": "Resort and Spa"
-        }
-    ]
-    ```
+            IncludeTotalCount = true,
+            VectorSearch = new()
+            {
+                Queries = { new VectorizedQuery(precalculatedVector) { KNearestNeighborsCount = 5, Fields = { "DescriptionVector" } } }
+            },
+            Select = { "HotelId", "HotelName", "Description", "Category", "Tags" },
+            SemanticSearch = new SemanticSearchOptions
+            {
+                SemanticConfigurationName = "semantic-config"
+            },
+            QueryType = SearchQueryType.Semantic,
+            Size = 5
+        });
+
+    Console.WriteLine($"Hybrid search results:");
+    await foreach (SearchResult<Hotel> result in responseWithFilter.GetResultsAsync())
+    {
+        Hotel doc = result.Document;
+        Console.WriteLine($"Score: {result.Score}");
+        Console.WriteLine($"HotelId: {doc.HotelId}");
+        Console.WriteLine($"HotelName: {doc.HotelName}");
+        Console.WriteLine($"Description: {doc.Description}");
+        Console.WriteLine($"Category: {doc.Category}");
+        Console.WriteLine();
+    }
+    Console.WriteLine();
+}
+```
 
-### Semantic hybrid search with a filter
-
-Add [semantic ranking](../../semantic-search-overview.md) to rerank results based on language understanding.
-
-To create a semantic hybrid search with a filter:
-
-1. In the `Program.cs` file, uncomment `SearchExamples.SearchHybridVectorAndSemantic(searchClient, vectorizedResult);` method call.
-
-    This method executes the following search function in the `SearchExamples.cs` class.
-
-    :::code language="csharp" source="~/azure-search-dotnet-samples/quickstart-vector-search/vectorsearchexamples/SearchExamples.cs" id="SearchHybridVectorAndSemantic":::
-
-1. Run `dotnet run` to execute the query, which returns the following hotels. The hotels are filtered by location, faceted by `StateProvince`, and semantically reranked to promote results that are closest to the search string query (`historic hotel walk to restaurants and shopping`).
-
-    The Swirling Currents Hotel now moves to the top spot. Without semantic ranking, Nordick's Valley Motel is number one. With semantic ranking, the machine comprehension models recognize that `historic` applies to "hotel within walking distance to dining (restaurants) and shopping."
-    
-    ```output
-    Total semantic hybrid results: 7
-    - Score: 0.0317460335791111
-      Re-ranker Score: 2.6550590991973877
-      HotelId: 49
-      HotelName: Swirling Currents Hotel
-      Description: Spacious rooms, glamorous suites and residences, rooftop pool, walking access to shopping, dining, entertainment and the city center. Each room comes equipped with a microwave, a coffee maker and a minifridge. In-room entertainment includes complimentary Wi-Fi and flat-screen TVs.
-      Category: Suite
-    - Score: 0.03279569745063782
-      Re-ranker Score: 2.599761724472046
-      HotelId: 4
-      HotelName: Sublime Palace Hotel
-      Description: Sublime Palace Hotel is located in the heart of the historic center of Sublime in an extremely vibrant and lively area within short walking distance to the sites and landmarks of the city and is surrounded by the extraordinary beauty of churches, buildings, shops and monuments. Sublime Cliff is part of a lovingly restored 19th century resort, updated for every modern convenience.
-      Category: Boutique
-    - Score: 0.03125
-      Re-ranker Score: 2.3480887413024902
-      HotelId: 2
-      HotelName: Old Century Hotel
-      Description: The hotel is situated in a nineteenth century plaza, which has been expanded and renovated to the highest architectural standards to create a modern, functional and first-class hotel in which art and unique historical elements coexist with the most modern comforts. The hotel also regularly hosts events like wine tastings, beer dinners, and live music.
-      Category: Boutique
-    - Score: 0.016393441706895828
-      Re-ranker Score: 2.2718777656555176
-      HotelId: 1
-      HotelName: Stay-Kay City Hotel
-      Description: This classic hotel is fully-refurbished and ideally located on the main commercial artery of the city in the heart of New York. A few minutes away is Times Square and the historic center of the city, as well as other places of interest that make New York one of America's most attractive and cosmopolitan cities.
-      Category: Boutique
-    - Score: 0.01515151560306549
-      Re-ranker Score: 2.0582215785980225
-      HotelId: 3
-      HotelName: Gastronomic Landscape Hotel
-      Description: The Gastronomic Hotel stands out for its culinary excellence under the management of William Dough, who advises on and oversees all of the Hotel's restaurant services.
-      Category: Suite
-    ```
-    
-    Key takeaways:
+Compare these results with the hybrid search results from the previous query. Without semantic reranking, Sublime Palace Hotel ranks first because Reciprocal Rank Fusion (RRF) combines the text and vector scores to produce a merged result. After semantic reranking, Swirling Currents Hotel moves to the top spot.
 
-    + In a hybrid search, you can integrate vector search with full-text search over keywords. Filters, spell check, and semantic ranking apply to textual content only, and not vectors. In this final query, there's no semantic `answer` because the system didn't produce one that was sufficiently strong.
-    
-    + Actual results include more detail, including semantic captions and highlights. Results were modified for readability. To get the full structure of the response, run the request in the REST client.
+The semantic ranker uses machine comprehension models to evaluate how well each result matches the intent of the query. Swirling Currents Hotel's description mentions `"walking access to shopping, dining, entertainment and the city center"`, which aligns closely with the search query's `"walk to restaurants and shopping"`. This semantic match for nearby dining and shopping elevates it above Sublime Palace Hotel, which doesn't emphasize walkable amenities in its description.
 
-## Clean up resources
+Key takeaways:
 
-When you're working in your own subscription, it's a good idea at the end of a project to identify whether you still need the resources you created. Resources left running can cost you money. You can delete resources individually or delete the resource group to delete the entire set of resources.
++ In a hybrid search, you can integrate vector search with full-text search over keywords. Filters and semantic ranking apply to textual content only, not vectors.
 
-You can find and manage resources in the Azure portal by using the **All resources** or **Resource groups** link in the leftmost pane.
++ Actual results include more detail, including semantic captions and highlights. This quickstart modifies results for readability. To get the full structure of the response, use REST to run the request.
 
-## Next steps
+## Clean up resources
 
-+ Review the repository of code samples for vector search capabilities in Azure AI Search for [.NET](https://github.com/Azure/azure-search-vector-samples/tree/main/demo-dotnet).
-+ Review the other .NET and Azure AI Search code samples in the [azure-search-dotnet-samples repo](https://github.com/Azure-Samples/azure-search-dotnet-samples).
+[!INCLUDE [resource-cleanup-paid](../resource-cleanup-paid.md)]

Summary

{
    "modification_type": "minor update",
    "modification_title": "ベクトル検索に関する.NETクイックスタートの拡充"
}

Explanation

この変更は、ベクトル検索に関連する.NETクイックスタートドキュメントの大規模な更新を示しています。変更点は、主にドキュメントの内容を充実させることを目的としており、コード例や手順が詳細に整理され、ユーザーにとって理解しやすくなっています。

まず、クイックスタートの冒頭において、Azure AI Searchクライアントライブラリの役割が強調されており、ユーザーがその目的や機能を理解しやすいよう説明が追加されています。また、クイックスタートの手順に関する新しいヒントが導入されており、GitHubからのソースコードのダウンロードに関する情報が追加されています。

必要な前提条件に関しても、Azure AI Searchサービスの推奨プランについての具体的なガイダンスが追加されています。特に、Freeプランの使用を推奨する代わりに、より大規模なデータファイルに対してはBasicプラン以上を推奨する内容が含まれています。

手順のセクションでは、環境設定が分かりやすく整理され、ファイルの設定やGitリポジトリのクローン作成に関するコマンドが見やすく示されています。また、コードのコンパイルや実行方法に関しても手順が具体化され、利用者がスムーズに操作できるよう工夫されています。

クエリの実行に関する具体的なコード例が豊富に追加され、さらにフィルタリングや地理的フィルタを使用した検索方法が詳しく解説されています。複数の検索手法(単一ベクトル検索、フィルタ付きベクトル検索、およびハイブリッド検索)について、それぞれの実行方法と期待される結果が示されています。これにより、ユーザーはより高機能な検索を自ら構築するための理解を深めることができます。

全体として、この改訂はユーザーのニーズに応じて、実用的で具体的な情報を提供しており、特にベクトル検索機能に関する理解を促進するものとなっています。ドキュメントの構造が改善されることで、Azure AI Searchの利便性がさらに引き出されています。

articles/search/includes/quickstarts/search-get-started-vector-java.md

Diff
@@ -4,534 +4,437 @@ ms.author: karler
 ms.service: azure-ai-search
 ms.custom: devx-track-java, dev-focus
 ms.topic: include
-ms.date: 01/14/2026
+ms.date: 02/05/2026
 ai-usage: ai-assisted
 ---
 
-In this quickstart, you use Java to create, load, and query a [vector index](../../vector-store.md). The code performs these operations by using the [Azure AI Search client library for Java](/java/api/overview/azure/search-documents-readme), which provides an abstraction over the REST APIs to access index operations.
+In this quickstart, you use the [Azure AI Search client library for Java](/java/api/overview/azure/search-documents-readme) to create, load, and query a [vector index](../../vector-store.md). The Java client library provides an abstraction over the REST APIs for index operations.
 
 In Azure AI Search, a vector index has an index schema that defines vector and nonvector fields, a vector search configuration for algorithms that create the embedding space, and settings on vector field definitions that are evaluated at query time. [Indexes - Create or Update](/rest/api/searchservice/indexes/create-or-update) (REST API) creates the vector index.
 
-> [!NOTE]
-> This quickstart omits the vectorization step and provides inline embeddings. If you want to add [built-in data chunking and vectorization](../../vector-search-integrated-vectorization.md) over your own content, try the [**Import data (new)** wizard](../../search-get-started-portal-import-vectors.md) for an end-to-end walkthrough.
+> [!TIP]
+> + Want to get started right away? Download the [source code](https://github.com/Azure-Samples/azure-search-java-samples/tree/main/quickstart-vector-search) on GitHub.
+> + This quickstart omits the vectorization step and provides inline embeddings. For [integrated vectorization](../../vector-search-integrated-vectorization.md) over your own content, try the [**Import data (new)** wizard](../../search-get-started-portal-import-vectors.md).
 
 ## Prerequisites
 
-+ An Azure account with an active subscription. [Create an account for free](https://azure.microsoft.com/pricing/purchase-options/azure-account?cid=msft_learn).
+- An Azure account with an active subscription. [Create an account for free](https://azure.microsoft.com/pricing/purchase-options/azure-account?cid=msft_learn).
 
-+ An [Azure AI Search service](../../search-create-service-portal.md).
+- An [Azure AI Search service](../../search-create-service-portal.md). You can use the Free tier for most of this quickstart, but we recommend Basic or higher for larger data files.
 
-    + You can use the Free tier for most of this quickstart, but we recommend Basic or higher for larger data files.
+- [Semantic ranker enabled on your search service](../../semantic-how-to-enable-disable.md) for the optional semantic hybrid query.
 
-    + For [keyless authentication](../../search-get-started-rbac.md) with Microsoft Entra ID, assign the **Search Index Data Contributor role** to your user account.
-    
-    + To run the semantic hybrid query, you must [enable semantic ranker](../../semantic-how-to-enable-disable.md).
+- [Java 21 (LTS)](/java/openjdk/install) and [Maven](https://maven.apache.org/download.cgi).
 
-+ [Java 21 (LTS)](/java/openjdk/install).
+- [Visual Studio Code](https://code.visualstudio.com/download).
 
-+ [Maven](https://maven.apache.org/download.cgi).
+- [Git](https://git-scm.com/downloads) to clone the sample repository.
 
-## Get service information
+- The [Azure CLI](/cli/azure/install-azure-cli) for keyless authentication with Microsoft Entra ID.
 
-In the remaining sections, you set up API calls to Azure OpenAI and Azure AI Search. Get the service endpoints so that you can provide them as variables in your code.
+## Configure access
 
-To get the service endpoint:
+[!INCLUDE [resource authentication](../resource-authentication.md)]
 
-1. Sign in to the [Azure portal](https://portal.azure.com).
+## Get endpoint
 
-1. [Find your search service](https://portal.azure.com/#blade/HubsExtension/BrowseResourceBlade/resourceType/Microsoft.Search%2FsearchServices).
+[!INCLUDE [resource endpoint](../resource-endpoint.md)]
 
-1. On the **Overview** home page, copy the URL. An example endpoint might look like `https://example.search.windows.net`.
+## Set up the environment
 
-## Set up the Java project
-
-1. Create a new Maven project directory.
+1. Use Git to clone the sample repository.
 
    ```bash
-   mkdir vector-quickstart && cd vector-quickstart
+   git clone https://github.com/Azure-Samples/azure-search-java-samples
    ```
 
-1. Create a `pom.xml` file with required dependencies.
-
-   :::code language="xml" source="~/azure-search-java-samples/quickstart-vector-search/pom.xml" :::
-
-1. Compile the project to resolve the dependencies.
-
-    ```bash
-    mvn compile
-    ```
-
-1. Create the source directory structure.
+1. Navigate to the quickstart folder and open it in Visual Studio Code.
 
    ```bash
-   mkdir -p src/main/java/com/example/search
-   mkdir -p src/main/resources
+   cd azure-search-java-samples/quickstart-vector-search
+   code .
    ```
 
-1. Create an `application.properties` file in the `src/main/resources` directory and provide your search service endpoint.
-
-    ```properties
-    azure.search.endpoint=<YOUR AZURE AI SEARCH ENDPOINT>
-    azure.search.index-name=hotels-vector-quickstart
-    ```
-
-## Sign in to Azure
-
-You're using Microsoft Entra ID and role assignments for the connection. Make sure you're logged in to the same tenant and subscription as Azure AI Search and Azure OpenAI. You can use the Azure CLI on the command line to show current properties, change properties, and to sign in. For more information, see [Connect without keys](../../search-get-started-rbac.md).
+1. In `src/main/resources/application.properties`, replace the placeholder value for `azure.search.endpoint` with the URL you obtained in [Get endpoint](#get-endpoint).
 
-Run each of the following commands in sequence.
+1. Install the dependencies.
 
-```azurecli
-az account show
-
-az account set --subscription <PUT YOUR SUBSCRIPTION ID HERE>
-
-az login --tenant <PUT YOUR TENANT ID HERE>
-```
-
-You should now be logged in to Azure from your local device.
-
-## Create a vector index
-
-In this section, you create a vector index in Azure AI Search with [SearchIndexClient](/java/api/com.azure.search.documents.indexes.searchindexclient).[createOrUpdateIndex](/java/api/com.azure.search.documents.indexes.searchindexclient#com-azure-search-documents-indexes-searchindexclient-createorupdateindex(com-azure-search-documents-indexes-models-searchindex)). The index schema defines the fields, including the vector field `DescriptionVector`.
-
-To create a vector index:
+   ```bash
+   mvn clean dependency:copy-dependencies
+   ```
 
-1. Create a `CreateIndex.java` file in the `src/main/java/com/example/search` directory.
+   When the build completes, you should see a `target/dependency` folder in the project directory.
 
-1. Copy the following code into the file.
+1. For keyless authentication with Microsoft Entra ID, sign in to your Azure account. If you have multiple subscriptions, select the one that contains your Azure AI Search service.
 
-   :::code language="java" source="~/azure-search-java-samples/quickstart-vector-search/src/main/java/com/example/search/CreateIndex.java" :::
+   ```azurecli
+   az login
+   ```
 
-   The code file creates the index and defines the index schema, including the `DescriptionVector` vector field.
+## Run the code
 
-1. Run the file.
+1. Create a vector index.
 
     ```bash
-    mvn compile exec:java -Dexec.mainClass="com.example.search.CreateIndex"
+    mvn compile exec:java "-Dexec.mainClass=com.example.search.CreateIndex"
     ```
 
-    The output of this code shows that the index is created successfully.
+1. Load documents that contain precomputed embeddings.
 
-    ```output
-    Using Azure Search endpoint: https://<search-service-name>.search.windows.net
-    Using Azure Search index: <vector-index-name>
-    Creating index...
-    hotels-vector-quickstart created
+    ```bash
+    mvn compile exec:java "-Dexec.mainClass=com.example.search.UploadDocuments"
     ```
 
-   Key takeaways:
-
-   + You define an index by creating a list of fields.
-
-   + This particular index supports multiple search capabilities, such as:
-
-      + Full-text keyword search (`setSearchable`)
-
-      + Vector search (enables hybrid search by collocating vector and nonvector fields) fields (`DescriptionVector` with `setVectorSearchProfileName`)
-      
-      + Semantic search 
-
-      + Faceted search (`SearchSuggester`)
-
-      + Geo-spatial search (`Location` field with `SearchFieldDataType.GEOGRAPHY_POINT`)
-
-      + Filtering, sorting (many fields marked filterable and sortable)
-
-## Upload documents to the index
-
-Creating and loading the index are separate steps. You created the index schema in the previous step. You now need to load documents into the index with [SearchClient](/java/api/com.azure.search.documents.searchclient).[uploadDocuments](/java/api/com.azure.search.documents.searchclient#com-azure-search-documents-searchclient-uploaddocuments(java-lang-iterable(-))). The documents contain the vectorized version of the article's description, which enables similarity search based on meaning rather than exact keywords.
-
-In Azure AI Search, the index stores all searchable content, while the search engine executes queries against that index.
-
-To upload documents to the index:
-
-1. Create an `UploadDocuments.java` file in the `src/main/java/com/example/search` directory.
-
-1. Copy the following code into the file.
-
-   :::code language="java" source="~/azure-search-java-samples/quickstart-vector-search/src/main/java/com/example/search/UploadDocuments.java" :::
-
-    This code loads a collection of documents. Each document includes the vectorized version of the article's `Description`. This vector enables similarity search, where matching is based on meaning rather than exact keywords.
-
-    Because this quickstart article searches the index immediately, the `waitUntilIndexed` method waits until the index is ready for search operations. This is important because the index needs to be fully populated with documents before you can perform searches.
-
-1. Build and run the file.
+1. Run a vector search query.
 
     ```bash
-    mvn compile exec:java -Dexec.mainClass="com.example.search.UploadDocuments"
+    mvn compile exec:java "-Dexec.mainClass=com.example.search.SearchSingle"
     ```
 
-    The output of this code shows that the documents are indexed and ready for search.
-
-    ```output
-    Using Azure Search endpoint: https://<search-service-name>.search.windows.net
-    Using Azure Search index: <vector-index-name>
-    Uploading documents...
-    Key: 1, Succeeded: true, ErrorMessage: none
-    Key: 2, Succeeded: true, ErrorMessage: none
-    Key: 3, Succeeded: true, ErrorMessage: none
-    Key: 4, Succeeded: true, ErrorMessage: none
-    Key: 48, Succeeded: true, ErrorMessage: none
-    Key: 49, Succeeded: true, ErrorMessage: none
-    Key: 13, Succeeded: true, ErrorMessage: none
-    Waiting for indexing... Current count: 0
-    All documents indexed successfully.
-    ```
-
-    Key takeaways:
-
-    * Your code interacts with a specific search index hosted in your Azure AI Search service through the `SearchClient`. The `SearchClient` provides access to operations such as:
+1. (Optional) Run additional query variations.
 
-        * Data ingestion: `uploadDocuments`, `mergeDocuments`, `deleteDocuments`, and so on.
-
-        * Search operations: `search`, `autocomplete`, `suggest`
-
-    * Vector fields contain floating point values. The dimensions attribute has a minimum of 2 and a maximum of 4096 floating point values each. This quickstart sets the dimensions attribute to 1,536 because that's the size of embeddings generated by the `text-embedding-ada-002` model.
+    ```bash
+    mvn compile exec:java "-Dexec.mainClass=com.example.search.SearchSingleWithFilter"
+    mvn compile exec:java "-Dexec.mainClass=com.example.search.SearchSingleWithFilterGeo"
+    mvn compile exec:java "-Dexec.mainClass=com.example.search.SearchHybrid"
+    mvn compile exec:java "-Dexec.mainClass=com.example.search.SearchSemanticHybrid"
+    ```
 
-## Create the query as a vector
+### Output
 
-The example vector queries are based on two strings:
+The output of `CreateIndex.java` shows the index name and confirmation.
 
-+ Search string: `historic hotel walk to restaurants and shopping`
-+ Vector query string: `quintessential lodging near running trails, eateries, retail` (vectorized into a mathematical representation)
+```output
+Using Azure Search endpoint: https://<search-service-name>.search.windows.net
+Using Azure Search index: hotels-vector-quickstart
+Creating index...
+hotels-vector-quickstart created
+```
 
-The vector query string is semantically similar to the search string, but it includes terms that don't exist in the search index. If you do a keyword search for `quintessential lodging near running trails, eateries, retail`, results are zero. We use this example to show how you can get relevant results even if there are no matching terms.
+The output of `UploadDocuments.java` shows the success status for each indexed document.
+
+```output
+Uploading documents...
+Key: 1, Succeeded: true, ErrorMessage: none
+Key: 2, Succeeded: true, ErrorMessage: none
+Key: 3, Succeeded: true, ErrorMessage: none
+Key: 4, Succeeded: true, ErrorMessage: none
+Key: 48, Succeeded: true, ErrorMessage: none
+Key: 49, Succeeded: true, ErrorMessage: none
+Key: 13, Succeeded: true, ErrorMessage: none
+Waiting for indexing... Current count: 0
+All documents indexed successfully.
+```
 
-Create a `QueryVector.java` file in the `src/main/java/com/example/search` directory and add the code to create the query vector.
+The output of `SearchSingle.java` shows vector search results ranked by similarity score.
 
-:::code language="java" source="~/azure-search-java-samples/quickstart-vector-search/src/main/java/com/example/search/QueryVector.java" :::
+```output
+Single Vector search found 5
+- HotelId: 48, HotelName: Nordick's Valley Motel, Tags: ["continental breakfast","air conditioning","free wifi"], Score 0.6605852
+- HotelId: 13, HotelName: Luxury Lion Resort, Tags: ["bar","concierge","restaurant"], Score 0.6333684
+- HotelId: 4, HotelName: Sublime Palace Hotel, Tags: ["concierge","view","air conditioning"], Score 0.605672
+- HotelId: 49, HotelName: Swirling Currents Hotel, Tags: ["air conditioning","laundry service","24-hour front desk service"], Score 0.6026341
+- HotelId: 2, HotelName: Old Century Hotel, Tags: ["pool","free wifi","air conditioning","concierge"], Score 0.57902366
+```
 
-This code is used in the following sections to perform vector searches. The query vector is created using an embedding model from Azure OpenAI.
+## Understand the code
+
+[!INCLUDE [understand code note](../understand-code-note.md)]
+
+Now that you've run the code, let's break down the key steps:
+
+1. [Create a vector index](#create-a-vector-index)
+1. [Upload documents to the index](#upload-documents-to-the-index)
+1. [Query the index](#query-the-index)
+
+### Create a vector index
+
+Before you add content to Azure AI Search, you must create an index to define how the content is stored and structured.
+
+The index schema is organized around hotel content. Sample data consists of vector and nonvector descriptions of fictitious hotels. The following code in `CreateIndex.java` creates the index schema, including the vector field `DescriptionVector`.
+
+```java
+// Define fields
+List<SearchField> fields = Arrays.asList(
+    new SearchField("HotelId", SearchFieldDataType.STRING)
+        .setKey(true)
+        .setFilterable(true),
+    new SearchField("HotelName", SearchFieldDataType.STRING)
+        .setSortable(true)
+        .setSearchable(true),
+    new SearchField("Description", SearchFieldDataType.STRING)
+        .setSearchable(true),
+    new SearchField("DescriptionVector",
+        SearchFieldDataType.collection(SearchFieldDataType.SINGLE))
+        .setSearchable(true)
+        .setVectorSearchDimensions(1536)
+        .setVectorSearchProfileName("my-vector-profile"),
+    new SearchField("Category", SearchFieldDataType.STRING)
+        .setSortable(true)
+        .setFilterable(true)
+        .setFacetable(true)
+        .setSearchable(true),
+    new SearchField("Tags", SearchFieldDataType.collection(
+        SearchFieldDataType.STRING))
+        .setSearchable(true)
+        .setFilterable(true)
+        .setFacetable(true),
+    // Additional fields: ParkingIncluded, LastRenovationDate, Rating, Address, Location
+);
+
+var searchIndex = new SearchIndex(indexName, fields);
+
+// Define vector search configuration
+var hnswParams = new HnswParameters()
+    .setM(16)
+    .setEfConstruction(200)
+    .setEfSearch(128);
+var hnsw = new HnswAlgorithmConfiguration("hnsw-vector-config");
+hnsw.setParameters(hnswParams);
+
+var vectorProfile = new VectorSearchProfile(
+    "my-vector-profile",
+    "hnsw-vector-config");
+var vectorSearch = new VectorSearch()
+    .setAlgorithms(Arrays.asList(hnsw))
+    .setProfiles(Arrays.asList(vectorProfile));
+searchIndex.setVectorSearch(vectorSearch);
+
+// Define semantic configuration
+var prioritizedFields = new SemanticPrioritizedFields()
+    .setTitleField(new SemanticField("HotelName"))
+    .setContentFields(Arrays.asList(new SemanticField("Description")))
+    .setKeywordsFields(Arrays.asList(new SemanticField("Category")));
+var semanticConfig = new SemanticConfiguration(
+    "semantic-config",
+    prioritizedFields);
+var semanticSearch = new SemanticSearch()
+    .setConfigurations(Arrays.asList(semanticConfig));
+searchIndex.setSemanticSearch(semanticSearch);
+
+// Define suggesters
+var suggester = new SearchSuggester("sg", Arrays.asList("HotelName"));
+searchIndex.setSuggesters(Arrays.asList(suggester));
+
+// Create the search index
+SearchIndex result = searchIndexClient.createOrUpdateIndex(searchIndex);
+```
 
-## Create a single vector search
+Key takeaways:
 
-The first example demonstrates a basic scenario where you want to find document descriptions that closely match the search string using the [SearchClient](/java/api/com.azure.search.documents.searchclient).[search](/java/api/com.azure.search.documents.searchasyncclient#com-azure-search-documents-searchasyncclient-search(java-lang-string)) and the [VectorQuery](/java/api/com.azure.search.documents.models.vectorquery) and [SearchOptions](/java/api/com.azure.search.documents.models.searchoptions).
++ You define an index by creating a list of fields.
 
-To create a single vector search:
++ This particular index supports multiple search capabilities:
 
-1. Create a `SearchSingle.java` file in the `src/main/java/com/example/search` directory.
+    + [Full-text search](../../search-lucene-query-architecture.md) (`setSearchable`)
 
-1. Copy the following code into the file.
+    + [Vector search](../../vector-search-overview.md) (`DescriptionVector` with `setVectorSearchProfileName`)
 
-    :::code language="java" source="~/azure-search-java-samples/quickstart-vector-search/src/main/java/com/example/search/SearchSingle.java" :::
+    + [Semantic ranking](../../semantic-search-overview.md) (`SemanticConfiguration`)
 
-    The `vectorQuery` contains the configuration of the vectorized query including the vectorized text of the query input as retrieved through `QueryVector.getVectorList`. `setFields` determines which vector fields are searched and `setKNearestNeighborsCount` specifies the number of nearest neighbors to return.
+    + [Faceted search](../../search-faceted-navigation.md) (fields marked with `setFacetable`)
 
-    The vector query string is `quintessential lodging near running trails, eateries, retail`, which is vectorized into 1,536 embeddings for this query.
+    + [Geo-spatial search](../../search-query-odata-geo-spatial-functions.md) (`Location` field with `SearchFieldDataType.GEOGRAPHY_POINT`)
 
-1. Build and run the file.
+    + [Filtering](../../search-filters.md) and sorting (fields marked with `setFilterable` and `setSortable`)
 
-    ```bash
-    mvn compile exec:java -Dexec.mainClass="com.example.search.SearchSingle"
-    ```
++ The `setVectorSearchDimensions()` value must match the output size of your embedding model. This quickstart uses 1,536 dimensions to match the `text-embedding-ada-002` model.
 
-    The output of this code shows the relevant docs for the query `quintessential lodging near running trails, eateries, retail`.
-
-    ```output
-    Using Azure Search endpoint: https://<search-service-name>.search.windows.net
-    Using Azure Search index: <vector-index-name>
-    
-    Single Vector search found 5
-    - HotelId: 48, HotelName: Nordick's Valley Motel, Tags: ["continental breakfast","air conditioning","free wifi"], Score 0.6605852
-    - HotelId: 13, HotelName: Luxury Lion Resort, Tags: ["bar","concierge","restaurant"], Score 0.6333684
-    - HotelId: 4, HotelName: Sublime Palace Hotel, Tags: ["concierge","view","air conditioning"], Score 0.605672
-    - HotelId: 49, HotelName: Swirling Currents Hotel, Tags: ["air conditioning","laundry service","24-hour front desk service"], Score 0.6026341
-    - HotelId: 2, HotelName: Old Century Hotel, Tags: ["pool","free wifi","air conditioning","concierge"], Score 0.57902366
-    ```
++ The `VectorSearch` configuration defines the Approximate Nearest Neighbor (ANN) algorithm. Supported algorithms include Hierarchical Navigable Small World (HNSW) and exhaustive K-Nearest Neighbor (KNN). For more information, see [Relevance in vector search](../../vector-search-ranking.md).
 
-    The response for the vector equivalent of `quintessential lodging near running trails, eateries, retail` consists of 5 results with only the fields specified by the select returned.
+### Upload documents to the index
 
-## Create a single vector search with a filter
+Newly created indexes are empty. To populate an index and make it searchable, you must upload JSON documents that conform to the index schema.
 
-You can add filters, but the filters are applied to the nonvector content in your index. In this example, the filter applies to the `Tags` field to filter out any hotels that don't provide free Wi-Fi. This search uses [SearchClient](/java/api/com.azure.search.documents.searchclient).[SearchClient](/java/api/com.azure.search.documents.searchclient) and [SearchOptions](/java/api/com.azure.search.documents.models.searchoptions). 
+In Azure AI Search, documents serve as both inputs for indexing and outputs for queries. For simplicity, this quickstart provides sample hotel documents with precomputed vectors. In production scenarios, content is often pulled from connected data sources and transformed into JSON using [indexers](../../search-indexer-overview.md).
 
-To create a single vector search with a filter:
+The following code in `UploadDocuments.java` uploads documents to your search service.
 
-1. Create a `SearchSingleWithFilter.java` file in the `src/main/java/com/example/search` directory.
+```java
+// Documents contain hotel data with 1536-dimension vectors for DescriptionVector
+static final List<Map<String, Object>> DOCUMENTS = Arrays.asList(
+    new HashMap<>() {{
+        put("@search.action", "mergeOrUpload");
+        put("HotelId", "1");
+        put("HotelName", "Stay-Kay City Hotel");
+        put("Description", "This classic hotel is fully-refurbished...");
+        put("DescriptionVector", Arrays.asList(/* 1536 float values */));
+        put("Category", "Boutique");
+        put("Tags", Arrays.asList("view", "air conditioning", "concierge"));
+        // Additional fields...
+    }}
+    // Additional hotel documents
+);
 
-1. Copy the following code into the file.
+// Upload documents to the index
+IndexDocumentsResult result = searchClient.uploadDocuments(DOCUMENTS);
+for (IndexingResult r : result.getResults()) {
+    System.out.println("Key: %s, Succeeded: %s".formatted(r.getKey(), r.isSucceeded()));
+}
+```
 
-    :::code language="java" source="~/azure-search-java-samples/quickstart-vector-search/src/main/java/com/example/search/SearchSingleWithFilter.java" :::
+Your code interacts with a specific search index hosted in your Azure AI Search service through the `SearchClient`, which is the main object provided by the [`azure-search-documents`](/java/api/overview/azure/search-documents-readme) package. The `SearchClient` provides access to operations such as:
 
-    This code has the same search functionality as the previous search, but it adds a post-processing exclusion filter for hotels with `free wifi`.
++ Data ingestion: `uploadDocuments`, `mergeDocuments`, `deleteDocuments`
 
-1. Build and run the file.
++ Search operations: `search`, `autocomplete`, `suggest`
 
-    ```bash
-    mvn compile exec:java -Dexec.mainClass="com.example.search.SearchSingleWithFilter"
-    ```
+### Query the index
 
-    The output of this code shows the relevant documents for the query with the filter for `free wifi` applied.
+The queries in the search files demonstrate different search patterns. The example vector queries are based on two strings:
 
-    ```output
-    Using Azure Search endpoint: https://<search-service-name>.search.windows.net
-    Using Azure Search index: <vector-index-name>
-    
-    Single Vector search found 2
-    - HotelId: 48, HotelName: Nordick's Valley Motel, Tags: ["continental breakfast","air conditioning","free wifi"], Score 0.6605852
-    - HotelId: 2, HotelName: Old Century Hotel, Tags: ["pool","free wifi","air conditioning","concierge"], Score 0.57902366
-    ```
++ Full-text search string: `"historic hotel walk to restaurants and shopping"`
 
-## Create a search with a geospatial filter
++ Vector query string: `"quintessential lodging near running trails, eateries, retail"` (vectorized into a mathematical representation)
 
-You can specify a geospatial filter to limit results to a specific geographic area. In this example, the filter limits results to hotels within 300 kilometers of Washington D.C. (coordinates: `-77.03241 38.90166`). Geospatial distances are always in kilometers. This search uses [SearchClient](/java/api/com.azure.search.documents.searchclient).[SearchClient](/java/api/com.azure.search.documents.searchclient) and [SearchOptions](/java/api/com.azure.search.documents.models.searchoptions).
+The vector query string is semantically similar to the full-text search string, but it includes terms that don't exist in the index. A keyword-only search for the vector query string returns zero results. However, vector search finds relevant matches based on meaning rather than exact keywords.
 
-To create a single vector search with a geospatial filter:
+The following examples start with a basic vector query and progressively add filters, keyword search, and semantic reranking.
 
-1. Create a `SearchSingleWithFilterGeo.java` file in the `src/main/java/com/example/search` directory.
+#### Single vector search
 
-1. Copy the following code into the file.
+`SearchSingle.java` demonstrates a basic scenario where you want to find document descriptions that closely match the vector query string. `VectorizedQuery` configures the vector search:
 
-    :::code language="java" source="~/azure-search-java-samples/quickstart-vector-search/src/main/java/com/example/search/SearchSingleWithFilterGeo.java" :::
++ `setKNearestNeighborsCount()` limits how many results are returned based on vector similarity.
++ `setFields()` specifies the vector field to search against.
 
-1. Build and run the file.
+```java
+var vectorQuery = new VectorizedQuery(QueryVector.getVectorList())
+    .setKNearestNeighborsCount(5)
+    .setFields("DescriptionVector")
+    .setExhaustive(true);
 
-    ```bash
-    mvn compile exec:java -Dexec.mainClass="com.example.search.SearchSingleWithFilterGeo"
-    ```
+var vectorSearchOptions = new VectorSearchOptions()
+    .setQueries(vectorQuery)
+    .setFilterMode(VectorFilterMode.POST_FILTER);
 
-    The output of this code shows the relevant documents for the query with the geospatial post-processing exclusion filter applied.
+var searchOptions = new SearchOptions()
+    .setTop(7)
+    .setIncludeTotalCount(true)
+    .setSelect("HotelId", "HotelName", "Description", "Category", "Tags")
+    .setVectorSearchOptions(vectorSearchOptions);
 
-    ```output
-    Using Azure Search endpoint: https://<search-service-name>.search.windows.net
-    Using Azure Search index: <vector-index-name>
-    
-    Single Vector search found 2
-    - HotelId: 48, HotelName: Nordick's Valley Motel, Tags: N/A, Score 0.6605852246284485
-    - HotelId: 49, HotelName: Swirling Currents Hotel, Tags: N/A, Score 0.602634072303772
-    ```
+var results = searchClient.search("*", searchOptions, Context.NONE);
 
-## Create a hybrid search
+for (SearchResult result : results) {
+    SearchDocument document = result.getDocument(SearchDocument.class);
+    System.out.println("HotelId: %s, HotelName: %s, Score: %s".formatted(
+        document.get("HotelId"), document.get("HotelName"), result.getScore()));
+}
+```
 
-[Hybrid search](../../hybrid-search-overview.md) combines keyword and vector queries in one request. This example runs the following full-text and vector query strings concurrently:
+#### Single vector search with a filter
 
-+ Search string: `historic hotel walk to restaurants and shopping`
-+ Vector query string: `quintessential lodging near running trails, eateries, retail` (vectorized into a mathematical representation)
+In Azure AI Search, [filters](../../vector-search-filters.md) apply to nonvector fields in an index. `SearchSingleWithFilter.java` filters on the `Tags` field to filter out any hotels that don't provide free Wi-Fi.
 
-This search uses [SearchClient](/java/api/com.azure.search.documents.searchclient).[SearchClient](/java/api/com.azure.search.documents.searchclient) and [SearchOptions](/java/api/com.azure.search.documents.models.searchoptions).
+```java
+var vectorQuery = new VectorizedQuery(QueryVector.getVectorList())
+    .setKNearestNeighborsCount(5)
+    .setFields("DescriptionVector")
+    .setExhaustive(true);
 
-Tp create a hybrid search:
+var vectorSearchOptions = new VectorSearchOptions()
+    .setQueries(vectorQuery)
+    .setFilterMode(VectorFilterMode.POST_FILTER);
 
-1. Create a `SearchHybrid.java` file in the `src/main/java/com/example/search` directory.
+// Add filter for "free wifi" tag
+var searchOptions = new SearchOptions()
+    .setTop(7)
+    .setIncludeTotalCount(true)
+    .setSelect("HotelId", "HotelName", "Description", "Category", "Tags")
+    .setFilter("Tags/any(tag: tag eq 'free wifi')")
+    .setVectorSearchOptions(vectorSearchOptions);
 
-1. Copy the following code into the file.
+var results = searchClient.search("*", searchOptions, Context.NONE);
+```
 
-    :::code language="java" source="~/azure-search-java-samples/quickstart-vector-search/src/main/java/com/example/search/SearchHybrid.java" :::
+#### Single vector search with a geo filter
 
-1. Build and run the file.
+You can specify a [geo-spatial filter](../../search-query-odata-geo-spatial-functions.md) to limit results to a specific geographic area. `SearchSingleWithGeoFilter.java` specifies a geographic point (Washington D.C., using longitude and latitude coordinates) and returns hotels within 300 kilometers. The `setFilterMode` method, called on `VectorSearchOptions`, determines when the filter runs. In this case, `POST_FILTER` runs the filter after the vector search.
 
-    ```bash
-    mvn compile exec:java -Dexec.mainClass="com.example.search.SearchHybrid"
-    ```
+```java
+var searchOptions = new SearchOptions()
+    .setTop(5)
+    .setIncludeTotalCount(true)
+    .setSelect("HotelId", "HotelName", "Category", "Description",
+               "Address/City", "Address/StateProvince")
+    .setFacets("Address/StateProvince")
+    .setFilter("geo.distance(Location, geography'POINT(-77.03241 38.90166)') le 300")
+    .setVectorSearchOptions(vectorSearchOptions);
+```
 
-    The output of this code shows the relevant documents for the hybrid search.
-
-    ```output
-    Using Azure Search endpoint: https://<search-service-name>.search.windows.net
-    Using Azure Search index: <vector-index-name>
-    
-    Hybrid search found 7 then limited to top 5
-    - Score: 0.03279569745063782
-      HotelId: 4
-      HotelName: Sublime Palace Hotel
-      Description: Sublime Palace Hotel is located in the heart of the historic center of Sublime in an extremely vibrant and lively area within short walking distance to the sites and landmarks of the city and is surrounded by the extraordinary beauty of churches, buildings, shops and monuments. Sublime Cliff is part of a lovingly restored 19th century resort, updated for every modern convenience.
-      Category: Boutique
-      Tags: ["concierge","view","air conditioning"]
-    
-    - Score: 0.032522473484277725
-      HotelId: 13
-      HotelName: Luxury Lion Resort
-      Description: Unmatched Luxury. Visit our downtown hotel to indulge in luxury accommodations. Moments from the stadium and transportation hubs, we feature the best in convenience and comfort.
-      Category: Luxury
-      Tags: ["bar","concierge","restaurant"]
-    
-    - Score: 0.03205128386616707
-      HotelId: 48
-      HotelName: Nordick's Valley Motel
-      Description: Only 90 miles (about 2 hours) from the nation's capital and nearby most everything the historic valley has to offer. Hiking? Wine Tasting? Exploring the caverns? It's all nearby and we have specially priced packages to help make our B&B your home base for fun while visiting the valley.
-      Category: Boutique
-      Tags: ["continental breakfast","air conditioning","free wifi"]
-    
-    - Score: 0.0317460335791111
-      HotelId: 49
-      HotelName: Swirling Currents Hotel
-      Description: Spacious rooms, glamorous suites and residences, rooftop pool, walking access to shopping, dining, entertainment and the city center. Each room comes equipped with a microwave, a coffee maker and a minifridge. In-room entertainment includes complimentary W-Fi and flat-screen TVs.
-      Category: Suite
-      Tags: ["air conditioning","laundry service","24-hour front desk service"]
-    
-    - Score: 0.03125
-      HotelId: 2
-      HotelName: Old Century Hotel
-      Description: The hotel is situated in a nineteenth century plaza, which has been expanded and renovated to the highest architectural standards to create a modern, functional and first-class hotel in which art and unique historical elements coexist with the most modern comforts. The hotel also regularly hosts events like wine tastings, beer dinners, and live music.
-      Category: Boutique
-      Tags: ["pool","free wifi","air conditioning","concierge"]
-    ```
+#### Hybrid search
 
-    Because Reciprocal Rank Fusion (RRF) merges results, it helps to review the inputs. The following results are from the full-text query only. The top two results are Sublime Palace Hotel and Luxury Lion Resort. The Sublime Palace Hotel has a stronger BM25 relevance score.
-
-    ```json
-       {
-           "@search.score": 2.2626662,
-           "HotelName": "Sublime Palace Hotel",
-           "Description": "Sublime Palace Hotel is located in the heart of the historic center of Sublime in an extremely vibrant and lively area within short walking distance to the sites and landmarks of the city and is surrounded by the extraordinary beauty of churches, buildings, shops and monuments. Sublime Palace is part of a lovingly restored 1800 palace."
-       },
-       {
-           "@search.score": 0.86421645,
-           "HotelName": "Luxury Lion Resort",
-           "Description": "Unmatched Luxury.  Visit our downtown hotel to indulge in luxury accommodations. Moments from the stadium, we feature the best in comfort"
-       },
-    ```
+[Hybrid search](../../hybrid-search-overview.md) combines full-text and vector queries in a single request. `SearchHybrid.java` runs both query types concurrently, and then uses Reciprocal Rank Fusion (RRF) to merge the results into a unified ranking. RRF uses the inverse of result rankings from each result set to produce a merged ranking. Notice that hybrid search scores are uniformly smaller than single-query scores.
 
-    In the vector-only query, which uses HNSW for finding matches, the Sublime Palace Hotel drops to the fourth position. Luxury Lion, which was second in the full-text search and third in the vector search, doesn't experience the same range of fluctuation, so it appears as a top match in a homogenized result set.
-
-   ```json
-   "value": [
-       {
-           "@search.score": 0.857736,
-           "HotelId": "48",
-           "HotelName": "Nordick's Valley Motel",
-           "Description": "Only 90 miles (about 2 hours) from the nation's capital and nearby most everything the historic valley has to offer.  Hiking? Wine Tasting? Exploring the caverns?  It's all nearby and we have specially priced packages to help make our B&B your home base for fun while visiting the valley.",
-           "Category": "Boutique"
-       },
-       {
-           "@search.score": 0.8399129,
-           "HotelId": "49",
-           "HotelName": "Swirling Currents Hotel",
-           "Description": "Spacious rooms, glamorous suites and residences, rooftop pool, walking access to shopping, dining, entertainment and the city center.",
-           "Category": "Luxury"
-       },
-       {
-           "@search.score": 0.8383954,
-           "HotelId": "13",
-           "HotelName": "Luxury Lion Resort",
-           "Description": "Unmatched Luxury.  Visit our downtown hotel to indulge in luxury accommodations. Moments from the stadium, we feature the best in comfort",
-           "Category": "Resort and Spa"
-       },
-       {
-           "@search.score": 0.8254346,
-           "HotelId": "4",
-           "HotelName": "Sublime Palace Hotel",
-           "Description": "Sublime Palace Hotel is located in the heart of the historic center of Sublime in an extremely vibrant and lively area within short walking distance to the sites and landmarks of the city and is surrounded by the extraordinary beauty of churches, buildings, shops and monuments. Sublime Palace is part of a lovingly restored 1800 palace.",
-           "Category": "Boutique"
-       },
-       {
-           "@search.score": 0.82380056,
-           "HotelId": "1",
-           "HotelName": "Stay-Kay City Hotel",
-           "Description": "The hotel is ideally located on the main commercial artery of the city in the heart of New York.",
-           "Category": "Boutique"
-       },
-       {
-           "@search.score": 0.81514084,
-           "HotelId": "2",
-           "HotelName": "Old Century Hotel",
-           "Description": "The hotel is situated in a  nineteenth century plaza, which has been expanded and renovated to the highest architectural standards to create a modern, functional and first-class hotel in which art and unique historical elements coexist with the most modern comforts.",
-           "Category": "Boutique"
-       },
-       {
-           "@search.score": 0.8133763,
-           "HotelId": "3",
-           "HotelName": "Gastronomic Landscape Hotel",
-           "Description": "The Hotel stands out for its gastronomic excellence under the management of William Dough, who advises on and oversees all of the Hotel's restaurant services.",
-           "Category": "Resort and Spa"
-       }
-   ]
-   ```
+```java
+var vectorQuery = new VectorizedQuery(QueryVector.getVectorList())
+    .setKNearestNeighborsCount(5)
+    .setFields("DescriptionVector")
+    .setExhaustive(true);
 
-## Create a semantic hybrid search
+var vectorSearchOptions = new VectorSearchOptions()
+    .setQueries(vectorQuery)
+    .setFilterMode(VectorFilterMode.POST_FILTER);
 
-Here's the last query in the collection to extend the semantic hybrid search with the additional search text `historic hotel walk to restaurants and shopping`.
+var searchOptions = new SearchOptions()
+    .setTop(5)
+    .setIncludeTotalCount(true)
+    .setSelect("HotelId", "HotelName", "Description", "Category", "Tags")
+    .setVectorSearchOptions(vectorSearchOptions);
 
-This search uses [SearchClient](/java/api/com.azure.search.documents.searchclient).[SearchClient](/java/api/com.azure.search.documents.searchclient) and [SearchOptions](/java/api/com.azure.search.documents.models.searchoptions). 
+// Pass both text query and vector search options
+var results = searchClient.search(
+    "historic hotel walk to restaurants and shopping",
+    searchOptions, Context.NONE);
+```
 
-To create a semantic hybrid search:
+#### Semantic hybrid search
 
-1. Create a `SearchSemanticHybrid.java` file in the `src/main/java/com/example/search` directory.
+`SearchSemanticHybrid.java` demonstrates [semantic ranking](../../semantic-search-overview.md), which reranks results based on language understanding.
 
-1. Copy the following code into the file.
+```java
+var vectorQuery = new VectorizedQuery(QueryVector.getVectorList())
+    .setKNearestNeighborsCount(5)
+    .setFields("DescriptionVector")
+    .setExhaustive(true);
 
-    :::code language="java" source="~/azure-search-java-samples/quickstart-vector-search/src/main/java/com/example/search/SearchSemanticHybrid.java" :::
+var vectorSearchOptions = new VectorSearchOptions()
+    .setQueries(vectorQuery)
+    .setFilterMode(VectorFilterMode.POST_FILTER);
 
-1. Build and run the file.
+SemanticSearchOptions semanticSearchOptions = new SemanticSearchOptions()
+    .setSemanticConfigurationName("semantic-config");
 
-    ```bash
-    mvn compile exec:java -Dexec.mainClass="com.example.search.SearchSemanticHybrid"
-    ```
+var searchOptions = new SearchOptions()
+    .setTop(5)
+    .setIncludeTotalCount(true)
+    .setSelect("HotelId", "HotelName", "Category", "Description")
+    .setQueryType(QueryType.SEMANTIC)
+    .setSemanticSearchOptions(semanticSearchOptions)
+    .setVectorSearchOptions(vectorSearchOptions);
 
-    The output of this code shows the relevant documents for the semantic hybrid search.
-
-    ```output
-    Using Azure Search endpoint: https://<search-service-name>.search.windows.net
-    Using Azure Search index: <vector-index-name>
-    
-    Semantic hybrid search found 7 then limited to top 5
-    - Score: 0.0317460335791111
-      Re-ranker Score: 2.6550590991973877
-      HotelId: 49
-      HotelName: Swirling Currents Hotel
-      Description: Spacious rooms, glamorous suites and residences, rooftop pool, walking access to shopping, dining, entertainment and the city center. Each room comes equipped with a microwave, a coffee maker and a minifridge. In-room entertainment includes complimentary W-Fi and flat-screen TVs.
-      Category: Suite
-    
-    - Score: 0.03279569745063782
-      Re-ranker Score: 2.599761724472046
-      HotelId: 4
-      HotelName: Sublime Palace Hotel
-      Description: Sublime Palace Hotel is located in the heart of the historic center of Sublime in an extremely vibrant and lively area within short walking distance to the sites and landmarks of the city and is surrounded by the extraordinary beauty of churches, buildings, shops and monuments. Sublime Cliff is part of a lovingly restored 19th century resort, updated for every modern convenience.
-      Category: Boutique
-    
-    - Score: 0.03125
-      Re-ranker Score: 2.3480887413024902
-      HotelId: 2
-      HotelName: Old Century Hotel
-      Description: The hotel is situated in a nineteenth century plaza, which has been expanded and renovated to the highest architectural standards to create a modern, functional and first-class hotel in which art and unique historical elements coexist with the most modern comforts. The hotel also regularly hosts events like wine tastings, beer dinners, and live music.
-      Category: Boutique
-    
-    - Score: 0.016393441706895828
-      Re-ranker Score: 2.2718777656555176
-      HotelId: 1
-      HotelName: Stay-Kay City Hotel
-      Description: This classic hotel is fully-refurbished and ideally located on the main commercial artery of the city in the heart of New York. A few minutes away is Times Square and the historic centre of the city, as well as other places of interest that make New York one of America's most attractive and cosmopolitan cities.
-      Category: Boutique
-    
-    - Score: 0.01515151560306549
-      Re-ranker Score: 2.0582215785980225
-      HotelId: 3
-      HotelName: Gastronomic Landscape Hotel
-      Description: The Gastronomic Hotel stands out for its culinary excellence under the management of William Dough, who advises on and oversees all of the Hotel's restaurant services.
-      Category: Suite
-    ```
+var results = searchClient.search(
+    "historic hotel walk to restaurants and shopping",
+    searchOptions, Context.NONE);
+```
 
-    You can think of the semantic ranking as a way to improve the relevance of search results by understanding the meaning behind the words in the query and the content of the documents. In this case, the semantic ranking helps to identify hotels that are not only relevant to the keywords but also match the intent of the query:
+Compare these results with the hybrid search results from the previous query. Without semantic reranking, Sublime Palace Hotel ranks first because Reciprocal Rank Fusion (RRF) combines the text and vector scores to produce a merged result. After semantic reranking, Swirling Currents Hotel moves to the top spot.
 
-    Key takeaways:
+The semantic ranker uses machine comprehension models to evaluate how well each result matches the intent of the query. Swirling Currents Hotel's description mentions `"walking access to shopping, dining, entertainment and the city center"`, which aligns closely with the search query's `"walk to restaurants and shopping"`. This semantic match for nearby dining and shopping elevates it above Sublime Palace Hotel, which doesn't emphasize walkable amenities in its description.
 
-    - Vector search is specified through the `VectorSearchOptions` class. Keyword search is specified through the `SemanticSearchOptions` class.
+Key takeaways:
 
-    - In a hybrid search, you can integrate vector search with full-text search over keywords. Filters, spell check, and semantic ranking apply to textual content only, and not vectors. In this final query, there's no semantic `answer` because the system didn't produce one that was sufficiently strong.
++ In a hybrid search, you can integrate vector search with full-text search over keywords. Filters and semantic ranking apply to textual content only, not vectors.
 
-    - Actual results include more detail, including semantic captions and highlights. Results were modified for readability. To get the full structure of the response, run the request in the REST client.
++ Actual results include more detail, including semantic captions and highlights. This quickstart modifies results for readability. To get the full structure of the response, use REST to run the request.
 
 ## Clean up resources
 
-When you're working in your own subscription, it's a good idea at the end of a project to identify whether you still need the resources you created. Resources left running can cost you money. You can delete resources individually or delete the resource group to delete the entire set of resources.
+[!INCLUDE [resource-cleanup-paid](../resource-cleanup-paid.md)]
 
-You can find and manage resources in the Azure portal by using the **All resources** or **Resource groups** link in the leftmost pane.
+Otherwise, run the following command to delete the index you created in this quickstart.
 
-Alternatively, to delete the vector index you created in this quickstart programmatically:
-
-1. Create a `DeleteIndex.java` file in the `src/main/java/com/example/search` directory.
-
-1. Add the following code to the file.
-
-    :::code language="java" source="~/azure-search-java-samples/quickstart-vector-search/src/main/java/com/example/search/DeleteIndex.java" :::
-
-1. Build and run the file.
-
-    ```bash
-    mvn compile exec:java -Dexec.mainClass="com.example.search.DeleteIndex"
-    ```
-
-## Next steps
-
-+ Review the repository of code samples for vector search capabilities in Azure AI Search for [Java](https://github.com/Azure/azure-search-vector-samples/tree/main/demo-java).
+```bash
+mvn compile exec:java "-Dexec.mainClass=com.example.search.DeleteIndex"
+```

Summary

{
    "modification_type": "minor update",
    "modification_title": "ベクトル検索に関するJavaクイックスタートの更新"
}

Explanation

この変更は、Javaを使用したベクトル検索に関するクイックスタートドキュメントの大幅な更新を示しています。主な目的は、ドキュメントの構造と内容を改善し、ユーザーがAzure AI Searchを利用する際の明確性と実用性を向上させることです。

変更の一部として、最初の説明文が簡潔かつ明瞭に再構成され、Azure AI Searchクライアントライブラリの利用方法が強調されています。具体的には、クイックスタートでは、ユーザーがどのようにしてベクトルインデックスを作成、読み込み、およびクエリを実行するかを段階的に学ぶことができるようにされています。

前提条件に関する情報も更新され、特にAzure AI Searchサービスに関しては、利用可能なプランの推奨事項が追加されています。また、必要なソフトウェア(Java 21 LTS、Mavenなど)やツールのインストール方法も詳述されています。このように、ユーザーが環境を整えやすくするための具体的な手順が提供されています。

手続きのセクションも整理されており、APIコールの設定やエンドポイントの取得方法が明確に示されています。プロジェクトのセットアップ方法や、Mavenを使用した依存関係の管理が一貫して説明され、ユーザーがスムーズに作業を進められるようになっています。

コードの実行において、インデックスの作成やドキュメントのアップロード、実際の検索クエリの実行手順が具体化されています。特に、ベクトル検索クエリとその結果がどのように構成されるかについても、例を交えて詳しく解説されています。この更新により、ユーザーはAzure AI Searchを利用してより効果的にデータを取得できるようになっています。

全体として、この変更はクイックスタート文書の使いやすさを高め、特に初めてAzure AI Searchを使用する開発者にとってのガイダンスをさらに強化するものとなっています。

articles/search/includes/quickstarts/search-get-started-vector-javascript.md

Diff
@@ -4,545 +4,424 @@ author: diberry
 ms.author: haileytapia
 ms.service: azure-ai-search
 ms.topic: include
-ms.date: 01/14/2026
+ms.date: 02/05/2026
 ms.custom: dev-focus
 ai-usage: ai-assisted
 ---
 
-In this quickstart, you use JavaScript to create, load, and query a [vector index](../../vector-store.md). The code performs these operations by using the [Azure AI Search client library for JavaScript](/javascript/api/overview/azure/search-documents-readme), which provides an abstraction over the REST APIs to access index operations.
+In this quickstart, you use the [Azure AI Search client library for JavaScript](/javascript/api/overview/azure/search-documents-readme) to create, load, and query a [vector index](../../vector-store.md). The JavaScript client library provides an abstraction over the REST APIs for index operations.
 
 In Azure AI Search, a vector index has an index schema that defines vector and nonvector fields, a vector search configuration for algorithms that create the embedding space, and settings on vector field definitions that are evaluated at query time. [Indexes - Create or Update](/rest/api/searchservice/indexes/create-or-update) (REST API) creates the vector index.
 
-> [!NOTE]
-> This quickstart omits the vectorization step and provides inline embeddings. If you want to add [built-in data chunking and vectorization](../../vector-search-integrated-vectorization.md) over your own content, try the [**Import data (new)** wizard](../../search-get-started-portal-import-vectors.md) for an end-to-end walkthrough.
+> [!TIP]
+> + Want to get started right away? Download the [source code](https://github.com/Azure-Samples/azure-search-javascript-samples/tree/main/quickstart-vector-js) on GitHub.
+> + This quickstart omits the vectorization step and provides inline embeddings. For [integrated vectorization](../../vector-search-integrated-vectorization.md) over your own content, try the [**Import data (new)** wizard](../../search-get-started-portal-import-vectors.md).
 
 ## Prerequisites
 
-+ An Azure account with an active subscription. [Create an account for free](https://azure.microsoft.com/pricing/purchase-options/azure-account?cid=msft_learn).
+- An Azure account with an active subscription. [Create an account for free](https://azure.microsoft.com/pricing/purchase-options/azure-account?cid=msft_learn).
 
-+ An [Azure AI Search service](../../search-create-service-portal.md).
+- An [Azure AI Search service](../../search-create-service-portal.md). You can use the Free tier for most of this quickstart, but we recommend Basic or higher for larger data files.
 
-    + You can use the Free tier for most of this quickstart, but we recommend Basic or higher for larger data files.
+- [Semantic ranker enabled on your search service](../../semantic-how-to-enable-disable.md) for the optional semantic hybrid query.
 
-    + For [keyless authentication](../../search-get-started-rbac.md) with Microsoft Entra ID, assign the **Search Index Data Contributor role** to your user account.
-    
-    + To run the semantic hybrid query, you must [enable semantic ranker](../../semantic-how-to-enable-disable.md).
+- [Node.js 20 LTS](https://nodejs.org/en/download/) or later.
 
-+ [Visual Studio Code](https://code.visualstudio.com/download).
+- [Visual Studio Code](https://code.visualstudio.com/download).
 
-+ [Node.JS with LTS](https://nodejs.org/en/download/).
+- [Git](https://git-scm.com/downloads) to clone the sample repository.
 
-## Get service endpoints
+- The [Azure CLI](/cli/azure/install-azure-cli) for keyless authentication with Microsoft Entra ID.
 
-In the remaining sections, you set up API calls to Azure OpenAI and Azure AI Search. Get the service endpoints so that you can provide them as variables in your code.
+## Configure access
 
-To get the service endpoint:
+[!INCLUDE [resource authentication](../resource-authentication.md)]
 
-1. Sign in to the [Azure portal](https://portal.azure.com).
+## Get endpoint
 
-1. [Find your search service](https://portal.azure.com/#blade/HubsExtension/BrowseResourceBlade/resourceType/Microsoft.Search%2FsearchServices).
+[!INCLUDE [resource endpoint](../resource-endpoint.md)]
 
-1. On the **Overview** home page, copy the URL. An example endpoint might look like `https://example.search.windows.net`.
+## Set up the environment
 
-## Set up the Node.JS project
-
-1. Start Visual Studio Code in a new directory.
+1. Use Git to clone the sample repository.
 
    ```bash
-   mkdir vector-quickstart && cd vector-quickstart
-   code .
+   git clone https://github.com/Azure-Samples/azure-search-javascript-samples
    ```
-1. Create a new package for ESM modules in your project directory.
+
+1. Navigate to the quickstart folder and open it in Visual Studio Code.
 
    ```bash
-   npm init -y
-   npm pkg set type=module
+   cd azure-search-javascript-samples/quickstart-vector-js
+   code .
    ```
 
-   This creates a `package.json` file with default values.
+1. In `sample.env`, replace the placeholder value for `AZURE_SEARCH_ENDPOINT` with the URL you obtained in [Get endpoint](#get-endpoint).
 
-1. Install the following `npm` packages.
+1. Rename `sample.env` to `.env`.
 
    ```bash
-   npm install @azure/identity @azure/search-documents dotenv
-   ``` 
+   mv sample.env .env
+   ```
 
-1. Create a `src` directory in your project directory.
+1. Install the dependencies.
 
    ```bash
-   mkdir src
+   npm install
    ```
 
-## Set up environment variables for local development
-
-1. Create a `.env` file in your `vector-quickstart` project directory.
+   When the installation completes, you should see a `node_modules` folder in the project directory.
 
-1. Add the following environment variables to the `.env` file, replacing the values with your own service endpoints and keys.
+1. For keyless authentication with Microsoft Entra ID, sign in to your Azure account. If you have multiple subscriptions, select the one that contains your Azure AI Search service.
 
-   ```plaintext
-   AZURE_SEARCH_ENDPOINT=<YOUR AZURE AI SEARCH ENDPOINT>
-   AZURE_SEARCH_INDEX_NAME=hotels-vector-quickstart
+   ```azurecli
+   az login
    ```
-## Sign in to Azure
-
-You're using Microsoft Entra ID and role assignments for the connection. Make sure you're logged in to the same tenant and subscription as Azure AI Search and Azure OpenAI. You can use the Azure CLI on the command line to show current properties, change properties, and to sign in. For more information, see [Connect without keys](../../search-get-started-rbac.md). 
-
-Run each of the following commands in sequence.
-
-```azurecli
-az account show
-
-az account set --subscription <PUT YOUR SUBSCRIPTION ID HERE>
-
-az login --tenant <PUT YOUR TENANT ID HERE>
-```
-
-You should now be logged in to Azure from your local device.
 
-## Create a vector index
+## Run the code
 
-In this section, you create a vector index in Azure AI Search with [SearchIndexClient](/javascript/api/@azure/search-documents/searchindexclient).[createOrUpdateIndex](/javascript/api/@azure/search-documents/searchindexclient#@azure-search-documents-searchindexclient-createorupdateindex). The index schema defines the fields, including the vector field `DescriptionVector`. 
-
-To create a vector index:
-
-1. Create a `createIndex.js` file in the `src` directory.
-
-1. Copy the following code into the file. 
-
-    :::code language="javascript" source="~/azure-search-javascript-samples/quickstart-vector-js/src/createIndex.js":::
-
-    The code file adds the dependencies, environment variables, and JavaScript type for `HotelDocument` to the top of the file. Add the `createIndex` function to create the index. The function defines the index schema, including the vector field `DescriptionVector`.
-
-1. Run the file.
+1. Create a vector index.
 
     ```bash
     node -r dotenv/config src/createIndex.js
     ```
 
-   The output of this code shows that the index is created successfully.
-
-    ```output
-    Using Azure Search endpoint: https://<search-service-name>.search.windows.net
-    Using Azure Search index: <vector-index-name>
-    Creating index...
-    hotels-vector-quickstart created
-    ```
-
-   Key takeaways:
-
-   + You define an index by creating a list of fields. 
-
-   + This particular index supports multiple search capabilities, such as:
-
-      + Full-text keyword search (`searchable`)
-
-      + Vector search (enables hybrid search by collocating vector and nonvector fields) fields (`DescriptionVector` with `vectorSearchProfileName`)
-
-      + Semantic search 
-
-      + Faceted search (`searchSuggester`)
-
-      + Geo-spatial search (`Location` field with `geo.distance`)
-
-      + Filtering, sorting (many fields marked filterable and sortable)
-
-## Upload documents to the index
-
-Creating and loading the index are separate steps. You created the index schema in the previous step. You now need to load documents into the index with [SearchClient](/javascript/api/@azure/search-documents/searchclient).[uploadDocuments](/javascript/api/%40azure/search-documents/searchclient#@azure-search-documents-searchclient-uploaddocuments). The documents contain the vectorized version of the article's description, which enables similarity search based on meaning rather than exact keywords.
-
-In Azure AI Search, the index stores all searchable content, while the search engine executes queries against that index.
-
-To upload documents to the index:
-
-1. Create an `uploadDocuments.js` file in the `src` directory.
-1. Copy the following code into the file.
-
-    :::code language="javascript" source="~/azure-search-javascript-samples/quickstart-vector-js/src/uploadDocuments.js" :::
-
-    This code loads an array of JSON objects. Each document includes the vectorized version of the article's `description`. This vector enables similarity search, where matching is based on meaning rather than exact keywords.
-
-    Because this quickstart article searches the index immediately, the `waitUntilIndexed` function waits until the index is ready for search operations. This is important because the index needs to be fully populated with documents before you can perform searches.
-
-1. Build and run the file.
+1. Load documents that contain precomputed embeddings.
 
     ```bash
     node -r dotenv/config src/uploadDocuments.js
     ```
 
-   The output of this code shows that the documents are indexed and ready for search.
-
-    ```output
-    Using Azure Search endpoint: https://<search-service-name>.search.windows.net
-    Using Azure Search index: <vector-index-name>
-    Uploading documents...
-    Key: 1, Succeeded: true, ErrorMessage: none
-    Key: 2, Succeeded: true, ErrorMessage: none
-    Key: 3, Succeeded: true, ErrorMessage: none
-    Key: 4, Succeeded: true, ErrorMessage: none
-    Key: 48, Succeeded: true, ErrorMessage: none
-    Key: 49, Succeeded: true, ErrorMessage: none
-    Key: 13, Succeeded: true, ErrorMessage: none
-    Waiting for indexing... Current count: 0
-    All documents indexed successfully.
-    ```
-
-    Key takeaways:
-
-    * Your code interacts with a specific search index hosted in your Azure AI Search service through the `SearchClient`, which is the main object provided by the @azure/search-documents package. The `SearchClient` provides access to index operations, such as:
-
-        * Data ingestion: `uploadDocuments`, `mergeDocuments`, `deleteDocuments`, and so on.
-
-        * Search operations: `search`, `autocomplete`, `suggest`
-
-        * Index management operations: `createIndex`, `deleteIndex`, `getIndex`, and so on.
-
-    * Vector fields contain floating point values. The dimensions attribute has a minimum of 2 and a maximum of 4096 floating point values each. This quickstart sets the dimensions attribute to 1,536 because that's the size of embeddings generated by the `text-embedding-ada-002` model.
-
-## Create the query as a vector
-
-The example vector queries are based on two strings:
-
-+ Search string: `historic hotel walk to restaurants and shopping`
-+ Vector query string: `quintessential lodging near running trails, eateries, retail` (vectorized into a mathematical representation)
-
-The vector query string is semantically similar to the search string, but it includes terms that don't exist in the search index. If you do a keyword search for `quintessential lodging near running trails, eateries, retail`, results are zero. We use this example to show how you can get relevant results even if there are no matching terms.
-
-Create a `queryVector.js` file in the `src` directory and add the code to create the query vector.
-
-:::code language="javascript" source="~/azure-search-javascript-samples/quickstart-vector-js/src/queryVector.js" :::
-
-This code is used in the following sections to perform vector searches. The query vector is created using an embedding model from Azure OpenAI.
-
-## Create a single vector search
-
-The first example demonstrates a basic scenario where you want to find document descriptions that closely match the search string using the [SearchClient](/javascript/api/@azure/search-documents/searchclient).[search](/javascript/api/@azure/search-documents/searchclient#@azure-search-documents-searchclient-search) and the [VectorQuery](/javascript/api/@azure/search-documents/vectorquery) and [SearchOptions](/javascript/api/@azure/search-documents/searchoptions).
-
-To create a single vector search:
-
-1. Create a `searchSingle.js` file in the `src` directory.
-
-1. Copy the following code into the file.
-
-    :::code language="javascript" source="~/azure-search-javascript-samples/quickstart-vector-js/src/searchSingle.js" :::
-
-    The vectorQuery contains the configuration of the vectorized query including the vectorized text of the query input as `vector`,  `fields` determines which vector fields are searched, and `kNearestNeighborsCount` specifies the number of nearest neighbors to return.
-
-    The vector query string is `quintessential lodging near running trails, eateries, retail`, which is vectorized into 1,536 embeddings for this query.
-
-1. Build and run the file.
+1. Run a vector search query.
 
     ```bash
     node -r dotenv/config src/searchSingle.js
     ```
 
-   The output of this code shows the relevant docs for the query `quintessential lodging near running trails, eateries, retail`.
-
-    ```output
-    Using Azure Search endpoint: https://<search-service-name>.search.windows.net
-    Using Azure Search index: <vector-index-name>
-    
-    
-    Single Vector search found 5
-    - HotelId: 48, HotelName: Nordick's Valley Motel, Tags: ["continental breakfast","air conditioning","free wifi"], Score 0.6605852
-    - HotelId: 13, HotelName: Luxury Lion Resort, Tags: ["bar","concierge","restaurant"], Score 0.6333684
-    - HotelId: 4, HotelName: Sublime Palace Hotel, Tags: ["concierge","view","air conditioning"], Score 0.605672
-    - HotelId: 49, HotelName: Swirling Currents Hotel, Tags: ["air conditioning","laundry service","24-hour front desk service"], Score 0.6026341
-    - HotelId: 2, HotelName: Old Century Hotel, Tags: ["pool","free wifi","air conditioning","concierge"], Score 0.57902366
+1. (Optional) Run additional query variations.
+
+    ```bash
+    node -r dotenv/config src/searchSingleWithFilter.js
+    node -r dotenv/config src/searchSingleWithFilterGeo.js
+    node -r dotenv/config src/searchHybrid.js
+    node -r dotenv/config src/searchSemanticHybrid.js
     ```
 
-    The response for the vector equivalent of `quintessential lodging near running trails, eateries, retail` consists of 5 results with only the fields specified by the select returned.
+### Output
 
+The output of `createIndex.js` shows the index name and confirmation.
 
-## Create a single vector search with a filter
+```output
+Using Azure Search endpoint: https://<search-service-name>.search.windows.net
+Using Azure Search index: hotels-vector-quickstart
+Creating index...
+hotels-vector-quickstart created
+```
 
-You can add filters, but the filters are applied to the nonvector content in your index. In this example, the filter applies to the `Tags` field to filter out any hotels that don't provide free Wi-Fi. This search uses [SearchClient](/javascript/api/@azure/search-documents/searchclient).[search](/javascript/api/@azure/search-documents/searchclient#@azure-search-documents-searchclient-search) and the [VectorQuery](/javascript/api/@azure/search-documents/vectorquery) and [SearchOptions](/javascript/api/@azure/search-documents/searchoptions). 
+The output of `uploadDocuments.js` shows the success status for each indexed document.
+
+```output
+Uploading documents...
+Key: 1, Succeeded: true, ErrorMessage: none
+Key: 2, Succeeded: true, ErrorMessage: none
+Key: 3, Succeeded: true, ErrorMessage: none
+Key: 4, Succeeded: true, ErrorMessage: none
+Key: 48, Succeeded: true, ErrorMessage: none
+Key: 49, Succeeded: true, ErrorMessage: none
+Key: 13, Succeeded: true, ErrorMessage: none
+Waiting for indexing... Current count: 0
+All documents indexed successfully.
+```
 
-To create a single vector search with a filter:
+The output of `searchSingle.js` shows vector search results ranked by similarity score.
 
-1. Create a `searchSingleWithFilter.js` file in the `src` directory.
+```output
+Single Vector search found 5
+- HotelId: 48, HotelName: Nordick's Valley Motel, Tags: ["continental breakfast","air conditioning","free wifi"], Score 0.6605852
+- HotelId: 13, HotelName: Luxury Lion Resort, Tags: ["bar","concierge","restaurant"], Score 0.6333684
+- HotelId: 4, HotelName: Sublime Palace Hotel, Tags: ["concierge","view","air conditioning"], Score 0.605672
+- HotelId: 49, HotelName: Swirling Currents Hotel, Tags: ["air conditioning","laundry service","24-hour front desk service"], Score 0.6026341
+- HotelId: 2, HotelName: Old Century Hotel, Tags: ["pool","free wifi","air conditioning","concierge"], Score 0.57902366
+```
 
-1. Copy the following code into the file.
+## Understand the code
+
+[!INCLUDE [understand code note](../understand-code-note.md)]
+
+Now that you've run the code, let's break down the key steps:
+
+1. [Create a vector index](#create-a-vector-index)
+1. [Upload documents to the index](#upload-documents-to-the-index)
+1. [Query the index](#query-the-index)
+
+### Create a vector index
+
+Before you add content to Azure AI Search, you must create an index to define how the content is stored and structured.
+
+The index schema is organized around hotel content. Sample data consists of vector and nonvector descriptions of fictitious hotels. The following code in `createIndex.js` creates the index schema, including the vector field `DescriptionVector`.
+
+```javascript
+const searchFields = [
+    { name: "HotelId", type: "Edm.String", key: true, sortable: true, filterable: true, facetable: true },
+    { name: "HotelName", type: "Edm.String", searchable: true, filterable: true },
+    { name: "Description", type: "Edm.String", searchable: true },
+    {
+        name: "DescriptionVector",
+        type: "Collection(Edm.Single)",
+        searchable: true,
+        vectorSearchDimensions: 1536,
+        vectorSearchProfileName: "vector-profile"
+    },
+    { name: "Category", type: "Edm.String", filterable: true, facetable: true },
+    { name: "Tags", type: "Collection(Edm.String)", filterable: true },
+    // Additional fields: ParkingIncluded, LastRenovationDate, Rating, Address, Location
+];
+
+const vectorSearch = {
+    profiles: [
+        {
+            name: "vector-profile",
+            algorithmConfigurationName: "vector-search-algorithm"
+        }
+    ],
+    algorithms: [
+        {
+            name: "vector-search-algorithm",
+            kind: "hnsw",
+            parameters: { m: 4, efConstruction: 400, efSearch: 1000, metric: "cosine" }
+        }
+    ]
+};
+
+const semanticSearch = {
+    configurations: [
+        {
+            name: "semantic-config",
+            prioritizedFields: {
+                contentFields: [{ name: "Description" }],
+                keywordsFields: [{ name: "Category" }],
+                titleField: { name: "HotelName" }
+            }
+        }
+    ]
+};
+
+const searchIndex = {
+    name: indexName,
+    fields: searchFields,
+    vectorSearch: vectorSearch,
+    semanticSearch: semanticSearch,
+    suggesters: [{ name: "sg", searchMode: "analyzingInfixMatching", sourceFields: ["HotelName"] }]
+};
+
+const result = await indexClient.createOrUpdateIndex(searchIndex);
+```
 
-    :::code language="javascript" source="~/azure-search-javascript-samples/quickstart-vector-js/src/searchSingleWithFilter.js" :::
+Key takeaways:
 
-    Add the dependencies, environment variables, and the same search functionality as the previous search with a post-processing exclusion filter added for hotels with `free wifi`.
++ You define an index by creating a list of fields.
 
-1. Build and run the file.
++ This particular index supports multiple search capabilities:
 
-    ```bash
-    node -r dotenv/config src/searchSingleWithFilter.js
-    ```
+    + [Full-text search](../../search-lucene-query-architecture.md) (`searchable: true`)
 
-   The output of this code shows the relevant documents for the query with the filter for `free wifi` applied.
+    + [Vector search](../../vector-search-overview.md) (`DescriptionVector` with `vectorSearchProfileName`)
 
-    ```output
-    Using Azure Search endpoint: https://<search-service-name>.search.windows.net
-    Using Azure Search index: <vector-index-name>
-    
-    
-    Single Vector search found 2
-    - HotelId: 48, HotelName: Nordick's Valley Motel, Tags: ["continental breakfast","air conditioning","free wifi"], Score 0.6605852
-    - HotelId: 2, HotelName: Old Century Hotel, Tags: ["pool","free wifi","air conditioning","concierge"], Score 0.57902366
-    ```
+    + [Semantic ranking](../../semantic-search-overview.md) (`semanticSearch`)
 
-## Create a search with a geospatial filter    
+    + [Faceted search](../../search-faceted-navigation.md) (fields marked with `facetable`)
 
-You can specify a geospatial filter to limit results to a specific geographic area. In this example, the filter limits results to hotels within 300 kilometers of Washington D.C. (coordinates: `-77.03241 38.90166`). Geospatial distances are always in kilometers. This search uses [SearchClient](/javascript/api/@azure/search-documents/searchclient).[search](/javascript/api/@azure/search-documents/searchclient#@azure-search-documents-searchclient-search) and the [VectorQuery](/javascript/api/@azure/search-documents/vectorquery) and [SearchOptions](/javascript/api/@azure/search-documents/searchoptions). 
+    + [Geo-spatial search](../../search-query-odata-geo-spatial-functions.md) (`Location` field with `Edm.GeographyPoint`)
 
-To create a search with a geospatial filter:
+    + [Filtering](../../search-filters.md) and sorting (fields marked with `filterable` and `sortable`)
 
-1. Create a `searchSingleWithFilterGeo.js` file in the `src` directory.
++ The `vectorSearchDimensions` property must match the output size of your embedding model. This quickstart uses 1,536 dimensions to match the `text-embedding-ada-002` model.
 
-1. Copy the following code into the file.
++ The `vectorSearch` configuration defines the Approximate Nearest Neighbor (ANN) algorithm. Supported algorithms include Hierarchical Navigable Small World (HNSW) and exhaustive K-Nearest Neighbor (KNN). For more information, see [Relevance in vector search](../../vector-search-ranking.md).
 
-    :::code language="javascript" source="~/azure-search-javascript-samples/quickstart-vector-js/src/searchSingleWithFilterGeo.js" :::
-1. Build and run the file.
+### Upload documents to the index
 
-    ```bash
-    node -r dotenv/config src/searchSingleWithFilterGeo.js
-    ```
+Newly created indexes are empty. To populate an index and make it searchable, you must upload JSON documents that conform to the index schema.
 
-   The output of this code shows the relevant documents for the query with the geospatial post-processing exclusion filter applied.
+In Azure AI Search, documents serve as both inputs for indexing and outputs for queries. For simplicity, this quickstart provides sample hotel documents with precomputed vectors. In production scenarios, content is often pulled from connected data sources and transformed into JSON using [indexers](../../search-indexer-overview.md).
 
-    ```output
-    Using Azure Search endpoint: https://<search-service-name>.search.windows.net
-    Using Azure Search index: <vector-index-name>
-    
-    
-    Single Vector search found 2
-    - HotelId: 48, HotelName: Nordick's Valley Motel, Tags: N/A, Score 0.6605852246284485
-    - HotelId: 49, HotelName: Swirling Currents Hotel, Tags: N/A, Score 0.602634072303772
-    ```
+The following code in `uploadDocuments.js` uploads documents to your search service.
 
-## Create a hybrid search
+```javascript
+const DOCUMENTS = [
+    // Array of hotel documents with embedded 1536-dimension vectors
+    // Each document contains: HotelId, HotelName, Description, DescriptionVector,
+    // Category, Tags, ParkingIncluded, LastRenovationDate, Rating, Address, Location
+];
 
-Hybrid search consists of keyword queries and vector queries in a single search request. This example runs the vector query and full-text search concurrently:
+const searchClient = new SearchClient(searchEndpoint, indexName, credential);
 
-+ Search string: `historic hotel walk to restaurants and shopping`
-+ Vector query string: `quintessential lodging near running trails, eateries, retail` (vectorized into a mathematical representation)
+const result = await searchClient.uploadDocuments(DOCUMENTS);
+for (const r of result.results) {
+    console.log(`Key: ${r.key}, Succeeded: ${r.succeeded}`);
+}
+```
 
-This search uses [SearchClient](/javascript/api/@azure/search-documents/searchclient).[search](/javascript/api/@azure/search-documents/searchclient#@azure-search-documents-searchclient-search) and the [VectorQuery](/javascript/api/@azure/search-documents/vectorquery) and [SearchOptions](/javascript/api/@azure/search-documents/searchoptions). 
+Your code interacts with a specific search index hosted in your Azure AI Search service through the `SearchClient`, which is the main object provided by the [`@azure/search-documents`](/javascript/api/overview/azure/search-documents-readme) package. The `SearchClient` provides access to index operations, such as:
 
-To create a hybrid search:
++ Data ingestion: `uploadDocuments`, `mergeDocuments`, `deleteDocuments`
 
-1. Create a `searchHybrid.js` file in the `src` directory.
-1. Copy the following code into the file.
++ Search operations: `search`, `autocomplete`, `suggest`
 
-    :::code language="javascript" source="~/azure-search-javascript-samples/quickstart-vector-js/src/searchHybrid.js" :::
-1. Build and run the file.
+### Query the index
 
-    ```bash
-    node -r dotenv/config src/searchHybrid.js
-    ```
+The queries in the search files demonstrate different search patterns. The example vector queries are based on two strings:
 
-   The output of this code shows the relevant documents for the hybrid search.
-
-    ```output
-    Using Azure Search endpoint: https://<search-service-name>.search.windows.net
-    Using Azure Search index: <vector-index-name>
-    
-    
-    Hybrid search found 7 then limited to top 5
-    - Score: 0.03279569745063782
-      HotelId: 4
-      HotelName: Sublime Palace Hotel
-      Description: Sublime Palace Hotel is located in the heart of the historic center of Sublime in an extremely vibrant and lively area within short walking distance to the sites and landmarks of the city and is surrounded by the extraordinary beauty of churches, buildings, shops and monuments. Sublime Cliff is part of a lovingly restored 19th century resort, updated for every modern convenience.
-      Category: Boutique
-      Tags: ["concierge","view","air conditioning"]
-    
-    - Score: 0.032522473484277725
-      HotelId: 13
-      HotelName: Luxury Lion Resort
-      Description: Unmatched Luxury. Visit our downtown hotel to indulge in luxury accommodations. Moments from the stadium and transportation hubs, we feature the best in convenience and comfort.
-      Category: Luxury
-      Tags: ["bar","concierge","restaurant"]
-    
-    - Score: 0.03205128386616707
-      HotelId: 48
-      HotelName: Nordick's Valley Motel
-      Description: Only 90 miles (about 2 hours) from the nation's capital and nearby most everything the historic valley has to offer. Hiking? Wine Tasting? Exploring the caverns? It's all nearby and we have specially priced packages to help make our B&B your home base for fun while visiting the valley.
-      Category: Boutique
-      Tags: ["continental breakfast","air conditioning","free wifi"]
-    
-    - Score: 0.0317460335791111
-      HotelId: 49
-      HotelName: Swirling Currents Hotel
-      Description: Spacious rooms, glamorous suites and residences, rooftop pool, walking access to shopping, dining, entertainment and the city center. Each room comes equipped with a microwave, a coffee maker and a minifridge. In-room entertainment includes complimentary W-Fi and flat-screen TVs.
-      Category: Suite
-      Tags: ["air conditioning","laundry service","24-hour front desk service"]
-    
-    - Score: 0.03125
-      HotelId: 2
-      HotelName: Old Century Hotel
-      Description: The hotel is situated in a nineteenth century plaza, which has been expanded and renovated to the highest architectural standards to create a modern, functional and first-class hotel in which art and unique historical elements coexist with the most modern comforts. The hotel also regularly hosts events like wine tastings, beer dinners, and live music.
-      Category: Boutique
-      Tags: ["pool","free wifi","air conditioning","concierge"]
-    ```
++ Full-text search string: `"historic hotel walk to restaurants and shopping"`
 
-    Because Reciprocal Rank Fusion (RRF) merges results, it helps to review the inputs. The following results are from the full-text query only. The top two results are Sublime Palace Hotel and Luxury Lion Resort. The Sublime Palace Hotel has a stronger BM25 relevance score.
-
-    ```json
-       {
-           "@search.score": 2.2626662,
-           "HotelName": "Sublime Palace Hotel",
-           "Description": "Sublime Palace Hotel is located in the heart of the historic center of Sublime in an extremely vibrant and lively area within short walking distance to the sites and landmarks of the city and is surrounded by the extraordinary beauty of churches, buildings, shops and monuments. Sublime Palace is part of a lovingly restored 1800 palace."
-       },
-       {
-           "@search.score": 0.86421645,
-           "HotelName": "Luxury Lion Resort",
-           "Description": "Unmatched Luxury.  Visit our downtown hotel to indulge in luxury accommodations. Moments from the stadium, we feature the best in comfort"
-       },
-    ```
++ Vector query string: `"quintessential lodging near running trails, eateries, retail"` (vectorized into a mathematical representation)
 
-    In the vector-only query, which uses HNSW for finding matches, the Sublime Palace Hotel drops to the fourth position. Luxury Lion, which was second in the full-text search and third in the vector search, doesn't experience the same range of fluctuation, so it appears as a top match in a homogenized result set.
-   
-   ```json
-   "value": [
-       {
-           "@search.score": 0.857736,
-           "HotelId": "48",
-           "HotelName": "Nordick's Valley Motel",
-           "Description": "Only 90 miles (about 2 hours) from the nation's capital and nearby most everything the historic valley has to offer.  Hiking? Wine Tasting? Exploring the caverns?  It's all nearby and we have specially priced packages to help make our B&B your home base for fun while visiting the valley.",
-           "Category": "Boutique"
-       },
-       {
-           "@search.score": 0.8399129,
-           "HotelId": "49",
-           "HotelName": "Swirling Currents Hotel",
-           "Description": "Spacious rooms, glamorous suites and residences, rooftop pool, walking access to shopping, dining, entertainment and the city center.",
-           "Category": "Luxury"
-       },
-       {
-           "@search.score": 0.8383954,
-           "HotelId": "13",
-           "HotelName": "Luxury Lion Resort",
-           "Description": "Unmatched Luxury.  Visit our downtown hotel to indulge in luxury accommodations. Moments from the stadium, we feature the best in comfort",
-           "Category": "Resort and Spa"
-       },
-       {
-           "@search.score": 0.8254346,
-           "HotelId": "4",
-           "HotelName": "Sublime Palace Hotel",
-           "Description": "Sublime Palace Hotel is located in the heart of the historic center of Sublime in an extremely vibrant and lively area within short walking distance to the sites and landmarks of the city and is surrounded by the extraordinary beauty of churches, buildings, shops and monuments. Sublime Palace is part of a lovingly restored 1800 palace.",
-           "Category": "Boutique"
-       },
-       {
-           "@search.score": 0.82380056,
-           "HotelId": "1",
-           "HotelName": "Stay-Kay City Hotel",
-           "Description": "The hotel is ideally located on the main commercial artery of the city in the heart of New York.",
-           "Category": "Boutique"
-       },
-       {
-           "@search.score": 0.81514084,
-           "HotelId": "2",
-           "HotelName": "Old Century Hotel",
-           "Description": "The hotel is situated in a  nineteenth century plaza, which has been expanded and renovated to the highest architectural standards to create a modern, functional and first-class hotel in which art and unique historical elements coexist with the most modern comforts.",
-           "Category": "Boutique"
-       },
-       {
-           "@search.score": 0.8133763,
-           "HotelId": "3",
-           "HotelName": "Gastronomic Landscape Hotel",
-           "Description": "The Hotel stands out for its gastronomic excellence under the management of William Dough, who advises on and oversees all of the Hotel's restaurant services.",
-           "Category": "Resort and Spa"
-       }
-   ]
-   ```
+The vector query string is semantically similar to the full-text search string, but it includes terms that don't exist in the index. A keyword-only search for the vector query string returns zero results. However, vector search finds relevant matches based on meaning rather than exact keywords.
 
-## Create a semantic hybrid search
+The following examples start with a basic vector query and progressively add filters, keyword search, and semantic reranking.
 
-Here's the last query in the collection to extend the semantic hybrid search with the additional search text `historic hotel walk to restaurants and shopping`.
+#### Single vector search
 
-This search uses [SearchClient](/javascript/api/@azure/search-documents/searchclient).[search](/javascript/api/@azure/search-documents/searchclient#@azure-search-documents-searchclient-search) and the [VectorQuery](/javascript/api/@azure/search-documents/vectorquery) and [SearchOptions](/javascript/api/@azure/search-documents/searchoptions). 
+`searchSingle.js` demonstrates a basic scenario where you want to find document descriptions that closely match the vector query string. The `vectorQuery` object configures the vector search:
 
-To create a semantic hybrid search:
++ `kNearestNeighborsCount` limits how many results are returned based on vector similarity.
++ `fields` specifies the vector field to search against.
 
-1. Create a `searchSemanticHybrid.js` file in the `src` directory.
+```javascript
+const vectorQuery = {
+    vector: vector,
+    kNearestNeighborsCount: 5,
+    fields: ["DescriptionVector"],
+    kind: "vector",
+    exhaustive: true
+};
 
-1. Copy the following code into the file.
+const searchOptions = {
+    top: 7,
+    select: ["HotelId", "HotelName", "Description", "Category", "Tags"],
+    includeTotalCount: true,
+    vectorSearchOptions: {
+        queries: [vectorQuery],
+        filterMode: "postFilter"
+    }
+};
 
-    :::code language="javascript" source="~/azure-search-javascript-samples/quickstart-vector-js/src/searchSemanticHybrid.js" :::
+const results = await searchClient.search("*", searchOptions);
 
-1. Build and run the file.
+for await (const result of results.results) {
+    const doc = result.document;
+    console.log(`HotelId: ${doc.HotelId}, HotelName: ${doc.HotelName}, Score: ${result.score}`);
+}
+```
 
-    ```bash
-    node -r dotenv/config src/searchSemanticHybrid.js
-    ```
+#### Single vector search with a filter
 
-   The output of this code shows the relevant documents for the semantic hybrid search.
-
-    ```output
-    Using Azure Search endpoint: https://<search-service-name>.search.windows.net
-    Using Azure Search index: <vector-index-name>
-
-    
-    Semantic hybrid search found 7 then limited to top 5
-    - Score: 0.0317460335791111
-      Re-ranker Score: 2.6550590991973877
-      HotelId: 49
-      HotelName: Swirling Currents Hotel
-      Description: Spacious rooms, glamorous suites and residences, rooftop pool, walking access to shopping, dining, entertainment and the city center. Each room comes equipped with a microwave, a coffee maker and a minifridge. In-room entertainment includes complimentary W-Fi and flat-screen TVs.
-      Category: Suite
-    
-    - Score: 0.03279569745063782
-      Re-ranker Score: 2.599761724472046
-      HotelId: 4
-      HotelName: Sublime Palace Hotel
-      Description: Sublime Palace Hotel is located in the heart of the historic center of Sublime in an extremely vibrant and lively area within short walking distance to the sites and landmarks of the city and is surrounded by the extraordinary beauty of churches, buildings, shops and monuments. Sublime Cliff is part of a lovingly restored 19th century resort, updated for every modern convenience.
-      Category: Boutique
-    
-    - Score: 0.03125
-      Re-ranker Score: 2.3480887413024902
-      HotelId: 2
-      HotelName: Old Century Hotel
-      Description: The hotel is situated in a nineteenth century plaza, which has been expanded and renovated to the highest architectural standards to create a modern, functional and first-class hotel in which art and unique historical elements coexist with the most modern comforts. The hotel also regularly hosts events like wine tastings, beer dinners, and live music.
-      Category: Boutique
-    
-    - Score: 0.016393441706895828
-      Re-ranker Score: 2.2718777656555176
-      HotelId: 1
-      HotelName: Stay-Kay City Hotel
-      Description: This classic hotel is fully-refurbished and ideally located on the main commercial artery of the city in the heart of New York. A few minutes away is Times Square and the historic centre of the city, as well as other places of interest that make New York one of America's most attractive and cosmopolitan cities.
-      Category: Boutique
-    
-    - Score: 0.01515151560306549
-      Re-ranker Score: 2.0582215785980225
-      HotelId: 3
-      HotelName: Gastronomic Landscape Hotel
-      Description: The Gastronomic Hotel stands out for its culinary excellence under the management of William Dough, who advises on and oversees all of the Hotel's restaurant services.
-      Category: Suite
-    ```
+In Azure AI Search, [filters](../../vector-search-filters.md) apply to nonvector fields in an index. `searchSingleWithFilter.js` filters on the `Tags` field to filter out any hotels that don't provide free Wi-Fi.
 
-    You can think of the semantic ranking as a way to improve the relevance of search results by understanding the meaning behind the words in the query and the content of the documents. In this case, the semantic ranking helps to identify hotels that are not only relevant to the keywords but also match the intent of the query:
-    
-    Key takeaways: 
+```javascript
+const searchOptions = {
+    top: 7,
+    select: ["HotelId", "HotelName", "Description", "Category", "Tags"],
+    includeTotalCount: true,
+    filter: "Tags/any(tag: tag eq 'free wifi')", // Adding filter for "free wifi" tag
+    vectorSearchOptions: {
+        queries: [vectorQuery],
+        filterMode: "postFilter"
+    }
+};
 
-    - Vector search is specified through the `vectorSearchOptions` property. Keyword search is specified through the `semanticSearchOptions` property.
+const results = await searchClient.search("*", searchOptions);
+```
 
-    - In a hybrid search, you can integrate vector search with full-text search over keywords. Filters, spell check, and semantic ranking apply to textual content only, and not vectors. In this final query, there's no semantic `answer` because the system didn't produce one that was sufficiently strong.
+#### Single vector search with a geo filter
+
+You can specify a [geo-spatial filter](../../search-query-odata-geo-spatial-functions.md) to limit results to a specific geographic area. `searchSingleWithGeoFilter.js` specifies a geographic point (Washington D.C., using longitude and latitude coordinates) and returns hotels within 300 kilometers. The `filterMode` property determines when the filter runs. In this case, `postFilter` runs the filter after the vector search.
+
+```javascript
+const searchOptions = {
+    top: 5,
+    includeTotalCount: true,
+    select: ["HotelId", "HotelName", "Category", "Description", "Address/City", "Address/StateProvince"],
+    facets: ["Address/StateProvince"],
+    filter: "geo.distance(Location, geography'POINT(-77.03241 38.90166)') le 300",
+    vectorSearchOptions: {
+        queries: [vectorQuery],
+        filterMode: "postFilter"
+    }
+};
+```
 
-    - Actual results include more detail, including semantic captions and highlights. Results were modified for readability. To get the full structure of the response, run the request in the REST client.
+#### Hybrid search
+
+[Hybrid search](../../hybrid-search-overview.md) combines full-text and vector queries in a single request. `searchHybrid.js` runs both query types concurrently, and then uses Reciprocal Rank Fusion (RRF) to merge the results into a unified ranking. RRF uses the inverse of result rankings from each result set to produce a merged ranking. Notice that hybrid search scores are uniformly smaller than single-query scores.
+
+```javascript
+const vectorQuery = {
+    vector: vector,
+    kNearestNeighborsCount: 5,
+    fields: ["DescriptionVector"],
+    kind: "vector",
+    exhaustive: true
+};
+
+const searchOptions = {
+    top: 5,
+    includeTotalCount: true,
+    select: ["HotelId", "HotelName", "Description", "Category", "Tags"],
+    vectorSearchOptions: {
+        queries: [vectorQuery],
+        filterMode: "postFilter"
+    }
+};
+
+// Use search text for keyword search (hybrid search = vector + keyword)
+const searchText = "historic hotel walk to restaurants and shopping";
+const results = await searchClient.search(searchText, searchOptions);
+```
 
-## Clean up resources
+#### Semantic hybrid search
+
+`searchSemanticHybrid.js` demonstrates [semantic ranking](../../semantic-search-overview.md), which reranks results based on language understanding.
+
+```javascript
+const searchOptions = {
+    top: 5,
+    includeTotalCount: true,
+    select: ["HotelId", "HotelName", "Category", "Description"],
+    queryType: "semantic",
+    semanticSearchOptions: {
+        configurationName: "semantic-config"
+    },
+    vectorSearchOptions: {
+        queries: [vectorQuery],
+        filterMode: "postFilter"
+    }
+};
+
+const searchText = "historic hotel walk to restaurants and shopping";
+const results = await searchClient.search(searchText, searchOptions);
+
+for await (const result of results.results) {
+    console.log(`Score: ${result.score}, Re-ranker Score: ${result.rerankerScore}`);
+}
+```
 
-When you're working in your own subscription, it's a good idea at the end of a project to identify whether you still need the resources you created. Resources left running can cost you money. You can delete resources individually or delete the resource group to delete the entire set of resources.
+Compare these results with the hybrid search results from the previous query. Without semantic reranking, Sublime Palace Hotel ranks first because Reciprocal Rank Fusion (RRF) combines the text and vector scores to produce a merged result. After semantic reranking, Swirling Currents Hotel moves to the top spot.
 
-You can find and manage resources in the Azure portal by using the **All resources** or **Resource groups** link in the leftmost pane.
+The semantic ranker uses machine comprehension models to evaluate how well each result matches the intent of the query. Swirling Currents Hotel's description mentions `"walking access to shopping, dining, entertainment and the city center"`, which aligns closely with the search query's `"walk to restaurants and shopping"`. This semantic match for nearby dining and shopping elevates it above Sublime Palace Hotel, which doesn't emphasize walkable amenities in its description.
 
-Alternatively, to delete the vector index you created in this quickstart programmatically:
+Key takeaways:
 
-1. Create a `deleteIndex.js` file in the `src` directory.
-1. Add the dependencies, environment variables, and code to delete the index.
++ In a hybrid search, you can integrate vector search with full-text search over keywords. Filters and semantic ranking apply to textual content only, not vectors.
 
-    :::code language="javascript" source="~/azure-search-javascript-samples/quickstart-vector-js/src/deleteIndex.js" :::
++ Actual results include more detail, including semantic captions and highlights. This quickstart modifies results for readability. To get the full structure of the response, use REST to run the request.
 
-1. Build and run the file.
+## Clean up resources
 
-    ```bash
-    node -r dotenv/config src/deleteIndex.js
-    ```
+[!INCLUDE [resource-cleanup-paid](../resource-cleanup-paid.md)]
 
-## Next steps
+Otherwise, run the following command to delete the index you created in this quickstart.
 
-+ Review the repository of code samples for vector search capabilities in Azure AI Search for [JavaScript](https://github.com/Azure/azure-search-vector-samples/tree/main/demo-javascript).
\ No newline at end of file
+```bash
+node -r dotenv/config src/deleteIndex.js
+```

Summary

{
    "modification_type": "minor update",
    "modification_title": "ベクトル検索に関するJavaScriptクイックスタートのアップデート"
}

Explanation

この変更は、JavaScriptを使用したベクトル検索に関するクイックスタートドキュメントの重要な更新を示しています。主に、ユーザーがAzure AI Searchを利用する際の手順と説明を明確かつ実用的にすることを目的としています。

まず、クイックスタートの最初の文が改善されており、Azure AI Searchクライアントライブラリの役割が強調されています。ユーザーは、このライブラリを通じてベクトルインデックスの作成、読み込み、クエリの実行を行う方法を学ぶことができます。

また、必要な前提条件に関する情報が充実し、特にAzure AI Searchサービスの推奨プランについての詳細が追加されています。具体的には、Freeプランが利用可能である一方で、大規模なデータを処理する場合にはBasicプラン以上を推奨する内容が含まれています。

プロジェクトのセットアップに関する全体的な手順が整理され、GitHubからのサンプルリポジトリをクローンする方法が明確に示されています。その後、環境変数の設定や必要な依存関係のインストール手順も具体的に説明されています。これにより、ユーザーはすぐに開発環境を構築できるようになります。

コードの実行セクションでは、インデックスの作成やドキュメントのアップロードの手順が具体化され、実際のクエリ実行の際に得られる結果が詳細に説明されています。特に、ベクトル検索クエリとその結果の詳細が適切に与えられており、ユーザーは疑似コードを参考にして自分の実装を進めやすくなっています。

全体として、この変更はクイックスタート文書の使いやすさや理解しやすさを向上させ、特にAzure AI Searchを初めて使用する開発者にとってのガイドとしての役割を強化しています。ドキュメントが現在の開発環境やワークフローに対応していることを反映しており、実用的なリソースとなっています。

articles/search/includes/quickstarts/search-get-started-vector-python.md

Diff
@@ -4,789 +4,303 @@ author: rotabor
 ms.author: haileytapia
 ms.service: azure-ai-search
 ms.topic: include
-ms.date: 01/14/2026
+ms.date: 02/05/2026
 ms.custom: dev-focus
 ai-usage: ai-assisted
 ---
 
-In this quickstart, you use a Jupyter notebook to create, load, and query a [vector index](../../vector-store.md). The code performs these operations by using the [Azure AI Search client library for Python](/python/api/overview/azure/search-documents-readme), which provides an abstraction over the REST APIs to access index operations.
+In this quickstart, you use the [Azure AI Search client library for Python](/python/api/overview/azure/search-documents-readme) to create, load, and query a [vector index](../../vector-store.md). The Python client library provides an abstraction over the REST APIs for index operations.
 
 In Azure AI Search, a vector index has an index schema that defines vector and nonvector fields, a vector search configuration for algorithms that create the embedding space, and settings on vector field definitions that are evaluated at query time. [Indexes - Create or Update](/rest/api/searchservice/indexes/create-or-update) (REST API) creates the vector index.
 
-> [!NOTE]
-> This quickstart omits the vectorization step and provides inline embeddings. If you want to add [built-in data chunking and vectorization](../../vector-search-integrated-vectorization.md) over your own content, try the [**Import data (new)** wizard](../../search-get-started-portal-import-vectors.md) for an end-to-end walkthrough.
+> [!TIP]
+> + Want to get started right away? Download the [source code](https://github.com/Azure-Samples/azure-search-python-samples/tree/main/Quickstart-Vector-Search) on GitHub.
+> + This quickstart omits the vectorization step and provides inline embeddings. For [integrated vectorization](../../vector-search-integrated-vectorization.md) over your own content, try the [**Import data (new)** wizard](../../search-get-started-portal-import-vectors.md).
 
 ## Prerequisites
 
-+ An Azure account with an active subscription. [Create an account for free](https://azure.microsoft.com/pricing/purchase-options/azure-account?cid=msft_learn).
+- An Azure account with an active subscription. [Create an account for free](https://azure.microsoft.com/pricing/purchase-options/azure-account?cid=msft_learn).
 
-+ An [Azure AI Search service](../../search-create-service-portal.md).
+- An [Azure AI Search service](../../search-create-service-portal.md). You can use the Free tier for most of this quickstart, but we recommend Basic or higher for larger data files.
 
-    + You can use the Free tier for most of this quickstart, but we recommend Basic or higher for larger data files.
+- [Semantic ranker enabled on your search service](../../semantic-how-to-enable-disable.md) for the optional semantic hybrid query.
 
-    + For [keyless authentication](../../search-get-started-rbac.md) with Microsoft Entra ID, assign the **Search Index Data Contributor role** to your user account.
-    
-    + To run the semantic hybrid query, you must [enable semantic ranker](../../semantic-how-to-enable-disable.md).
+- [Python 3.8](https://www.python.org/downloads/) or later.
 
-+ The latest version of [Python](https://www.python.org/downloads/).
+- [Visual Studio Code](https://code.visualstudio.com/download) with the [Python](https://marketplace.visualstudio.com/items?itemName=ms-python.python) and [Jupyter](https://marketplace.visualstudio.com/items?itemName=ms-toolsai.jupyter) extensions.
 
-+ [Visual Studio Code](https://code.visualstudio.com/download) with the [Python](https://marketplace.visualstudio.com/items?itemName=ms-python.python) and [Jupyter](https://marketplace.visualstudio.com/items?itemName=ms-toolsai.jupyter) extensions.
+- [Git](https://git-scm.com/downloads) to clone the sample repository.
 
-+ [Git](https://git-scm.com/downloads) to clone the sample repo.
+- The [Azure CLI](/cli/azure/install-azure-cli) for keyless authentication with Microsoft Entra ID.
 
-## Get service information
+## Configure access
 
-Requests to the search endpoint must be authenticated and authorized. While it's possible to use API keys for this task, we recommend [using a keyless connection via Microsoft Entra ID](../../search-get-started-rbac.md).
+[!INCLUDE [resource authentication](../resource-authentication.md)]
 
-This quickstart uses `DefaultAzureCredential`, which simplifies authentication in both development and production scenarios. However, for production scenarios, you might have more advanced requirements that require a different approach. See [Authenticate Python apps to Azure services by using the Azure SDK for Python](/azure/developer/python/sdk/authentication/overview) to understand all of your options.
+## Get endpoint
 
-## Clone the code and setup environment
+[!INCLUDE [resource endpoint](../resource-endpoint.md)]
 
-1. Clone the repo containing the code for this quickstart. 
+## Set up the environment
+
+1. Use Git to clone the sample repository.
 
    ```bash
    git clone https://github.com/Azure-Samples/azure-search-python-samples
    ```
-  
-1. In Visual Studio Code, open the `Quickstart-Vector-Search` folder.
 
-1. Rename the `sample.env` file to `.env`.
+1. Navigate to the quickstart folder and open it in Visual Studio Code.
 
-1. Set `AZURE_SEARCH_ENDPOINT` to your search service URL, which should be similar to `https://mydemo.search.windows.net`.
+   ```bash
+   cd azure-search-python-samples/Quickstart-Vector-Search
+   code .
+   ```
 
-1. Set `AZURE_SEARCH_INDEX_NAME` to a unique name for your index. You can also use the default `vector-search-quickstart` name.
+1. In `sample.env`, replace the placeholder value for `AZURE_SEARCH_ENDPOINT` with the URL you obtained in [Get endpoint](#get-endpoint).
 
-1. Select **View** > **New Terminal**, and then run the following commands to create and activate a virtual environment.
+1. Rename `sample.env` to `.env`.
 
    ```bash
-   python -m venv .venv
-   source .venv/scripts/activate
-   where python
+   mv sample.env .env
    ```
-   
-   > [!Note] 
-   > + This step assumes you're using Git Bash in your terminal and running on Windows. If you're using a different shell and/or operating system, adjust these instructions to your specific environment.
-   >
-   > + The `where python` command validates that you're working from the virtual environment by listing `python.exe` in the `Quickstart-Vector-Search\.venv\` folder and other locations from your machine's directory.
 
-1. If prompted, allow Visual Studio Code to use the new environment.
+1. Open `vector-search-quickstart.ipynb`.
 
-1. Install the required libraries.
+1. Press **Ctrl+Shift+P**, select **Notebook: Select Notebook Kernel**, and follow the prompts to create a virtual environment. Select **requirements.txt** for the dependencies.
 
-   ```bash
-   pip install requirements.txt
+   When complete, you should see a `.venv` folder in the project directory.
+
+1. For keyless authentication with Microsoft Entra ID, sign in to your Azure account. If you have multiple subscriptions, select the one that contains your Azure AI Search service.
+
+   ```azurecli
+   az login
    ```
 
-1. Open the `vector-search-quickstart.ipynb` file.
+## Run the code
 
-1. Run the `Install packages and set variables` code cell to load the environment variables.
+1. Run the `Install packages and set variables` cell to load environment variables and verify the package installation.
 
-   ```python
-   # Load environment variables from .env file
-   # Rename the samples.env to .env and fill in the values
-   from azure.identity import DefaultAzureCredential
-   from dotenv import load_dotenv
-   import os
+1. Run the remaining cells sequentially to create a vector index, upload documents, and run different types of vector queries.
 
-   load_dotenv(override=True) # take environment variables from .env.
+### Output
 
-   search_endpoint = os.environ["AZURE_SEARCH_ENDPOINT"]
-   credential = DefaultAzureCredential()
-   index_name = os.getenv("AZURE_SEARCH_INDEX", "vector-search-quickstart")
+Each code cell prints its output to the notebook. The following example is the output of `Single vector search`, which shows vector search results ranked by similarity score.
 
-   print(f"Using Azure Search endpoint: {search_endpoint}")
-   print(f"Using Azure Search index: {index_name}")
-   !pip list 
-   ```
-   The output includes some of the installed packages.
-
-   ```output
-   Using Azure Search endpoint: https://<search-service-name>.search.windows.net
-   Using Azure Search index: <vector-index-name>
-   Package                 Version
-   ----------------------- -----------
-   aiohappyeyeballs        2.6.1
-   aiohttp                 3.12.13
-   aiosignal               1.3.2
-   asttokens               3.0.0
-   attrs                   25.3.0
-   azure-ai-agents         1.0.0
-   azure-ai-projects       1.0.0b11
-   azure-common            1.1.28
-   azure-core              1.34.0
-   azure-identity          1.23.0
-   azure-search-documents  11.6.0b12
-   azure-storage-blob      12.25.1
-   ...
-   ```
-  
-## Create a vector index
-
-The code in `vector-search-quickstart.ipynb` uses several methods from the `azure.search.documents` library to create the vector index and searchable fields.
-
-To create the vector index:
-
-1. Run the `Create an index` code cell.
-
-   ```python
-   from azure.search.documents.indexes import SearchIndexClient
-   from azure.search.documents import SearchClient
-   from azure.search.documents.models import VectorizedQuery
-   from azure.search.documents.indexes.models import (
-       SimpleField,
-       ComplexField,
-       SearchField,
-       SearchFieldDataType,    
-       SearchableField,
-       SearchIndex,
-       SemanticConfiguration,
-       SemanticField,
-       SemanticPrioritizedFields,
-       SemanticSearch,
-       VectorSearch, 
-       VectorSearchProfile,
-       HnswAlgorithmConfiguration,
-       ExhaustiveKnnAlgorithmConfiguration    
-   )
-   
-   # Create a search schema
-   index_client = SearchIndexClient(
-       endpoint=search_endpoint, credential=credential)
-   fields = [
-       SimpleField(name="HotelId", type=SearchFieldDataType.String, key=True, filterable=True),
-       SearchableField(name="HotelName", type=SearchFieldDataType.String, sortable=True),
-       SearchableField(name="Description", type=SearchFieldDataType.String),
-       SearchField(
-           name="DescriptionVector",
-           type=SearchFieldDataType.Collection(SearchFieldDataType.Single),
-           searchable=True,
-           vector_search_dimensions=1536,
-           vector_search_profile_name="my-vector-profile"
-       ),
-       SearchableField(name="Category", type=SearchFieldDataType.String, sortable=True, filterable=True, facetable=True),
-       SearchField(name="Tags", type=SearchFieldDataType.Collection(SearchFieldDataType.String), searchable=True, filterable=True, facetable=True),
-       SimpleField(name="ParkingIncluded", type=SearchFieldDataType.Boolean, filterable=True, sortable=True, facetable=True),
-       SimpleField(name="LastRenovationDate", type=SearchFieldDataType.DateTimeOffset, filterable=True, sortable=True, facetable=True),
-       SimpleField(name="Rating", type=SearchFieldDataType.Double, filterable=True, sortable=True, facetable=True),
-       ComplexField(name="Address", fields=[
-           SearchableField(name="StreetAddress", type=SearchFieldDataType.String),
-           SearchableField(name="City", type=SearchFieldDataType.String, filterable=True, sortable=True, facetable=True),
-           SearchableField(name="StateProvince", type=SearchFieldDataType.String, filterable=True, sortable=True, facetable=True),
-           SearchableField(name="PostalCode", type=SearchFieldDataType.String, filterable=True, sortable=True, facetable=True),
-           SearchableField(name="Country", type=SearchFieldDataType.String, filterable=True, sortable=True, facetable=True),
-       ]),
-       SimpleField(name="Location", type=SearchFieldDataType.GeographyPoint, filterable=True, sortable=True),
-   ]
-   
-   vector_search = VectorSearch(
-           algorithms=[
-               HnswAlgorithmConfiguration(name="my-hnsw-vector-config-1", kind="hnsw"),
-               ExhaustiveKnnAlgorithmConfiguration(name="my-eknn-vector-config", kind="exhaustiveKnn")
-           ],
-           profiles=[
-               VectorSearchProfile(name="my-vector-profile", algorithm_configuration_name="my-hnsw-vector-config-1")
-           ]
-       )
-   
-   semantic_config = SemanticConfiguration(
-           name="my-semantic-config",
-           prioritized_fields=SemanticPrioritizedFields(
-              title_field=SemanticField(field_name="HotelName"), 
-              content_fields=[SemanticField(field_name="Description")], 
-              keywords_fields=[SemanticField(field_name="Category")]
-           )
-       )
-   
-   # Create the semantic settings with the configuration
-   semantic_search = SemanticSearch(configurations=[semantic_config])
-   
-   semantic_settings = SemanticSearch(configurations=[semantic_config])
-   scoring_profiles = []
-   suggester = [{'name': 'sg', 'source_fields': ['Tags', 'Address/City', 'Address/Country']}]
-   
-   # Create the search index with the semantic settings
-   index = SearchIndex(name=index_name, fields=fields, vector_search=vector_search, semantic_search=semantic_search)
-   result = index_client.create_or_update_index(index)
-   print(f' {result.name} created')
-   ```
+```output
+Total results: 7
+- HotelId: 48, HotelName: Nordick's Valley Motel, Category: Boutique
+- HotelId: 13, HotelName: Luxury Lion Resort, Category: Luxury
+- HotelId: 4, HotelName: Sublime Palace Hotel, Category: Boutique
+- HotelId: 49, HotelName: Swirling Currents Hotel, Category: Suite
+- HotelId: 2, HotelName: Old Century Hotel, Category: Boutique
+```
 
-   If the index is created successfully, the following output is displayed below the code cell.
+## Understand the code
 
-   ```output
-   vector-search-quickstart created
-   ```
+[!INCLUDE [understand code note](../understand-code-note.md)]
 
-   Key takeaways:
-
-   + You define an index by creating a list of fields. Each field is created using a helper method that defines the field type and its settings.
-
-   + This particular index supports multiple search capabilities, such as:
-
-      + Full-text keyword search (`SearchableField(name="HotelName", ...)`, `SearchableField(name="Description", ...)`)
-
-      + Vector search (enables hybrid search by collocating vector and nonvector fields) fields (`DescriptionVector`)
-
-      + Semantic search (`semantic_search=SemanticSearch(configurations=[semantic_config])`)
-
-      + Faceted search (`facetable=True`)
-
-      + Geo-spatial search (`Location` field is `GeographyPoint`)
-
-      + Filtering, sorting (many fields marked filterable and sortable)
-
-## Upload documents to the index
-
-Creating and loading the index are separate steps. You created the index schema in the previous step. You now need to load documents into the index.
- 
-In Azure AI Search, the index stores all searchable content, while the search engine executes queries against that index.
-
-To upload documents to the index:
-
-1. Run the `Create documents payload` code cell.
-
-   ```python
-      # Create a documents payload
-      documents = [
-          {
-              "@search.action": "mergeOrUpload",
-              "HotelId": "1",
-              "HotelName": "Stay-Kay City Hotel",
-              "Description": "This classic hotel is fully-refurbished and ideally located on the main commercial artery of the city in the heart of New York. A few minutes away is Times Square and the historic center of the city, as well as other places of interest that make New York one of America's most attractive and cosmopolitan cities.",
-              "DescriptionVector": [-0.048865054,-0.020307425,
-              # <truncated>
-              -0.018120624,-0.012772904],
-              "Category": "Boutique",
-              "Tags": [
-                  "view",
-                  "air conditioning",
-                  "concierge"
-              ],
-              "ParkingIncluded": "false",
-              "LastRenovationDate": "2022-01-18T00:00:00Z",
-              "Rating": 3.60,
-              "Address": {
-                  "StreetAddress": "677 5th Ave",
-                  "City": "New York",
-                  "StateProvince": "NY",
-                  "PostalCode": "10022",
-                  "Country": "USA"
-              },
-              "Location": {
-                  "type": "Point",
-                  "coordinates": [
-                      -73.975403,
-                      40.760586
-                  ]
-              }
-          },
-          # <truncated>
-      ]
-   ```
-   
-   This cell loads a variable named `documents` with a JSON object describing each document, along with the vectorized version of the article's description. This vector enables similarity search, where matching is based on meaning rather than exact keywords.
-   
-   > [!IMPORTANT]
-   > The code in this example isn't runnable. Several characters or lines are removed for brevity. Instead, run the code in the Jupyter notebook.
-   
-1. Run the `Upload the documents` code cell.
-
-   ```python
-   # Upload documents to the index
-   search_client = SearchClient(endpoint=search_endpoint,
-                         index_name=index_name,
-                         credential=credential)
-   try:
-       result = search_client.upload_documents(documents=documents)
-       for r in result:
-           print(f"Key: {r.key}, Succeeded: {r.succeeded}, ErrorMessage: {r.error_message}")
-   except Exception as ex:
-       print("Failed to upload documents:", ex)
-
-   # Create the index client which will be used later in the query examples
-   index_client = SearchIndexClient(endpoint=search_endpoint, credential=credential)
-   ```
+Now that you've run the code, let's break down the key steps:
 
-   This creates an instance of the search client by calling the `SearchClient()` constructor and then calling the `upload_documents()` method on the object. 
+1. [Create a vector index](#create-a-vector-index)
+1. [Upload documents to the index](#upload-documents-to-the-index)
+1. [Query the index](#query-the-index)
 
-   After you run the cell, the status of each document is printed below it.
+### Create a vector index
 
-   ```output
-   Key: 1, Succeeded: True, ErrorMessage: None
-   Key: 2, Succeeded: True, ErrorMessage: None
-   Key: 3, Succeeded: True, ErrorMessage: None
-   Key: 4, Succeeded: True, ErrorMessage: None
-   Key: 48, Succeeded: True, ErrorMessage: None
-   Key: 49, Succeeded: True, ErrorMessage: None
-   Key: 13, Succeeded: True, ErrorMessage: None
-   ```
+Before you add content to Azure AI Search, you must create an index to define how the content is stored and structured.
 
-   Key takeaways:
+The index schema is organized around hotel content. Sample data consists of vector and nonvector descriptions of fictitious hotels. The `Create an index` cell in the notebook creates the index schema, including the vector field `DescriptionVector`.
 
-   + Your code interacts with a specific search index hosted in your Azure AI Search service through the `SearchClient`, which is the main object provided by the `azure-search-documents` package. The `SearchClient` provides access to index operations, such as:
+```python
+fields = [
+    SimpleField(name="HotelId", type=SearchFieldDataType.String, key=True, filterable=True),
+    SearchableField(name="HotelName", type=SearchFieldDataType.String, sortable=True),
+    SearchableField(name="Description", type=SearchFieldDataType.String),
+    SearchField(
+        name="DescriptionVector",
+        type=SearchFieldDataType.Collection(SearchFieldDataType.Single),
+        searchable=True,
+        vector_search_dimensions=1536,
+        vector_search_profile_name="my-vector-profile"
+    ),
+    SearchableField(name="Category", type=SearchFieldDataType.String, sortable=True, filterable=True, facetable=True),
+    SearchField(name="Tags", type=SearchFieldDataType.Collection(SearchFieldDataType.String), searchable=True, filterable=True, facetable=True),
+    # Additional fields omitted for brevity
+]
+```
 
-      + Data ingestion: `upload_documents()`, `merge_documents()`, `delete_documents()`, etc.
-      
-      + Search operations: `search()`, `autocomplete()`, `suggest()`
+Key takeaways:
 
-      + Index management operations: `get_index_statistics()`, `get_document_count()`
++ You define an index by creating a list of fields. Each field is created using a helper method that defines the field type and its settings.
 
-   + Vector fields contain floating point values. The dimensions attribute has a minimum of 2 and a maximum of 4096 floating point values each. This quickstart sets the dimensions attribute to 1,536 because that's the size of embeddings generated by the `text-embedding-ada-002` model.
++ This particular index supports multiple search capabilities:
 
-## Run queries
+    + [Full-text search](../../search-lucene-query-architecture.md) (`SearchableField`)
 
-Now that documents are loaded, you can issue vector queries against them by calling `search_client.search()` and passing in a `VectorizedQuery` object, the fields you want returned, the number of results, and so on.
+    + [Vector search](../../vector-search-overview.md) (`DescriptionVector` with `vector_search_profile_name`)
 
-Queries in this section:
+    + [Semantic ranking](../../semantic-search-overview.md) (`SemanticConfiguration`)
 
-+ [Single vector search](#single-vector-search)
-+ [Single vector search with filter](#single-vector-search-with-filter)
-+ [Hybrid search](#hybrid-search)
-+ [Semantic hybrid search](#semantic-hybrid-search)
+    + [Faceted search](../../search-faceted-navigation.md) (fields marked with `facetable`)
 
-### Create the vector query string
+    + [Geo-spatial search](../../search-query-odata-geo-spatial-functions.md) (`Location` field with `SearchFieldDataType.GeographyPoint`)
 
-The example vector queries are based on two strings:
+    + [Filtering](../../search-filters.md) and sorting (fields marked with `filterable` and `sortable`)
 
-+ Search string: `historic hotel walk to restaurants and shopping`
-+ Vector query string: `quintessential lodging near running trails, eateries, retail` (vectorized into a mathematical representation)
++ The `vector_search_dimensions` property must match the output size of your embedding model. This quickstart uses 1,536 dimensions to match the `text-embedding-ada-002` model.
 
-The vector query string is semantically similar to the search string, but it includes terms that don't exist in the search index. If you do a keyword search for `quintessential lodging near running trails, eateries, retail`, results are zero. We use this example to show how you can get relevant results even if there are no matching terms.
++ The `VectorSearch` configuration defines the Approximate Nearest Neighbor (ANN) algorithm. Supported algorithms include Hierarchical Navigable Small World (HNSW) and exhaustive K-Nearest Neighbor (KNN). For more information, see [Relevance in vector search](../../vector-search-ranking.md).
 
-1. Run the `Create the vector query string` code cell. This loads the `vector` variable with the vectorized query data required to run all of the searches in the next sections.
+### Upload documents to the index
 
-### Single vector search
+Newly created indexes are empty. To populate an index and make it searchable, you must upload JSON documents that conform to the index schema.
 
-The first example demonstrates a basic scenario where you want to find document descriptions that closely match the search string.
+In Azure AI Search, documents serve as both inputs for indexing and outputs for queries. For simplicity, this quickstart provides sample hotel documents with precomputed vectors. In production scenarios, content is often pulled from connected data sources and transformed into JSON using [indexers](../../search-indexer-overview.md).
 
-1. Run the `Single vector search` code cell. This block contains the request to query the search index.
+The `Create documents payload` and `Upload the documents` cells load documents into the index.
 
-   ```python
-   # IMPORTANT: Before you run this code, make sure the documents were successfully
-   # created in the previous step. Sometimes it may take a few seconds for the index to be ready.
-   # Check the "Document count" for the index in the Azure portal.
-   
-   # Execute vector search
-   if vector:
-       try:
-           vector_query = VectorizedQuery(
-               vector=vector,
-               k_nearest_neighbors=5,
-               fields="DescriptionVector",
-               kind="vector",
-               exhaustive=True
-           )
+```python
+documents = [
+    # List of hotel documents with embedded 1536-dimension vectors
+    # Each document contains: HotelId, HotelName, Description, DescriptionVector,
+    # Category, Tags, ParkingIncluded, LastRenovationDate, Rating, Address, Location
+]
+
+search_client = SearchClient(
+    endpoint=search_endpoint,
+    index_name=index_name,
+    credential=credential
+)
+
+result = search_client.upload_documents(documents=documents)
+for r in result:
+    print(f"Key: {r.key}, Succeeded: {r.succeeded}, ErrorMessage: {r.error_message}")
+```
 
-           results = search_client.search(
-               vector_queries=[vector_query],
-               select=["HotelId", "HotelName", "Description", "Category", "Tags"],
-               top=5,
-               include_total_count=True
-           )
-   
-           print(f"Total results: {results.get_count()}")
-           for result in results:
-               doc = result  # result is a dict-like object
-               print(f"- HotelId: {doc['HotelId']}, HotelName: {doc['HotelName']}, Category: {doc.get('Category')}")
-       except Exception as ex:
-           print("Vector search failed:", ex)
-   else:
-      print("No vector loaded, skipping search.")
-   ```
+Your code interacts with a specific search index hosted in your Azure AI Search service through the `SearchClient`, which is the main object provided by the [`azure-search-documents`](/python/api/overview/azure/search-documents-readme) package. The `SearchClient` provides access to index operations, such as:
 
-   This vector query is shortened for brevity. The `vectorQueries.vector` contains the vectorized text of the query input, `fields` determines which vector fields are searched, and `k` specifies the number of nearest neighbors to return.
++ Data ingestion: `upload_documents()`, `merge_documents()`, `delete_documents()`
 
-   The vector query string is `quintessential lodging near running trails, eateries, retail`, which is vectorized into 1,536 embeddings for this query.
++ Search operations: `search()`, `autocomplete()`, `suggest()`
 
-   <!-- retain numeric references to 5 and 7. Too hard to spot these values if they are written out. -->
-   The response for the vector equivalent of `quintessential lodging near running trails, eateries, retail` consists of 7 results but the code specifies `top=5` so only the first 5 results are returned. Furthermore, only the fields specified by the `select` are returned. 
+### Query the index
 
-   `search_client.search()` returns a dict-like object. Each result provides a search score, which can be accessed using `score = result.get("@search.score", "N/A")`. While not displayed in this example, in a similarity search, the response always includes `k` results ordered by the value similarity score.
+The queries in the notebook demonstrate different search patterns. The example vector queries are based on two strings:
 
-   After you run the cell, the status of each document is printed below it.
++ Full-text search string: `"historic hotel walk to restaurants and shopping"`
 
-   ```output
-   Total results: 5
-   - HotelId: 48, HotelName: Nordick's Valley Motel, Category: Boutique
-   - HotelId: 13, HotelName: Luxury Lion Resort, Category: Luxury
-   - HotelId: 4, HotelName: Sublime Palace Hotel, Category: Boutique
-   - HotelId: 49, HotelName: Swirling Currents Hotel, Category: Suite
-   - HotelId: 2, HotelName: Old Century Hotel, Category: Boutique
-   ```
++ Vector query string: `"quintessential lodging near running trails, eateries, retail"` (vectorized into a mathematical representation)
 
-### Single vector search with filter
-
-You can add filters, but the filters are applied to the nonvector content in your index. In this example, the filter applies to the `Tags` field to filter out any hotels that don't provide free Wi-Fi.
-
-To create a single vector search with a filter:
-
-1. Run the `Single vector search with filter` code cell. This cell contains the request to query the search index.
-
-    ```python
-   if vector:
-       try:
-           vector_query = VectorizedQuery(
-               vector=vector,
-               k_nearest_neighbors=5,
-               fields="DescriptionVector",
-               kind="vector",
-               exhaustive=True
-           )
-   
-           results = search_client.search(
-               vector_queries=[vector_query],
-               filter="Tags/any(tag: tag eq 'free wifi')",  # <--- NOTICE THE FILTER IS ADDED HERE
-               select=["HotelId", "HotelName", "Description", "Category", "Tags"],
-               top=7,
-               include_total_count=True
-           )
-   
-           print(f"Total filtered results: {results.get_count()}")
-           for result in results:
-               doc = result
-               print(f"- HotelId: {doc['HotelId']}, HotelName: {doc['HotelName']}, Tags: {doc.get('Tags')}")
-       except Exception as ex:
-           print("Vector search with filter failed:", ex)
-   else:
-       print("No vector loaded, skipping search.")
-    ``` 
-
-   After you run the cell, the status of each document is printed below it:
-
-   ```output
-   Total filtered results: 2
-   - HotelId: 48, HotelName: Nordick's Valley Motel, Tags: ['continental breakfast', 'air conditioning', 'free wifi']
-   - HotelId: 2, HotelName: Old Century Hotel, Tags: ['pool', 'free wifi', 'air conditioning', 'concierge']
-   ```
+The vector query string is semantically similar to the full-text search string, but it includes terms that don't exist in the index. A keyword-only search for the vector query string returns zero results. However, vector search finds relevant matches based on meaning rather than exact keywords.
 
-   The query was the same as the previous [single vector search example](#single-vector-search), but it includes a post-processing exclusion filter and returns only the two hotels that have free Wi-Fi.
-
-1. The next filter example uses a geo filter. Run the `Vector query with a geo filter` code cell. This block contains the request to query the search index.
-
-   ```python
-   if vector:
-      try:
-         vector_query = VectorizedQuery(
-         vector=vector,
-         k_nearest_neighbors=5,
-         fields="DescriptionVector",
-         kind="vector",
-         exhaustive=True
-      )
-   
-      results = search_client.search(
-         include_total_count=True,
-         top=5,
-         select=[
-             "HotelId", "HotelName", "Category", "Description", "Address/City", "Address/StateProvince"
-         ],
-         facets=["Address/StateProvince"],
-         filter="geo.distance(Location, geography'POINT(-77.03241 38.90166)') le 300",
-         vector_filter_mode="postFilter",
-         vector_queries=[vector_query]
-      )
-   
-      print(f"Total semantic hybrid results: {results.get_count()}")
-      for result in results:
-         doc = result
-         score = result.get("@search.score", "N/A")
-         print(f"- HotelId: {doc['HotelId']}")
-         print(f"  HotelName: {doc['HotelName']}")
-         print(f"  Score: {score}")
-         print(f"  City/State: {doc['Address']['City']}, {doc['Address']['StateProvince']}")
-         print(f"  Description: {doc.get('Description')}\n")
-
-      except Exception as ex:
-         print("Semantic hybrid search failed:", ex)
-   else:
-      print("No vector loaded, skipping search.")
-   ```
-   
-   The query was the same as the previous [single vector search example](#single-vector-search), but it includes a post-processing exclusion filter and returns only the two hotels within 300 kilometers.
-   
-   ```output
-   Total semantic hybrid results: 2
-   - HotelId: 48
-     HotelName: Nordick's Valley Motel
-     Score: 0.6605852246284485
-     City/State: Washington D.C., null
-     Description: Only 90 miles (about 2 hours) from the nation's capital and nearby most everything the historic valley has to offer. Hiking? Wine Tasting? Exploring the caverns? It's all nearby and we have specially priced packages to help make our B&B your home base for fun while visiting the valley.
-
-   - HotelId: 49
-     HotelName: Swirling Currents Hotel
-     Score: 0.602634072303772
-     City/State: Arlington, VA
-     Description: Spacious rooms, glamorous suites and residences, rooftop pool, walking access to shopping, dining, entertainment and the city center. Each room comes equipped with a microwave, a coffee maker and a minifridge. In-room entertainment includes complimentary Wi-Fi and flat-screen TVs.
-   ```
+The following examples start with a basic vector query and progressively add filters, keyword search, and semantic reranking.
 
-### Hybrid search
-
-Hybrid search consists of keyword queries and vector queries in a single search request. This example runs the vector query and full-text search concurrently:
-
-+ Search string: `historic hotel walk to restaurants and shopping`
-+ Vector query string: `quintessential lodging near running trails, eateries, retail` (vectorized into a mathematical representation)
-
-To create a hybrid search:
-
-1. Run the `Hybrid search` code cell. This block contains the request to query the search index.
-
-   ```python
-   if vector:
-       try:
-           vector_query = VectorizedQuery(
-               vector=vector,
-               k_nearest_neighbors=5,
-               fields="DescriptionVector",
-               kind="vector",
-               exhaustive=True
-           )
-
-           results = search_client.search(
-               include_total_count=True,
-               search_text="historic hotel walk to restaurants and shopping",  # keyword part
-               select=["HotelId", "HotelName", "Description", "Category", "Tags"],
-               top=5,
-               vector_queries=[vector_query]
-           )
-   
-           print(f"Total hybrid results: {results.get_count()}")
-           for result in results:
-               doc = result
-               score = result.get("@search.score", "N/A")
-               print(f"- Score: {score}")
-               print(f"  HotelId: {doc['HotelId']}")            
-               print(f"  HotelName: {doc['HotelName']}")
-               print(f"  Description: {doc.get('Description')}")
-               print(f"  Category: {doc.get('Category')}")
-               print(f"  Tags: {doc.get('Tags', 'N/A')}\n")
-
-      except Exception as ex:
-         print("Hybrid search failed:", ex)
-   else:
-      print("No vector loaded, skipping search.")    
-   ```
+#### Single vector search
 
-1. Review the output below the cell.
-
-   ```output
-   Total hybrid results: 7
-   - Score: 0.03279569745063782
-     HotelId: 4
-     HotelName: Sublime Palace Hotel
-     Description: Sublime Palace Hotel is located in the heart of the historic center of Sublime in an extremely vibrant and lively area within short walking distance to the sites and landmarks of the city and is surrounded by the extraordinary beauty of churches, buildings, shops and monuments. Sublime Cliff is part of a lovingly restored 19th century resort, updated for every modern convenience.
-     Category: Boutique
-     Tags: ['concierge', 'view', 'air conditioning']
-   
-   - Score: 0.032522473484277725
-     HotelId: 13
-     HotelName: Luxury Lion Resort
-     Description: Unmatched Luxury. Visit our downtown hotel to indulge in luxury accommodations. Moments from the stadium and transportation hubs, we feature the best in convenience and comfort.
-     Category: Luxury
-     Tags: ['bar', 'concierge', 'restaurant']
-   
-   - Score: 0.03205128386616707
-     HotelId: 48
-     HotelName: Nordick's Valley Motel
-     Description: Only 90 miles (about 2 hours) from the nation's capital and nearby most everything the historic valley has to offer. Hiking? Wine Tasting? Exploring the caverns? It's all nearby and we have specially priced packages to help make our B&B your home base for fun while visiting the valley.
-     Category: Boutique
-     Tags: ['continental breakfast', 'air conditioning', 'free wifi']
-   
-   - Score: 0.0317460335791111
-     HotelId: 49
-     HotelName: Swirling Currents Hotel
-     Description: Spacious rooms, glamorous suites and residences, rooftop pool, walking access to shopping, dining, entertainment and the city center. Each room comes equipped with a microwave, a coffee maker and a minifridge. In-room entertainment includes complimentary Wi-Fi and flat-screen TVs.
-     Category: Suite
-     Tags: ['air conditioning', 'laundry service', '24-hour front desk service']
-   
-   - Score: 0.03125
-     HotelId: 2
-     HotelName: Old Century Hotel
-     Description: The hotel is situated in a nineteenth century plaza, which has been expanded and renovated to the highest architectural standards to create a modern, functional and first-class hotel in which art and unique historical elements coexist with the most modern comforts. The hotel also regularly hosts events like wine tastings, beer dinners, and live music.
-     Category: Boutique
-     Tags: ['pool', 'free wifi', 'air conditioning', 'concierge']
-   ```
+The `Single vector search` cell demonstrates a basic scenario where you want to find document descriptions that closely match the vector query string. `VectorizedQuery` configures the vector search:
 
-   Because Reciprocal Rank Fusion (RRF) merges results, it helps to review the inputs. The following results are from the full-text query only. The top two results are Sublime Palace Hotel and Luxury Lion Resort. The Sublime Palace Hotel has a stronger BM25 relevance score.
-
-   ```json
-   {
-       "@search.score": 2.2626662,
-       "HotelName": "Sublime Palace Hotel",
-       "Description": "Sublime Palace Hotel is located in the heart of the historic center of Sublime in an extremely vibrant and lively area within short walking distance to the sites and landmarks of the city and is surrounded by the extraordinary beauty of churches, buildings, shops and monuments. Sublime Palace is part of a lovingly restored 1800 palace."
-   },
-   {
-       "@search.score": 0.86421645,
-       "HotelName": "Luxury Lion Resort",
-       "Description": "Unmatched Luxury.  Visit our downtown hotel to indulge in luxury accommodations. Moments from the stadium, we feature the best in comfort"
-   },
-   ```
++ `k_nearest_neighbors` limits how many results are returned based on vector similarity.
++ `fields` specifies the vector field to search against.
 
-   In the vector-only query, which uses HNSW for finding matches, the Sublime Palace Hotel drops to the fourth position. Luxury Lion, which was second in the full-text search and third in the vector search, doesn't experience the same range of fluctuation, so it appears as a top match in a homogenized result set.
-   
-   ```json
-   "value": [
-       {
-           "@search.score": 0.857736,
-           "HotelId": "48",
-           "HotelName": "Nordick's Valley Motel",
-           "Description": "Only 90 miles (about 2 hours) from the nation's capital and nearby most everything the historic valley has to offer.  Hiking? Wine Tasting? Exploring the caverns?  It's all nearby and we have specially priced packages to help make our B&B your home base for fun while visiting the valley.",
-           "Category": "Boutique"
-       },
-       {
-           "@search.score": 0.8399129,
-           "HotelId": "49",
-           "HotelName": "Swirling Currents Hotel",
-           "Description": "Spacious rooms, glamorous suites and residences, rooftop pool, walking access to shopping, dining, entertainment and the city center.",
-           "Category": "Luxury"
-       },
-       {
-           "@search.score": 0.8383954,
-           "HotelId": "13",
-           "HotelName": "Luxury Lion Resort",
-           "Description": "Unmatched Luxury.  Visit our downtown hotel to indulge in luxury accommodations. Moments from the stadium, we feature the best in comfort",
-           "Category": "Resort and Spa"
-       },
-       {
-           "@search.score": 0.8254346,
-           "HotelId": "4",
-           "HotelName": "Sublime Palace Hotel",
-           "Description": "Sublime Palace Hotel is located in the heart of the historic center of Sublime in an extremely vibrant and lively area within short walking distance to the sites and landmarks of the city and is surrounded by the extraordinary beauty of churches, buildings, shops and monuments. Sublime Palace is part of a lovingly restored 1800 palace.",
-           "Category": "Boutique"
-       },
-       {
-           "@search.score": 0.82380056,
-           "HotelId": "1",
-           "HotelName": "Stay-Kay City Hotel",
-           "Description": "The hotel is ideally located on the main commercial artery of the city in the heart of New York.",
-           "Category": "Boutique"
-       },
-       {
-           "@search.score": 0.81514084,
-           "HotelId": "2",
-           "HotelName": "Old Century Hotel",
-           "Description": "The hotel is situated in a  nineteenth century plaza, which has been expanded and renovated to the highest architectural standards to create a modern, functional and first-class hotel in which art and unique historical elements coexist with the most modern comforts.",
-           "Category": "Boutique"
-       },
-       {
-           "@search.score": 0.8133763,
-           "HotelId": "3",
-           "HotelName": "Gastronomic Landscape Hotel",
-           "Description": "The Hotel stands out for its gastronomic excellence under the management of William Dough, who advises on and oversees all of the Hotel’s restaurant services.",
-           "Category": "Resort and Spa"
-       }
-   ]
-   ```
+```python
+vector_query = VectorizedQuery(
+    vector=vector,
+    k_nearest_neighbors=5,
+    fields="DescriptionVector",
+    kind="vector",
+    exhaustive=True
+)
+
+results = search_client.search(
+    vector_queries=[vector_query],
+    select=["HotelId", "HotelName", "Description", "Category", "Tags"],
+    top=5,
+    include_total_count=True
+)
+```
 
-### Semantic hybrid search
-
-Here's the last query in the collection. This hybrid query specifies the semantic query type and a semantic configuration, demonstrating that you can build a hybrid query that uses semantic reranking.
-
-To create a semantic hybrid search:
-
-1. Run the `Semantic hybrid search` code cell. This code block contains the request to query the search index.
-
-   ```python
-   if semantic_hybrid_query_vector:
-      try:
-         vector_query = VectorizedQuery(
-            vector=vector,
-            k_nearest_neighbors=5,
-            fields="DescriptionVector",
-            kind="vector",
-            exhaustive=True
-         )
-
-         results = search_client.search(
-            include_total_count=True,
-            search_text="historic hotel walk to restaurants and shopping",
-            select=[
-               "HotelId", "HotelName", "Category", "Description"
-            ],
-            query_type="semantic",
-            semantic_configuration_name="my-semantic-config",
-            top=7,            
-            vector_queries=[vector_query]
-         )
-
-         print(f"Total semantic hybrid results: {results.get_count()}")
-         for result in results:
-            doc = result
-            score = result.get("@search.score", "N/A")
-            reranker_score = result.get("@search.reranker_score", "N/A")
-            print(f"- Score: {score}")
-            print(f"  Re-ranker Score: {reranker_score}")
-            print(f"  HotelId: {doc['HotelId']}")
-            print(f"  HotelName: {doc['HotelName']}")
-            print(f"  Description: {doc.get('Description')}")
-            print(f"  Category: {doc.get('Category')}")
-
-   except Exception as ex:
-      print("Semantic hybrid search failed:", ex)
-   else:
-      print("No vector loaded, skipping search.")
-   ```
+#### Single vector search with a filter
 
-1. Review the output below the cell.
-
-   With semantic ranking, the Swirling Currents Hotel now moves into the top spot.
-
-   ```output
-   Total semantic hybrid results: 7
-   - Score: 0.0317460335791111
-     Re-ranker Score: 2.6550590991973877
-     HotelId: 49
-     HotelName: Swirling Currents Hotel
-     Description: Spacious rooms, glamorous suites and residences, rooftop pool, walking access to shopping, dining, entertainment and the city center. Each room comes equipped with a microwave, a coffee maker and a minifridge. In-room entertainment includes complimentary Wi-Fi and flat-screen TVs.
-     Category: Suite
-   - Score: 0.03279569745063782
-     Re-ranker Score: 2.599761724472046
-     HotelId: 4
-     HotelName: Sublime Palace Hotel
-     Description: Sublime Palace Hotel is located in the heart of the historic center of Sublime in an extremely vibrant and lively area within short walking distance to the sites and landmarks of the city and is surrounded by the extraordinary beauty of churches, buildings, shops and monuments. Sublime Cliff is part of a lovingly restored 19th century resort, updated for every modern convenience.
-     Category: Boutique
-   - Score: 0.03125
-     Re-ranker Score: 2.3480887413024902
-     HotelId: 2
-     HotelName: Old Century Hotel
-     Description: The hotel is situated in a nineteenth century plaza, which has been expanded and renovated to the highest architectural standards to create a modern, functional and first-class hotel in which art and unique historical elements coexist with the most modern comforts. The hotel also regularly hosts events like wine tastings, beer dinners, and live music.
-     Category: Boutique
-   - Score: 0.016393441706895828
-     Re-ranker Score: 2.2718777656555176
-     HotelId: 1
-     HotelName: Stay-Kay City Hotel
-     Description: This classic hotel is fully-refurbished and ideally located on the main commercial artery of the city in the heart of New York. A few minutes away is Times Square and the historic center of the city, as well as other places of interest that make New York one of America's most attractive and cosmopolitan cities.
-     Category: Boutique
-   - Score: 0.01515151560306549
-     Re-ranker Score: 2.0582215785980225
-     HotelId: 3
-     HotelName: Gastronomic Landscape Hotel
-     Description: The Gastronomic Hotel stands out for its culinary excellence under the management of William Dough, who advises on and oversees all of the Hotel’s restaurant services.
-     Category: Suite
-   ```
+In Azure AI Search, [filters](../../vector-search-filters.md) apply to nonvector fields in an index. The `Single vector search with filter` cell filters on the `Tags` field to filter out any hotels that don't provide free Wi-Fi.
 
-    You can think of the semantic ranking as a way to improve the relevance of search results by understanding the meaning behind the words in the query and the content of the documents. In this case, the semantic ranking helps to identify hotels that are not only relevant to the keywords but also match the intent of the query:
-    
-    Key takeaways:
-    
-    + Vector search is specified through the `vectors.value` property. Keyword search is specified through the `search` property.
-    
-    + In a hybrid search, you can integrate vector search with full-text search over keywords. Filters, spell check, and semantic ranking apply to textual content only, and not vectors. In this final query, there's no semantic `answer` because the system didn't produce one that was sufficiently strong.
-    
-    + Actual results include more detail, including semantic captions and highlights. Results were modified for readability. To get the full structure of the response, run the request in the REST client.
+```python
+# vector_query omitted for brevity
+
+results = search_client.search(
+    vector_queries=[vector_query],
+    filter="Tags/any(tag: tag eq 'free wifi')",
+    select=["HotelId", "HotelName", "Description", "Category", "Tags"],
+    top=7,
+    include_total_count=True
+)
+```
 
-## Clean up resources
+#### Single vector search with a geo filter
+
+You can specify a [geo-spatial filter](../../search-query-odata-geo-spatial-functions.md) to limit results to a specific geographic area. The `Single vector search with geo filter` cell specifies a geographic point (Washington D.C., using longitude and latitude coordinates) and returns hotels within 300 kilometers. The `vector_filter_mode` parameter determines when the filter runs. In this case, `postFilter` runs the filter after the vector search.
+
+```python
+# vector_query omitted for brevity
+
+results = search_client.search(
+    include_total_count=True,
+    top=5,
+    select=[
+        "HotelId", "HotelName", "Category", "Description", "Address/City", "Address/StateProvince"
+    ],
+    facets=["Address/StateProvince"],
+    filter="geo.distance(Location, geography'POINT(-77.03241 38.90166)') le 300",
+    vector_filter_mode="postFilter",
+    vector_queries=[vector_query]
+)
+```
+
+#### Hybrid search
+
+[Hybrid search](../../hybrid-search-overview.md) combines full-text and vector queries in a single request. The `Hybrid search` cell runs both query types concurrently, and then uses Reciprocal Rank Fusion (RRF) to merge the results into a unified ranking. RRF uses the inverse of result rankings from each result set to produce a merged ranking. Notice that hybrid search scores are uniformly smaller than single-query scores.
 
-When you're working in your own subscription, it's a good idea at the end of a project to identify whether you still need the resources you created. Resources left running can cost you money. You can delete resources individually or delete the resource group to delete the entire set of resources.
+```python
+# vector_query omitted for brevity
+
+results = search_client.search(
+    search_text="historic hotel walk to restaurants and shopping",
+    vector_queries=[vector_query],
+    select=["HotelId", "HotelName", "Description", "Category", "Tags"],
+    top=5,
+    include_total_count=True
+)
+```
 
-You can find and manage resources in the Azure portal by using the **All resources** or **Resource groups** link in the leftmost pane.
+#### Semantic hybrid search
 
-Alternatively, you can run the `Clean up` code cell to delete the vector index created in this quickstart.
+The `Semantic hybrid search` cell demonstrates [semantic ranking](../../semantic-search-overview.md), which reranks results based on language understanding.
 
 ```python
-index_client.delete_index(index_name)
-print(f"Index '{index_name}' deleted successfully.")
+# vector_query omitted for brevity
+
+results = search_client.search(
+    search_text="historic hotel walk to restaurants and shopping",
+    vector_queries=[vector_query],
+    select=["HotelId", "HotelName", "Category", "Description"],
+    query_type="semantic",
+    semantic_configuration_name="my-semantic-config",
+    top=5,
+    include_total_count=True
+)
 ```
 
-## Next steps
+Compare these results with the hybrid search results from the previous query. Without semantic reranking, Sublime Palace Hotel ranks first because Reciprocal Rank Fusion (RRF) combines the text and vector scores to produce a merged result. After semantic reranking, Swirling Currents Hotel moves to the top spot.
+
+The semantic ranker uses machine comprehension models to evaluate how well each result matches the intent of the query. Swirling Currents Hotel's description mentions `"walking access to shopping, dining, entertainment and the city center"`, which aligns closely with the search query's `"walk to restaurants and shopping"`. This semantic match for nearby dining and shopping elevates it above Sublime Palace Hotel, which doesn't emphasize walkable amenities in its description.
+
+Key takeaways:
+
++ In a hybrid search, you can integrate vector search with full-text search over keywords. Filters and semantic ranking apply to textual content only, not vectors.
+
++ Actual results include more detail, including semantic captions and highlights. This quickstart modifies results for readability. To get the full structure of the response, use REST to run the request.
+
+## Clean up resources
+
+[!INCLUDE [resource-cleanup-paid](../resource-cleanup-paid.md)]
 
-+ Review the repository of code samples for vector search capabilities in Azure AI Search for [Python](https://github.com/Azure/azure-search-vector-samples/tree/main/demo-python).
-+ Review the other Python and Azure AI Search code samples in the [azure-search-python-samples repo](https://github.com/Azure-Samples/azure-search-python-samples).
+Otherwise, you can run the `Clean up` code cell to delete the index you created in this quickstart.

Summary

{
    "modification_type": "minor update",
    "modification_title": "ベクトル検索に関するPythonクイックスタートの更新"
}

Explanation

この変更は、Pythonを使用したベクトル検索に関するクイックスタート文書の重要な更新を示しています。主な目的は、このクイックスタートを通じてAzure AI Searchの利用方法を明確にし、特に初心者ユーザーの体験を向上させることです。

まず、インデックスの作成、ドキュメントのアップロード、およびクエリの実行を行うためのPythonクライアントライブラリに関する説明が簡潔に再構成されています。すべての手順が、Jupyterノートブックの環境においてどのように実行されるかに焦点を合わせています。

更新された内容には、ユーザーが必要な前提条件を容易に理解できるようにするため、Azure AI Searchサービスの推奨プランに関する情報や、Pythonのバージョン要件が含まれています。特に、Freeプランの利用が可能であることと、大規模なデータにはBasicプラン以上が推奨されることが明確に示されています。

プロジェクトのセットアップ手順も整理され、GitHubリポジトリからのサンプルコードのクローン方法が具体的に説明されています。また、環境変数の設定手順も更新され、特に.envファイルの管理についての手順が簡単に理解できるように改善されています。

コードを実行する際のセクションでは、ユーザーが如何にしてインデックスを作成し、ドキュメントをアップロードし、さまざまなベクトルクエリを実行できるかが具体的に示されています。特に、クエリ結果の表示方法や、ベクトル検索における関連性スコアの解釈についても詳細に説明されています。

全体的に、この変更はクイックスタート文書のユーザビリティと理解しやすさを向上させ、特にAzure AI Searchを初めて使用する開発者に向けてより良いガイダンスを提供するものとなっています。これにより、ユーザーはより実践的に機能を利用できるようになり、学習の効率が高まることが期待されます。

articles/search/includes/quickstarts/search-get-started-vector-rest.md

Summary

{
    "modification_type": "minor update",
    "modification_title": "REST APIを使用したベクトル検索のクイックスタートの更新"
}

Explanation

この変更は、REST APIを使用したAzure AI Searchのベクトル検索に関するクイックスタートドキュメントの改訂を示しています。このアップデートによって、ユーザーはREST APIを通じてベクトルインデックスを作成し、利用する方法をより明確に理解できるようになっています。

主な改訂内容は、クイックスタートの文書が最新のベストプラクティスや手順を反映するように更新された点です。アプローチが簡素化され、手順がより明確に、かつ実行可能な形式で示されています。また、必要な前提条件や関連するAPIエンドポイントについての詳細が強調されています。

変更点には、インデックス作成方法、ドキュメントのアップロード手続き、クエリの実行方法など、REST APIを利用した具体的な操作手順が含まれており、実際のHTTPリクエスト例とそのレスポンスの解釈が提供されています。これにより、開発者はAzure AI Searchを用いたアプリケーション開発において、必要な情報を迅速に取得し、効果的に実装を行うことができます。

このように、ドキュメントのアップデートは、特にREST APIを活用する開発者にとって、リファレンス資料としての価値を高め、学習体験を向上させるものとなっています。全体的に、明確で簡潔な手順は、ユーザーが自信を持ってREST APIを使用する助けとなるでしょう。

articles/search/includes/quickstarts/search-get-started-vector-typescript.md

Diff
@@ -4,583 +4,428 @@ author: diberry
 ms.author: haileytapia
 ms.service: azure-ai-search
 ms.topic: include
-ms.date: 01/14/2026
+ms.date: 02/05/2026
 ms.custom: dev-focus
 ai-usage: ai-assisted
 ---
 
-In this quickstart, you use TypeScript to create, load, and query a [vector index](../../vector-store.md). The code performs these operations by using the [Azure AI Search client library for TypeScript](/javascript/api/overview/azure/search-documents-readme), which provides an abstraction over the REST APIs to access index operations.
+In this quickstart, you use the [Azure AI Search client library for JavaScript](/javascript/api/overview/azure/search-documents-readme) (compatible with TypeScript) to create, load, and query a [vector index](../../vector-store.md). The JavaScript client library provides an abstraction over the REST APIs for index operations.
 
 In Azure AI Search, a vector index has an index schema that defines vector and nonvector fields, a vector search configuration for algorithms that create the embedding space, and settings on vector field definitions that are evaluated at query time. [Indexes - Create or Update](/rest/api/searchservice/indexes/create-or-update) (REST API) creates the vector index.
 
-> [!NOTE]
-> This quickstart omits the vectorization step and provides inline embeddings. If you want to add [built-in data chunking and vectorization](../../vector-search-integrated-vectorization.md) over your own content, try the [**Import data (new)** wizard](../../search-get-started-portal-import-vectors.md) for an end-to-end walkthrough.
+> [!TIP]
+> + Want to get started right away? Download the [source code](https://github.com/Azure-Samples/azure-search-javascript-samples/tree/main/quickstart-vector-ts) on GitHub.
+> + This quickstart omits the vectorization step and provides inline embeddings. For [integrated vectorization](../../vector-search-integrated-vectorization.md) over your own content, try the [**Import data (new)** wizard](../../search-get-started-portal-import-vectors.md).
 
 ## Prerequisites
 
-+ An Azure account with an active subscription. [Create an account for free](https://azure.microsoft.com/pricing/purchase-options/azure-account?cid=msft_learn).
-
-+ An [Azure AI Search service](../../search-create-service-portal.md).
+- An Azure account with an active subscription. [Create an account for free](https://azure.microsoft.com/pricing/purchase-options/azure-account?cid=msft_learn).
 
-    + You can use the Free tier for most of this quickstart, but we recommend Basic or higher for larger data files.
+- An [Azure AI Search service](../../search-create-service-portal.md). You can use the Free tier for most of this quickstart, but we recommend Basic or higher for larger data files.
 
-    + For [keyless authentication](../../search-get-started-rbac.md) with Microsoft Entra ID, assign the **Search Index Data Contributor role** to your user account.
-    
-    + To run the semantic hybrid query, you must [enable semantic ranker](../../semantic-how-to-enable-disable.md).
+- [Semantic ranker enabled on your search service](../../semantic-how-to-enable-disable.md) for the optional semantic hybrid query.
 
-+ [Visual Studio Code](https://code.visualstudio.com/download).
+- [Node.js 20 LTS](https://nodejs.org/en/download/) or later to run the compiled code.
 
-+ [Node.JS with LTS](https://nodejs.org/en/download/).
-+ [TypeScript](https://www.typescriptlang.org/download). You can globally install TypeScript using npm:
+- [TypeScript](https://www.typescriptlang.org/download/) to compile TypeScript to JavaScript.
 
-   ```bash
-   npm install -g typescript
-   ```
+- [Visual Studio Code](https://code.visualstudio.com/download).
 
-## Get service information
+- [Git](https://git-scm.com/downloads) to clone the sample repository.
 
-In the remaining sections, you set up API calls to Azure OpenAI and Azure AI Search. Get the service endpoints so that you can provide them as variables in your code.
+- The [Azure CLI](/cli/azure/install-azure-cli) for keyless authentication with Microsoft Entra ID.
 
-To get the service endpoint:
+## Configure access
 
-1. Sign in to the [Azure portal](https://portal.azure.com).
+[!INCLUDE [resource authentication](../resource-authentication.md)]
 
-1. [Find your search service](https://portal.azure.com/#blade/HubsExtension/BrowseResourceBlade/resourceType/Microsoft.Search%2FsearchServices).
+## Get endpoint
 
-1. On the **Overview** home page, copy the URL. An example endpoint might look like `https://example.search.windows.net`. 
+[!INCLUDE [resource endpoint](../resource-endpoint.md)] 
 
-## Set up the Node.JS project
+## Set up the environment
 
-1. Start Visual Studio Code in a new directory.
-
-   ```bash
-   mkdir vector-quickstart && cd vector-quickstart
-   code .
-   ```
-1. Create a new package for ESM modules in your project directory.
+1. Use Git to clone the sample repository.
 
    ```bash
-   npm init -y
-   npm pkg set type=module
+   git clone https://github.com/Azure-Samples/azure-search-javascript-samples
    ```
 
-   This creates a `package.json` file with default values.
-
-1. Edit `package.json` to include a build script. Add the following line to the `scripts` section.
+1. Navigate to the quickstart folder and open it in Visual Studio Code.
 
-   ```json
-   "build": "tsc"
+   ```bash
+   cd azure-search-javascript-samples/quickstart-vector-ts
+   code .
    ```
 
-1. Install the following npm packages.
+1. In `sample.env`, replace the placeholder value for `AZURE_SEARCH_ENDPOINT` with the URL you obtained in [Get endpoint](#get-endpoint).
 
-   ```bash
-   npm install @azure/identity @azure/search-documents dotenv @types/node
-   ``` 
-
-1. Create a `src` directory in your project directory.
+1. Rename `sample.env` to `.env`.
 
    ```bash
-   mkdir src
+   mv sample.env .env
    ```
 
-1. Create a `tsconfig.json` file in the project directory for ESM with the following content.
+1. Install the dependencies.
 
-    ```json
-    {
-      "compilerOptions": {
-        "target": "esnext",
-        "module": "NodeNext",
-        "moduleResolution": "nodenext",
-        "rootDir": "./src",
-        "outDir": "./dist/",
-        "esModuleInterop": true,
-        "forceConsistentCasingInFileNames": true,
-        "strict": true,
-        "skipLibCheck": true,
-        "declaration": true,
-        "sourceMap": true,
-        "resolveJsonModule": true,
-        "moduleDetection": "force", // Add this for ESM
-        "allowSyntheticDefaultImports": true // Helpful for ESM interop
-      },
-      "include": [
-        "src/**/*.ts"
-      ]
-    }
+   ```bash
+   npm install
    ```
 
-## Set up environment variables for local development
+   When the installation completes, you should see a `node_modules` folder in the project directory.
 
-1. Create a `.env` file in your `vector-quickstart` project directory.
-1. Add the following environment variables to the `.env` file, replacing the values with your own service endpoints and keys.
+1. For keyless authentication with Microsoft Entra ID, sign in to your Azure account. If you have multiple subscriptions, select the one that contains your Azure AI Search service.
 
-   ```plaintext
-   AZURE_SEARCH_ENDPOINT=<YOUR AZURE AI SEARCH ENDPOINT>
-   AZURE_SEARCH_INDEX_NAME=hotels-vector-quickstart
+   ```azurecli
+   az login
    ```
 
-## Sign in to Azure
-
-You're using Microsoft Entra ID and role assignments for the connection. Make sure you're logged in to the same tenant and subscription as Azure AI Search and Azure OpenAI. You can use the Azure CLI on the command line to show current properties, change properties, and to sign in. For more information, see [Connect without keys](../../search-get-started-rbac.md). 
-
-Run each of the following commands in sequence.
-
-```azurecli
-az account show
-
-az account set --subscription <PUT YOUR SUBSCRIPTION ID HERE>
-
-az login --tenant <PUT YOUR TENANT ID HERE>
-```
-
-You should now be logged in to Azure from your local device.
-
-
-## Create a vector index
-
-In this section, you create a vector index in Azure AI Search with [SearchIndexClient](/javascript/api/@azure/search-documents/searchindexclient).[createOrUpdateIndex](/javascript/api/@azure/search-documents/searchindexclient#@azure-search-documents-searchindexclient-createorupdateindex). The index schema defines the fields, including the vector field `DescriptionVector`. Once the index is created, you upload documents to the index. The documents contain the vectorized version of the article's description, which enables similarity search based on meaning rather than exact keywords.
-
-To create the vector index:
+## Run the code
 
-1. Create a `createIndex.ts` file in the `src` directory.
+1. Create a vector index.
 
-1. Copy the following code into the file. 
-
-    :::code language="typescript" source="~/azure-search-javascript-samples/quickstart-vector-ts/src/createIndex.ts":::
-
-    The code file adds the dependencies, environment variables, and JavaScript type for `HotelDocument` to the top of the file. Add the `createIndex` function to create the index. The function defines the index schema, including the vector field `DescriptionVector`.
-
-1. Build and run the file.
-
-    ```console
+    ```bash
     npm run build && node -r dotenv/config dist/createIndex.js
     ```
-    The output of this code shows that the index is created successfully.
-
-    ```console
-    Using Azure Search endpoint: https://my-service.search.windows.net
-    Using index name: hotels-vector-quickstart
-    Creating index...
-    hotels-vector-quickstart created
-    ```
-
-   Key takeaways:
-
-   + You define an index by creating a list of fields. 
-
-   + This particular index supports multiple search capabilities, such as:
-
-      + Full-text keyword search (`searchable`)
-
-      + Vector search (enables hybrid search by collocating vector and nonvector fields) fields (`DescriptionVector` with `vectorSearchProfileName`)
-
-      + Semantic search 
-
-      + Faceted search (`searchSuggester`)
 
-      + Geo-spatial search (`Location` field with `geo.distance`)
+1. Load documents that contain precomputed embeddings.
 
-      + Filtering, sorting (many fields marked filterable and sortable)
-
-
-## Upload documents to the index
-
-Creating and loading the index are separate steps. You created the index schema in the previous step. You now need to load documents into the index with [SearchClient](/javascript/api/@azure/search-documents/searchclient).[uploadDocuments](/javascript/api/%40azure/search-documents/searchclient#@azure-search-documents-searchclient-uploaddocuments). The documents contain the vectorized version of the article's description, which enables similarity search based on meaning rather than exact keywords.
-
-In Azure AI Search, the index stores all searchable content, while the search engine executes queries against that index.
-
-To upload documents to the index:
-
-1. Create a `uploadDocuments.ts` file in the `src` directory.
-1. Copy the following code into the file.
-
-    :::code language="typescript" source="~/azure-search-javascript-samples/quickstart-vector-ts/src/uploadDocuments.ts" :::
-
-    This code loads variable documents with a JSON object describing each document, along with the vectorized version of the article's description. This vector enables similarity search, where matching is based on meaning rather than exact keywords.
-
-    Because this quickstart article searches the index immediately, the `waitUntilIndexed` function waits until the index is ready for search operations. This is important because the index needs to be fully populated with documents before you can perform searches.
-
-1. Build and run the file.
-
-    ```console
+    ```bash
     npm run build && node -r dotenv/config dist/uploadDocuments.js
     ```
-    The output of this code shows that the documents are indexed and ready for search.
-
-    ```console
-    Uploading documents...
-    Key: 1, Succeeded: true, ErrorMessage: none
-    Key: 2, Succeeded: true, ErrorMessage: none
-    Key: 3, Succeeded: true, ErrorMessage: none
-    Key: 4, Succeeded: true, ErrorMessage: none
-    Key: 48, Succeeded: true, ErrorMessage: none
-    Key: 49, Succeeded: true, ErrorMessage: none
-    Key: 13, Succeeded: true, ErrorMessage: none
-    Waiting for indexing... Current count: 0
-    All documents indexed successfully.
-    ```
-
-    Key takeaways:
 
-    * Your code interacts with a specific search index hosted in your Azure AI Search service through the `SearchClient`, which is the main object provided by the @azure/search-documents package. The `SearchClient` provides access to index operations, such as:
+1. Run a vector search query.
 
-        * Data ingestion: `uploadDocuments`, `mergeDocuments`, `deleteDocuments`, and so on.
-
-        * Search operations: `search`, `autocomplete`, `suggest`
-
-        * Index management operations: `createIndex`, `deleteIndex`, `getIndex`, and so on.
+    ```bash
+    npm run build && node -r dotenv/config dist/searchSingle.js
+    ```
 
-    * Vector fields contain floating point values. The dimensions attribute has a minimum of 2 and a maximum of 4096 floating point values each. This quickstart sets the dimensions attribute to 1,536 because that's the size of embeddings generated by the `text-embedding-ada-002` model.
+1. (Optional) Run additional query variations.
 
-## Create the query as a vector
+    ```bash
+    npm run build && node -r dotenv/config dist/searchSingleWithFilter.js
+    npm run build && node -r dotenv/config dist/searchSingleWithFilterGeo.js
+    npm run build && node -r dotenv/config dist/searchHybrid.js
+    npm run build && node -r dotenv/config dist/searchSemanticHybrid.js
+    ```
 
-The example vector queries are based on two strings:
+> [!NOTE]
+> The `npm run build` command compiles the TypeScript files in `src/` to JavaScript in `dist/`.
 
-+ Search string: `historic hotel walk to restaurants and shopping`
-+ Vector query string: `quintessential lodging near running trails, eateries, retail` (vectorized into a mathematical representation)
+### Output
 
-The vector query string is semantically similar to the search string, but it includes terms that don't exist in the search index. If you do a keyword search for `quintessential lodging near running trails, eateries, retail`, results are zero. We use this example to show how you can get relevant results even if there are no matching terms.
+The output of `createIndex.ts` shows the index name and confirmation.
 
-Create a `queryVector.ts` file in the `src` directory and add the code to create the query vector.
+```output
+Using Azure Search endpoint: https://<search-service-name>.search.windows.net
+Using index name: hotels-vector-quickstart
+Creating index...
+hotels-vector-quickstart created
+```
 
-:::code language="typescript" source="~/azure-search-javascript-samples/quickstart-vector-ts/src/queryVector.ts" :::
+The output of `uploadDocuments.ts` shows the success status for each indexed document.
+
+```output
+Uploading documents...
+Key: 1, Succeeded: true, ErrorMessage: none
+Key: 2, Succeeded: true, ErrorMessage: none
+Key: 3, Succeeded: true, ErrorMessage: none
+Key: 4, Succeeded: true, ErrorMessage: none
+Key: 48, Succeeded: true, ErrorMessage: none
+Key: 49, Succeeded: true, ErrorMessage: none
+Key: 13, Succeeded: true, ErrorMessage: none
+All documents indexed successfully.
+```
 
-This code is used in the following sections to perform vector searches. The query vector is created using an embedding model from Azure OpenAI.
+The output of `searchSingle.ts` shows vector search results ranked by similarity score.
 
-## Create a single vector search
+```output
+Single Vector search found 5
+- HotelId: 48, HotelName: Nordick's Valley Motel, Tags: ["continental breakfast","air conditioning","free wifi"], Score 0.6605852
+- HotelId: 13, HotelName: Luxury Lion Resort, Tags: ["bar","concierge","restaurant"], Score 0.6333684
+- HotelId: 4, HotelName: Sublime Palace Hotel, Tags: ["concierge","view","air conditioning"], Score 0.605672
+- HotelId: 49, HotelName: Swirling Currents Hotel, Tags: ["air conditioning","laundry service","24-hour front desk service"], Score 0.6026341
+- HotelId: 2, HotelName: Old Century Hotel, Tags: ["pool","free wifi","air conditioning","concierge"], Score 0.57902366
+```
 
-The first example demonstrates a basic scenario where you want to find document descriptions that closely match the search string using the [SearchClient](/javascript/api/@azure/search-documents/searchclient).[search](/javascript/api/@azure/search-documents/searchclient#@azure-search-documents-searchclient-search) and the [VectorQuery](/javascript/api/@azure/search-documents/vectorquery) and [SearchOptions](/javascript/api/@azure/search-documents/searchoptions).
+## Understand the code
 
-To create a single vector search:
+[!INCLUDE [understand code note](../understand-code-note.md)]
 
-1. Create a `searchSingle.ts` file in the `src` directory.
+Now that you've run the code, let's break down the key steps:
 
-1. Copy the following code into the file.
+1. [Create a vector index](#create-a-vector-index)
+1. [Upload documents to the index](#upload-documents-to-the-index)
+1. [Query the index](#query-the-index)
 
-    :::code language="typescript" source="~/azure-search-javascript-samples/quickstart-vector-ts/src/searchSingle.ts" :::
+### Create a vector index
 
-    The vectorQuery contains the configuration of the vectorized query including the vectorized text of the query input as `vector`,  `fields` determines which vector fields are searched, and `kNearestNeighborsCount` specifies the number of nearest neighbors to return.
+Before you add content to Azure AI Search, you must create an index to define how the content is stored and structured.
 
-    The vector query string is `quintessential lodging near running trails, eateries, retail`, which is vectorized into 1,536 embeddings for this query.
+The index schema is organized around hotel content. Sample data consists of vector and nonvector descriptions of fictitious hotels. The following code in `createIndex.ts` creates the index schema, including the vector field `DescriptionVector`.
 
-1. Build and run the file.
+```typescript
+const searchFields: SearchField[] = [
+    { name: "HotelId", type: "Edm.String", key: true, sortable: true, filterable: true, facetable: true },
+    { name: "HotelName", type: "Edm.String", searchable: true, filterable: true },
+    { name: "Description", type: "Edm.String", searchable: true },
+    {
+        name: "DescriptionVector",
+        type: "Collection(Edm.Single)",
+        searchable: true,
+        vectorSearchDimensions: 1536,
+        vectorSearchProfileName: "vector-profile"
+    },
+    { name: "Category", type: "Edm.String", filterable: true, facetable: true },
+    { name: "Tags", type: "Collection(Edm.String)", filterable: true },
+    // Additional fields: ParkingIncluded, LastRenovationDate, Rating, Address, Location
+];
+
+const vectorSearch: VectorSearch = {
+    profiles: [
+        {
+            name: "vector-profile",
+            algorithmConfigurationName: "vector-search-algorithm"
+        }
+    ],
+    algorithms: [
+        {
+            name: "vector-search-algorithm",
+            kind: "hnsw",
+            parameters: { m: 4, efConstruction: 400, efSearch: 1000, metric: "cosine" }
+        }
+    ]
+};
+
+const semanticSearch: SemanticSearch = {
+    configurations: [
+        {
+            name: "semantic-config",
+            prioritizedFields: {
+                contentFields: [{ name: "Description" }],
+                keywordsFields: [{ name: "Category" }],
+                titleField: { name: "HotelName" }
+            }
+        }
+    ]
+};
+
+const searchIndex: SearchIndex = {
+    name: indexName,
+    fields: searchFields,
+    vectorSearch: vectorSearch,
+    semanticSearch: semanticSearch,
+    suggesters: [{ name: "sg", searchMode: "analyzingInfixMatching", sourceFields: ["HotelName"] }]
+};
+
+const result = await indexClient.createOrUpdateIndex(searchIndex);
+```
 
-    ```console
-    npm run build && node -r dotenv/config dist/searchSingle.js
-    ```
+Key takeaways:
 
-    The output of this code shows the relevant docs for the query `quintessential lodging near running trails, eateries, retail`. 
-
-    ```console
-    Using Azure Search endpoint: https://ai-search-dib-2.search.windows.net
-    Using index name: hotels-vector-quickstart-0627-4
-    
-    
-    Single Vector search found 5
-    - HotelId: 48, HotelName: Nordick's Valley Motel, Tags: ["continental breakfast","air conditioning","free wifi"], Score 0.6605852
-    - HotelId: 13, HotelName: Luxury Lion Resort, Tags: ["bar","concierge","restaurant"], Score 0.6333684
-    - HotelId: 4, HotelName: Sublime Palace Hotel, Tags: ["concierge","view","air conditioning"], Score 0.605672
-    - HotelId: 49, HotelName: Swirling Currents Hotel, Tags: ["air conditioning","laundry service","24-hour front desk service"], Score 0.6026341
-    - HotelId: 2, HotelName: Old Century Hotel, Tags: ["pool","free wifi","air conditioning","concierge"], Score 0.57902366
-    ```
++ You define an index by creating a list of fields.
 
-    The response for the vector equivalent of `quintessential lodging near running trails, eateries, retail` consists of 5 results with only the fields specified by the select returned.
++ This particular index supports multiple search capabilities:
 
-## Create a single vector search with a filter
+    + [Full-text search](../../search-lucene-query-architecture.md) (`searchable: true`)
 
-You can add filters, but the filters are applied to the nonvector content in your index. In this example, the filter applies to the `Tags` field to filter out any hotels that don't provide free Wi-Fi. This search uses [SearchClient](/javascript/api/@azure/search-documents/searchclient).[search](/javascript/api/@azure/search-documents/searchclient#@azure-search-documents-searchclient-search) and the [VectorQuery](/javascript/api/@azure/search-documents/vectorquery) and [SearchOptions](/javascript/api/@azure/search-documents/searchoptions). 
+    + [Vector search](../../vector-search-overview.md) (`DescriptionVector` with `vectorSearchProfileName`)
 
-To create a single vector search with a filter:
+    + [Semantic ranking](../../semantic-search-overview.md) (`semanticSearch`)
 
-1. Create a `searchSingleWithFilter.ts` file in the `src` directory.
+    + [Faceted search](../../search-faceted-navigation.md) (fields marked with `facetable`)
 
-1. Copy the following code into the file.
+    + [Geo-spatial search](../../search-query-odata-geo-spatial-functions.md) (`Location` field with `Edm.GeographyPoint`)
 
-    :::code language="typescript" source="~/azure-search-javascript-samples/quickstart-vector-ts/src/searchSingleWithFilter.ts" :::
+    + [Filtering](../../search-filters.md) and sorting (fields marked with `filterable` and `sortable`)
 
-    Add the dependencies, environment variables, and the same search functionality as the previous search with a post-processing exclusion filter added for hotels with `free wifi`.
++ The `vectorSearchDimensions` property must match the output size of your embedding model. This quickstart uses 1,536 dimensions to match the `text-embedding-ada-002` model.
 
-1. Build and run the file.
++ The `vectorSearch` configuration defines the Approximate Nearest Neighbor (ANN) algorithm. Supported algorithms include Hierarchical Navigable Small World (HNSW) and exhaustive K-Nearest Neighbor (KNN). For more information, see [Relevance in vector search](../../vector-search-ranking.md).
 
-    ```console
-    npm run build && node -r dotenv/config dist/searchSingleWithFilter.js
-    ```
+### Upload documents to the index
 
-    The output of this code shows the relevant documents for the query with the filter for `free wifi` applied:
+Newly created indexes are empty. To populate an index and make it searchable, you must upload JSON documents that conform to the index schema.
 
-    ```console
-    Using Azure Search endpoint: https://ai-search-dib-2.search.windows.net
-    Using index name: hotels-vector-quickstart-0627-4
-    
-    
-    Single Vector search found 2
-    - HotelId: 48, HotelName: Nordick's Valley Motel, Tags: ["continental breakfast","air conditioning","free wifi"], Score 0.6605852
-    - HotelId: 2, HotelName: Old Century Hotel, Tags: ["pool","free wifi","air conditioning","concierge"], Score 0.57902366
-    ```
+In Azure AI Search, documents serve as both inputs for indexing and outputs for queries. For simplicity, this quickstart provides sample hotel documents with precomputed vectors. In production scenarios, content is often pulled from connected data sources and transformed into JSON using [indexers](../../search-indexer-overview.md).
 
-## Create a search with a geospatial filter    
+The following code in `uploadDocuments.ts` uploads documents to your search service.
 
-You can specify a geospatial filter to limit results to a specific geographic area. In this example, the filter limits results to hotels within 300 kilometers of Washington D.C. (coordinates: `-77.03241 38.90166`). Geospatial distances are always in kilometers. This search uses [SearchClient](/javascript/api/@azure/search-documents/searchclient).[search](/javascript/api/@azure/search-documents/searchclient#@azure-search-documents-searchclient-search) and the [VectorQuery](/javascript/api/@azure/search-documents/vectorquery) and [SearchOptions](/javascript/api/@azure/search-documents/searchoptions). 
+```typescript
+const DOCUMENTS = [
+    // Array of hotel documents with embedded 1536-dimension vectors
+    // Each document contains: HotelId, HotelName, Description, DescriptionVector,
+    // Category, Tags, ParkingIncluded, LastRenovationDate, Rating, Address, Location
+];
 
-To create a search with a geospatial filter:
+const searchClient = new SearchClient(searchEndpoint, indexName, credential);
 
-1. Create a `searchSingleWithFilterGeo.ts` file in the `src` directory.
+const result = await searchClient.uploadDocuments(DOCUMENTS);
+for (const r of result.results) {
+    console.log(`Key: ${r.key}, Succeeded: ${r.succeeded}`);
+}
+```
 
-1. Copy the following code into the file.
+Your code interacts with a specific search index hosted in your Azure AI Search service through the `SearchClient`, which is the main object provided by the [`@azure/search-documents`](/javascript/api/overview/azure/search-documents-readme) package. The `SearchClient` provides access to index operations, such as:
 
-    :::code language="typescript" source="~/azure-search-javascript-samples/quickstart-vector-ts/src/searchSingleWithFilterGeo.ts" :::
++ Data ingestion: `uploadDocuments`, `mergeDocuments`, `deleteDocuments`
 
-1. Build and run the file.
++ Search operations: `search`, `autocomplete`, `suggest`
 
-    ```console
-    npm run build && node -r dotenv/config dist/searchSingleWithFilterGeo.js
-    ```
+### Query the index
 
-    The output of this code shows the relevant documents for the query with the geospatial post-processing exclusion filter applied.
+The queries in the search files demonstrate different search patterns. The example vector queries are based on two strings:
 
-    ```console
-    Using Azure Search endpoint: https://ai-search-dib-2.search.windows.net
-    Using index name: hotels-vector-quickstart-0627-4
-    
-    
-    Single Vector search found 2
-    - HotelId: 48, HotelName: Nordick's Valley Motel, Tags: N/A, Score 0.6605852246284485
-    - HotelId: 49, HotelName: Swirling Currents Hotel, Tags: N/A, Score 0.602634072303772
-    ```
++ Full-text search string: `"historic hotel walk to restaurants and shopping"`
 
-## Create a hybrid search
++ Vector query string: `"quintessential lodging near running trails, eateries, retail"` (vectorized into a mathematical representation)
 
-Hybrid search consists of keyword queries and vector queries in a single search request. This example runs the vector query and full-text search concurrently:
+The vector query string is semantically similar to the full-text search string, but it includes terms that don't exist in the index. A keyword-only search for the vector query string returns zero results. However, vector search finds relevant matches based on meaning rather than exact keywords.
 
-+ Search string: `historic hotel walk to restaurants and shopping`
-+ Vector query string: `quintessential lodging near running trails, eateries, retail` (vectorized into a mathematical representation)
+The following examples start with a basic vector query and progressively add filters, keyword search, and semantic reranking.
 
-This search uses [SearchClient](/javascript/api/@azure/search-documents/searchclient).[search](/javascript/api/@azure/search-documents/searchclient#@azure-search-documents-searchclient-search) and the [VectorQuery](/javascript/api/@azure/search-documents/vectorquery) and [SearchOptions](/javascript/api/@azure/search-documents/searchoptions). 
+#### Single vector search
 
-To create a hybrid search:
+`searchSingle.ts` demonstrates a basic scenario where you want to find document descriptions that closely match the vector query string. The `VectorQuery` object configures the vector search:
 
-1. Create a `searchHybrid.ts` file in the `src` directory.
++ `kNearestNeighborsCount` limits how many results are returned based on vector similarity.
++ `fields` specifies the vector field to search against.
 
-1. Copy the following code into the file.
+```typescript
+const vectorQuery: VectorQuery<HotelDocument> = {
+    vector: vector,
+    kNearestNeighborsCount: 5,
+    fields: ["DescriptionVector"],
+    kind: "vector",
+    exhaustive: true
+};
 
-    :::code language="typescript" source="~/azure-search-javascript-samples/quickstart-vector-ts/src/searchHybrid.ts" :::
+const searchOptions: SearchOptions<HotelDocument> = {
+    top: 7,
+    select: ["HotelId", "HotelName", "Description", "Category", "Tags"] as const,
+    includeTotalCount: true,
+    vectorSearchOptions: {
+        queries: [vectorQuery],
+        filterMode: "postFilter"
+    }
+};
 
-1. Build and run the file.
+const results: SearchDocumentsResult<HotelDocument> = await searchClient.search("*", searchOptions);
 
-    ```console
-    npm run build && node -r dotenv/config dist/searchHybrid.js
-    ```
+for await (const result of results.results) {
+    const doc = result.document;
+    console.log(`HotelId: ${doc.HotelId}, HotelName: ${doc.HotelName}, Score: ${result.score}`);
+}
+```
 
-    The output of this code shows the relevant documents for the hybrid search:
-
-    ```console
-    Using Azure Search endpoint: https://ai-search-dib-2.search.windows.net
-    Using index name: hotels-vector-quickstart-0627-4
-    
-    
-    Hybrid search found 7 then limited to top 5
-    - Score: 0.03279569745063782
-      HotelId: 4
-      HotelName: Sublime Palace Hotel
-      Description: Sublime Palace Hotel is located in the heart of the historic center of Sublime in an extremely vibrant and lively area within short walking distance to the sites and landmarks of the city and is surrounded by the extraordinary beauty of churches, buildings, shops and monuments. Sublime Cliff is part of a lovingly restored 19th century resort, updated for every modern convenience.
-      Category: Boutique
-      Tags: ["concierge","view","air conditioning"]
-    
-    - Score: 0.032522473484277725
-      HotelId: 13
-      HotelName: Luxury Lion Resort
-      Description: Unmatched Luxury. Visit our downtown hotel to indulge in luxury accommodations. Moments from the stadium and transportation hubs, we feature the best in convenience and comfort.
-      Category: Luxury
-      Tags: ["bar","concierge","restaurant"]
-    
-    - Score: 0.03205128386616707
-      HotelId: 48
-      HotelName: Nordick's Valley Motel
-      Description: Only 90 miles (about 2 hours) from the nation's capital and nearby most everything the historic valley has to offer. Hiking? Wine Tasting? Exploring the caverns? It's all nearby and we have specially priced packages to help make our B&B your home base for fun while visiting the valley.
-      Category: Boutique
-      Tags: ["continental breakfast","air conditioning","free wifi"]
-    
-    - Score: 0.0317460335791111
-      HotelId: 49
-      HotelName: Swirling Currents Hotel
-      Description: Spacious rooms, glamorous suites and residences, rooftop pool, walking access to shopping, dining, entertainment and the city center. Each room comes equipped with a microwave, a coffee maker and a minifridge. In-room entertainment includes complimentary W-Fi and flat-screen TVs.
-      Category: Suite
-      Tags: ["air conditioning","laundry service","24-hour front desk service"]
-    
-    - Score: 0.03125
-      HotelId: 2
-      HotelName: Old Century Hotel
-      Description: The hotel is situated in a nineteenth century plaza, which has been expanded and renovated to the highest architectural standards to create a modern, functional and first-class hotel in which art and unique historical elements coexist with the most modern comforts. The hotel also regularly hosts events like wine tastings, beer dinners, and live music.
-      Category: Boutique
-      Tags: ["pool","free wifi","air conditioning","concierge"]
-    ```
+#### Single vector search with a filter
 
-    Because Reciprocal Rank Fusion (RRF) merges results, it helps to review the inputs. The following results are from the full-text query only. The top two results are Sublime Palace Hotel and Luxury Lion Resort. The Sublime Palace Hotel has a stronger BM25 relevance score.
-
-    ```json
-       {
-           "@search.score": 2.2626662,
-           "HotelName": "Sublime Palace Hotel",
-           "Description": "Sublime Palace Hotel is located in the heart of the historic center of Sublime in an extremely vibrant and lively area within short walking distance to the sites and landmarks of the city and is surrounded by the extraordinary beauty of churches, buildings, shops and monuments. Sublime Palace is part of a lovingly restored 1800 palace."
-       },
-       {
-           "@search.score": 0.86421645,
-           "HotelName": "Luxury Lion Resort",
-           "Description": "Unmatched Luxury.  Visit our downtown hotel to indulge in luxury accommodations. Moments from the stadium, we feature the best in comfort"
-       },
-    ```
+In Azure AI Search, [filters](../../vector-search-filters.md) apply to nonvector fields in an index. `searchSingleWithFilter.ts` filters on the `Tags` field to filter out any hotels that don't provide free Wi-Fi.
 
-    In the vector-only query, which uses HNSW for finding matches, the Sublime Palace Hotel drops to the fourth position. Luxury Lion, which was second in the full-text search and third in the vector search, doesn't experience the same range of fluctuation, so it appears as a top match in a homogenized result set.
-   
-   ```json
-   "value": [
-       {
-           "@search.score": 0.857736,
-           "HotelId": "48",
-           "HotelName": "Nordick's Valley Motel",
-           "Description": "Only 90 miles (about 2 hours) from the nation's capital and nearby most everything the historic valley has to offer.  Hiking? Wine Tasting? Exploring the caverns?  It's all nearby and we have specially priced packages to help make our B&B your home base for fun while visiting the valley.",
-           "Category": "Boutique"
-       },
-       {
-           "@search.score": 0.8399129,
-           "HotelId": "49",
-           "HotelName": "Swirling Currents Hotel",
-           "Description": "Spacious rooms, glamorous suites and residences, rooftop pool, walking access to shopping, dining, entertainment and the city center.",
-           "Category": "Luxury"
-       },
-       {
-           "@search.score": 0.8383954,
-           "HotelId": "13",
-           "HotelName": "Luxury Lion Resort",
-           "Description": "Unmatched Luxury.  Visit our downtown hotel to indulge in luxury accommodations. Moments from the stadium, we feature the best in comfort",
-           "Category": "Resort and Spa"
-       },
-       {
-           "@search.score": 0.8254346,
-           "HotelId": "4",
-           "HotelName": "Sublime Palace Hotel",
-           "Description": "Sublime Palace Hotel is located in the heart of the historic center of Sublime in an extremely vibrant and lively area within short walking distance to the sites and landmarks of the city and is surrounded by the extraordinary beauty of churches, buildings, shops and monuments. Sublime Palace is part of a lovingly restored 1800 palace.",
-           "Category": "Boutique"
-       },
-       {
-           "@search.score": 0.82380056,
-           "HotelId": "1",
-           "HotelName": "Stay-Kay City Hotel",
-           "Description": "The hotel is ideally located on the main commercial artery of the city in the heart of New York.",
-           "Category": "Boutique"
-       },
-       {
-           "@search.score": 0.81514084,
-           "HotelId": "2",
-           "HotelName": "Old Century Hotel",
-           "Description": "The hotel is situated in a  nineteenth century plaza, which has been expanded and renovated to the highest architectural standards to create a modern, functional and first-class hotel in which art and unique historical elements coexist with the most modern comforts.",
-           "Category": "Boutique"
-       },
-       {
-           "@search.score": 0.8133763,
-           "HotelId": "3",
-           "HotelName": "Gastronomic Landscape Hotel",
-           "Description": "The Hotel stands out for its gastronomic excellence under the management of William Dough, who advises on and oversees all of the Hotel's restaurant services.",
-           "Category": "Resort and Spa"
-       }
-   ]
-   ```
-
-## Create a semantic hybrid search
+```typescript
+const searchOptions: SearchOptions<HotelDocument> = {
+    top: 7,
+    select: ["HotelId", "HotelName", "Description", "Category", "Tags"] as const,
+    includeTotalCount: true,
+    filter: "Tags/any(tag: tag eq 'free wifi')", // Adding filter for "free wifi" tag
+    vectorSearchOptions: {
+        queries: [vectorQuery],
+        filterMode: "postFilter"
+    }
+};
 
-Here's the last query in the collection to extend the semantic hybrid search with the additional search text `historic hotel walk to restaurants and shopping`.
+const results: SearchDocumentsResult<HotelDocument> = await searchClient.search("*", searchOptions);
+```
 
-This search uses [SearchClient](/javascript/api/@azure/search-documents/searchclient).[search](/javascript/api/@azure/search-documents/searchclient#@azure-search-documents-searchclient-search) and the [VectorQuery](/javascript/api/@azure/search-documents/vectorquery) and [SearchOptions](/javascript/api/@azure/search-documents/searchoptions). 
+#### Single vector search with a geo filter
 
-To create a semantic hybrid search:
+You can specify a [geo-spatial filter](../../search-query-odata-geo-spatial-functions.md) to limit results to a specific geographic area. `searchSingleWithGeoFilter.ts` specifies a geographic point (Washington D.C., using longitude and latitude coordinates) and returns hotels within 300 kilometers. The `filterMode` property determines when the filter runs. In this case, `postFilter` runs the filter after the vector search.
 
-1. Create a `searchSemanticHybrid.ts` file in the `src` directory.
+```typescript
+const searchOptions: SearchOptions<HotelDocument> = {
+    top: 5,
+    includeTotalCount: true,
+    select: ["HotelId", "HotelName", "Category", "Description", "Address/City", "Address/StateProvince"] as const,
+    facets: ["Address/StateProvince"],
+    filter: "geo.distance(Location, geography'POINT(-77.03241 38.90166)') le 300",
+    vectorSearchOptions: {
+        queries: [vectorQuery],
+        filterMode: "postFilter"
+    }
+};
+```
 
-1. Copy the following code into the file.
+#### Hybrid search
+
+[Hybrid search](../../hybrid-search-overview.md) combines full-text and vector queries in a single request. `searchHybrid.ts` runs both query types concurrently, and then uses Reciprocal Rank Fusion (RRF) to merge the results into a unified ranking. RRF uses the inverse of result rankings from each result set to produce a merged ranking. Notice that hybrid search scores are uniformly smaller than single-query scores.
+
+```typescript
+const vectorQuery: VectorQuery<HotelDocument> = {
+    vector: vector,
+    kNearestNeighborsCount: 5,
+    fields: ["DescriptionVector"],
+    kind: "vector",
+    exhaustive: true
+};
+
+const searchOptions: SearchOptions<HotelDocument> = {
+    top: 5,
+    includeTotalCount: true,
+    select: ["HotelId", "HotelName", "Description", "Category", "Tags"] as const,
+    vectorSearchOptions: {
+        queries: [vectorQuery],
+        filterMode: "postFilter"
+    }
+};
 
-    :::code language="typescript" source="~/azure-search-javascript-samples/quickstart-vector-ts/src/searchSemanticHybrid.ts" :::
+// Use search text for keyword search (hybrid search = vector + keyword)
+const searchText = "historic hotel walk to restaurants and shopping";
+const results: SearchDocumentsResult<HotelDocument> = await searchClient.search(searchText, searchOptions);
+```
 
-1. Build and run the file.
+#### Semantic hybrid search
+
+`searchSemanticHybrid.ts` demonstrates [semantic ranking](../../semantic-search-overview.md), which reranks results based on language understanding.
+
+```typescript
+const searchOptions: SearchOptions<HotelDocument> = {
+    top: 5,
+    includeTotalCount: true,
+    select: ["HotelId", "HotelName", "Category", "Description"] as const,
+    queryType: "semantic" as const,
+    semanticSearchOptions: {
+        configurationName: "semantic-config"
+    },
+    vectorSearchOptions: {
+        queries: [vectorQuery],
+        filterMode: "postFilter"
+    }
+};
 
-    ```console
-    npm run build && node -r dotenv/config dist/searchSemanticHybrid.js
-    ```
+const searchText = "historic hotel walk to restaurants and shopping";
+const results: SearchDocumentsResult<HotelDocument> = await searchClient.search(searchText, searchOptions);
 
-    The output of this code shows the relevant documents for the semantic hybrid search.
-
-    ```console
-    Using Azure Search endpoint: https://ai-search-dib-2.search.windows.net
-    Using index name: hotels-vector-quickstart-0627-4
-
-    
-    Semantic hybrid search found 7 then limited to top 5
-    - Score: 0.0317460335791111
-      Re-ranker Score: 2.6550590991973877
-      HotelId: 49
-      HotelName: Swirling Currents Hotel
-      Description: Spacious rooms, glamorous suites and residences, rooftop pool, walking access to shopping, dining, entertainment and the city center. Each room comes equipped with a microwave, a coffee maker and a minifridge. In-room entertainment includes complimentary W-Fi and flat-screen TVs.
-      Category: Suite
-    
-    - Score: 0.03279569745063782
-      Re-ranker Score: 2.599761724472046
-      HotelId: 4
-      HotelName: Sublime Palace Hotel
-      Description: Sublime Palace Hotel is located in the heart of the historic center of Sublime in an extremely vibrant and lively area within short walking distance to the sites and landmarks of the city and is surrounded by the extraordinary beauty of churches, buildings, shops and monuments. Sublime Cliff is part of a lovingly restored 19th century resort, updated for every modern convenience.
-      Category: Boutique
-    
-    - Score: 0.03125
-      Re-ranker Score: 2.3480887413024902
-      HotelId: 2
-      HotelName: Old Century Hotel
-      Description: The hotel is situated in a nineteenth century plaza, which has been expanded and renovated to the highest architectural standards to create a modern, functional and first-class hotel in which art and unique historical elements coexist with the most modern comforts. The hotel also regularly hosts events like wine tastings, beer dinners, and live music.
-      Category: Boutique
-    
-    - Score: 0.016393441706895828
-      Re-ranker Score: 2.2718777656555176
-      HotelId: 1
-      HotelName: Stay-Kay City Hotel
-      Description: This classic hotel is fully-refurbished and ideally located on the main commercial artery of the city in the heart of New York. A few minutes away is Times Square and the historic centre of the city, as well as other places of interest that make New York one of America's most attractive and cosmopolitan cities.
-      Category: Boutique
-    
-    - Score: 0.01515151560306549
-      Re-ranker Score: 2.0582215785980225
-      HotelId: 3
-      HotelName: Gastronomic Landscape Hotel
-      Description: The Gastronomic Hotel stands out for its culinary excellence under the management of William Dough, who advises on and oversees all of the Hotel's restaurant services.
-      Category: Suite
-    ```
+for await (const result of results.results) {
+    console.log(`Score: ${result.score}, Re-ranker Score: ${result.rerankerScore}`);
+}
+```
 
-    You can think of the semantic ranking as a way to improve the relevance of search results by understanding the meaning behind the words in the query and the content of the documents. In this case, the semantic ranking helps to identify hotels that are not only relevant to the keywords but also match the intent of the query:
+Compare these results with the hybrid search results from the previous query. Without semantic reranking, Sublime Palace Hotel ranks first because Reciprocal Rank Fusion (RRF) combines the text and vector scores to produce a merged result. After semantic reranking, Swirling Currents Hotel moves to the top spot.
 
-    Key takeaways: 
+The semantic ranker uses machine comprehension models to evaluate how well each result matches the intent of the query. Swirling Currents Hotel's description mentions `"walking access to shopping, dining, entertainment and the city center"`, which aligns closely with the search query's `"walk to restaurants and shopping"`. This semantic match for nearby dining and shopping elevates it above Sublime Palace Hotel, which doesn't emphasize walkable amenities in its description.
 
-    - Vector search is specified through the `vectorSearchOptions` property. Keyword search is specified through the `semanticSearchOptions` property.
+Key takeaways:
 
-    - In a hybrid search, you can integrate vector search with full-text search over keywords. Filters, spell check, and semantic ranking apply to textual content only, and not vectors. In this final query, there's no semantic `answer` because the system didn't produce one that was sufficiently strong.
++ In a hybrid search, you can integrate vector search with full-text search over keywords. Filters and semantic ranking apply to textual content only, not vectors.
 
-    - Actual results include more detail, including semantic captions and highlights. Results were modified for readability. To get the full structure of the response, run the request in the REST client.
++ Actual results include more detail, including semantic captions and highlights. This quickstart modifies results for readability. To get the full structure of the response, use REST to run the request.
 
 ## Clean up resources
 
-When you're working in your own subscription, it's a good idea at the end of a project to identify whether you still need the resources you created. Resources left running can cost you money. You can delete resources individually or delete the resource group to delete the entire set of resources.
-
-You can find and manage resources in the Azure portal by using the **All resources** or **Resource groups** link in the leftmost pane.
-
-Alternatively, to delete the vector index you created in this quickstart programmatically:
-
-1. Create a `deleteIndex.ts` file in the `src` directory.
+[!INCLUDE [resource-cleanup-paid](../resource-cleanup-paid.md)]
 
-1. Add the dependencies, environment variables, and code to delete the index.
+Otherwise, run the following command to delete the index you created in this quickstart.
 
-    :::code language="typescript" source="~/azure-search-javascript-samples/quickstart-vector-ts/src/deleteIndex.ts" :::
-
-1. Build and run the file.
-
-    ```console
-    npm run build && node -r dotenv/config dist/deleteIndex.js
-    ```
-
-## Next steps
-
-+ Review the repository of code samples for vector search capabilities in Azure AI Search for [JavaScript](https://github.com/Azure/azure-search-vector-samples/tree/main/demo-javascript).
+```bash
+npm run build && node -r dotenv/config dist/deleteIndex.js
+```

Summary

{
    "modification_type": "minor update",
    "modification_title": "TypeScriptを使用したベクトル検索のクイックスタートの更新"
}

Explanation

今回の変更は、TypeScriptを使用してAzure AI Searchにおけるベクトル検索を行うためのクイックスタートの文書が更新されたことを示しています。このアップデートでは、手順や内容が最新のベストプラクティスに沿うように見直され、特にTypeScriptとJavaScriptの互換性に関する情報が強調されています。

主な改訂内容には、まずユーザーがクイックスタートを通して達成するべき目標の明確化が含まれています。具体的には、Azure AI Searchクライアントライブラリを使用して、ベクトルインデックスを作成し、データをロードし、クエリを実行する方法についての手順が整理されました。これにより、特に初学者にとって必要なサポートが強化されています。

更新された内容の中では、すぐに始められるリソースが提供され、GitHubからサンプルコードを直接ダウンロードできるようになっている点が歓迎されます。また、新たに追加された情報には、環境のセットアップ、依存関係のインストール、環境変数の設定などが含まれ、開発者が容易に実行環境を準備できるよう工夫されています。

具体的な手順としては、インデックスを作成するためのコードの例、新しいドキュメントをインデックスにアップロードするテクニック、およびベクトル検索やハイブリッド検索を実行する方法が示されています。これにより、ユーザーは検索クエリの実行結果を分析しやすくなり、また、フィルタリングやセマンティック検索の技術も適用可能となっています。

全体として、この変更はTypeScriptを用いたAzure AI Searchの利用を進めるための文書構造および説明の質を向上させており、特に開発者があらかじめ準備を迅速に整えて効率的に作業を進められるようにすることを目的としています。

articles/search/includes/understand-code-note.md

Diff
@@ -0,0 +1,12 @@
+---
+title: Include file
+description: Include file for the code snippet disclaimer in the Azure AI Search programmatic quickstarts.
+author: haileytap
+ms.author: haileytapia
+ms.service: azure-ai-search
+ms.topic: include
+ms.date: 02/09/2026
+---
+
+> [!NOTE]
+> The code snippets in this section might have been modified for readability. For a complete working example, see the source code.
\ No newline at end of file

Summary

{
    "modification_type": "new feature",
    "modification_title": "コードスニペットの免責事項を含むファイルの追加"
}

Explanation

この変更は、新たに「コードスニペットの免責事項」を含むファイルが追加されたことを示しています。このファイルは、Azure AI Searchのプログラムからのクイックスタートにおいて、コードスニペットに関連する注意事項を明確にするためのものです。

新しく追加された内容は、コードスニペットが可読性を向上させるために修正されている可能性があることを示唆するもので、ユーザーに対して実際に動作する完全な例を見るためにはソースコードを参照するようにとの指示が含まれています。この形での明記は、ユーザーがコードを理解しやすくし、実際にどのようにこれを組み込むかを考える上で便利です。

また、このファイルは、文書の整合性を保ちながら、ユーザーに対する補足情報の提供を通じて、エラーの可能性を減少させることを目的としています。情報の透明性を高めることで、ユーザーが期待する成果物を得るための手助けとなるでしょう。

さらに、このコードスニペットの免責事項を含む新しいファイルの導入は、ドキュメント全体の質を向上させることに寄与し、開発者がAzure AI Searchを使用する際に必要な注意点をしっかりと理解できるよう支援します。全体として、この追加は、ユーザー体験を改善するための重要な一歩と言えます。

articles/search/search-get-started-vector.md

Diff
@@ -51,3 +51,8 @@ zone_pivot_groups: search-get-started-vector-search
 [!INCLUDE [REST quickstart](includes/quickstarts/search-get-started-vector-rest.md)]
 
 ::: zone-end
+
+## Related content
+
++ [Vector search in Azure AI Search](vector-search-overview.md)
++ [azure-search-vector-samples](https://github.com/Azure/azure-search-vector-samples) GitHub repository

Summary

{
    "modification_type": "minor update",
    "modification_title": "関連コンテンツセクションの追加"
}

Explanation

この変更は、「Azure AI Search」に関する「ベクトル検索」クイックスタート文書に新たな関連コンテンツセクションが追加されたことを示しています。このセクションでは、ユーザーが操作や理解を深めるために役立つ追加のリソースやリンクが提供されています。

具体的に追加された内容は、以下の2つのリソースへのリンクです:
1. Azure AI Searchにおけるベクトル検索
2. azure-search-vector-samplesのGitHubリポジトリ

これにより、読者はベクトル検索の理論や実装方法に関してより深い洞察を得ることができ、また実際のコード例を見ることで実践的な理解を高めやすくなります。この関連コンテンツセクションの追加は、ユーザーが学習を進める際のナビゲーションを向上させるためのものです。

全体として、セクションの追加によって、ユーザーはドキュメント内での情報の豊かさを実感でき、関連するトピックについての探索を促進する役割を果たします。これは、Azure AI Searchの機能を最大限に活用できるように支援するための重要なステップです。

articles/search/search-try-for-free.md

Diff
@@ -80,7 +80,7 @@ You can access Azure AI Search through two portals, each optimized for different
 | Portal | Description | What you can do |
 |--------|-------------|-----------------|
 | [Azure portal](https://portal.azure.com/) | The primary management interface for Azure resources and your Azure AI Search service. **This portal is most useful for classic search scenarios and overall resource management.** | <ul><li>Create and configure your search service.</li><li>Build knowledge bases and knowledge sources for [agentic retrieval](search-what-is-azure-search.md#what-is-agentic-retrieval).</li><li>Build indexes, indexers, data sources, and skillsets for [classic search](search-what-is-azure-search.md#what-is-classic-search).</li><li>Query your knowledge bases and indexes.</li><li>Track credits and monitor costs.</li></ul> |
-| [Microsoft Foundry portal](https://ai.azure.com/?cid=learnDocs) | A unified platform for deploying models and building AI applications. **This portal is most useful for agentic retrieval (RAG) scenarios.** | <ul><li>Deploy embedding and chat models.</li><li>Use [Foundry IQ](/azure/ai-foundry/agents/concepts/what-is-foundry-iq.md) to connect your Azure AI Search knowledge base to an AI agent.</li></ul> |
+| [Microsoft Foundry portal](https://ai.azure.com/?cid=learnDocs) | A unified platform for deploying models and building AI applications. **This portal is most useful for agentic retrieval (RAG) scenarios.** | <ul><li>Deploy embedding and chat models.</li><li>Use [Foundry IQ](/azure/ai-foundry/agents/concepts/what-is-foundry-iq) to connect your Azure AI Search knowledge base to an AI agent.</li></ul> |
 
 ## Track your credit usage
 

Summary

{
    "modification_type": "minor update",
    "modification_title": "リンクの修正"
}

Explanation

この変更は、「Azure AI Search」を無料で試す方法に関する文書内のリンクが修正されたことを示しています。具体的には、リンク先の形式が変更されており、元々のリンクと新しいリンクの間でわずかな違いが見受けられます。この変更により、より適切な参照が行えるようになっています。

具体的には、[Foundry IQ]のリンクが、以前の形式から新しい形式に更新されています。この修正は、ユーザーが利用する際に関連情報に正確にアクセスできるようにするためのものであり、情報の正確性と文書の信頼性を向上させることを目的としています。

全体として、この変更は文書の質を向上させ、読者が必要なリソースにスムーズにアクセスできるようにするための配慮がなされています。リンクの更新により、ユーザーエクスペリエンスが向上し、情報の使用がより効率的になることが期待されます。