Korzystanie z łącznika usługi Azure AI Search Vector Store (wersja zapoznawcza)
Ostrzeżenie
Funkcja semantycznego magazynu wektorów jądra jest dostępna w wersji zapoznawczej, a ulepszenia wymagające zmian powodujących niezgodność mogą nadal występować w ograniczonych okolicznościach przed wydaniem.
Omówienie
Łącznik azure AI Search Vector Store może służyć do uzyskiwania dostępu do danych i zarządzania nimi w usłudze Azure AI Search. Łącznik ma następujące cechy.
Obszar funkcji | Pomoc techniczna |
---|---|
Mapowania kolekcji na | Indeks usługi Azure AI Search |
Obsługiwane typy właściwości kluczy | string |
Obsługiwane typy właściwości danych |
|
Obsługiwane typy właściwości wektorów | ReadOnlyMemory<float> |
Obsługiwane typy indeksów |
|
Obsługiwane funkcje odległości |
|
Obsługiwane klauzule filtru |
|
Obsługuje wiele wektorów w rekordzie | Tak |
Czy filtrowanie jest obsługiwane? | Tak |
Czy jest obsługiwany element IsFullTextSearchable? | Tak |
Obsługiwana nazwa_właściwości_magazynu? | Nie, użyj JsonSerializerOptions polecenia i JsonPropertyNameAttribute zamiast tego.
Aby uzyskać więcej informacji, zobacz tutaj. |
Ograniczenia
Istotne ograniczenia funkcji łącznika usługi Azure AI Search.
Obszar funkcji | Rozwiązanie |
---|---|
Konfigurowanie analizatorów wyszukiwania pełnotekstowego podczas tworzenia kolekcji nie jest obsługiwane. | Bezpośrednie tworzenie kolekcji przy użyciu zestawu SDK klienta usługi Azure AI Search |
Wprowadzenie
Dodaj pakiet NuGet łącznika Usługi Azure AI Search Vector Store do projektu.
dotnet add package Microsoft.SemanticKernel.Connectors.AzureAISearch --prerelease
Magazyn wektorów można dodać do kontenera iniekcji zależności dostępnego w KernelBuilder
kontenerze iniekcji zależności lub IServiceCollection
przy użyciu metod rozszerzeń udostępnianych przez jądro semantyczne.
using Azure;
using Microsoft.SemanticKernel;
// Using Kernel Builder.
var kernelBuilder = Kernel
.CreateBuilder()
.AddAzureAISearchVectorStore(new Uri(azureAISearchUri), new AzureKeyCredential(secret));
using Azure;
using Microsoft.SemanticKernel;
// Using IServiceCollection with ASP.NET Core.
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddAzureAISearchVectorStore(new Uri(azureAISearchUri), new AzureKeyCredential(secret));
Dostępne są również metody rozszerzeń, które nie przyjmują parametrów. Wymagają one osobnego zarejestrowania wystąpienia usługi Azure AI Search SearchIndexClient
w kontenerze wstrzykiwania zależności.
using Azure;
using Azure.Search.Documents.Indexes;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.SemanticKernel;
// Using Kernel Builder.
var kernelBuilder = Kernel.CreateBuilder();
kernelBuilder.Services.AddSingleton<SearchIndexClient>(
sp => new SearchIndexClient(
new Uri(azureAISearchUri),
new AzureKeyCredential(secret)));
kernelBuilder.AddAzureAISearchVectorStore();
using Azure;
using Azure.Search.Documents.Indexes;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.SemanticKernel;
// Using IServiceCollection with ASP.NET Core.
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddSingleton<SearchIndexClient>(
sp => new SearchIndexClient(
new Uri(azureAISearchUri),
new AzureKeyCredential(secret)));
builder.Services.AddAzureAISearchVectorStore();
Wystąpienie usługi Azure AI Search Vector Store można skonstruować bezpośrednio.
using Azure;
using Azure.Search.Documents.Indexes;
using Microsoft.SemanticKernel.Connectors.AzureAISearch;
var vectorStore = new AzureAISearchVectorStore(
new SearchIndexClient(
new Uri(azureAISearchUri),
new AzureKeyCredential(secret)));
Istnieje możliwość utworzenia bezpośredniego odwołania do nazwanej kolekcji.
using Azure;
using Azure.Search.Documents.Indexes;
using Microsoft.SemanticKernel.Connectors.AzureAISearch;
var collection = new AzureAISearchVectorStoreRecordCollection<Hotel>(
new SearchIndexClient(new Uri(azureAISearchUri), new AzureKeyCredential(secret)),
"skhotels");
Wprowadzenie
Zainstaluj semantyczne jądro za pomocą dodatków platformy Azure, które obejmuje zestaw SDK usługi Azure AI Search.
pip install semantic-kernel[azure]
Następnie można utworzyć wystąpienie magazynu wektorów przy użyciu AzureAISearchStore
klasy. Spowoduje to użycie zmiennych AZURE_AI_SEARCH_ENDPOINT
środowiskowych i AZURE_AI_SEARCH_API_KEY
nawiązanie połączenia z wystąpieniem usługi Azure AI Search. Te wartości można również dostarczyć bezpośrednio. Możesz również podać poświadczenia platformy Azure lub poświadczenia tokenu zamiast klucza interfejsu API.
from semantic_kernel.connectors.memory.azure_ai_search import AzureAISearchStore
vector_store = AzureAISearchStore()
Możesz również utworzyć magazyn wektorów przy użyciu własnego wystąpienia klienta usługi Azure Search.
from azure.search.documents.indexes import SearchIndexClient
from semantic_kernel.connectors.memory.azure_ai_search import AzureAISearchStore
search_client = SearchIndexClient(endpoint="https://<your-search-service-name>.search.windows.net", credential="<your-search-service-key>")
vector_store = AzureAISearchStore(search_index_client=search_client)
Możesz również utworzyć kolekcję bezpośrednio.
from semantic_kernel.connectors.memory.azure_ai_search import AzureAISearchCollection
collection = AzureAISearchCollection(collection_name="skhotels", data_model_type=hotel)
Serializacja
Ponieważ łącznik usługi Azure AI Search wymaga prostego dyktowania z polami odpowiadającymi indeksowi jako dane wejściowe, serializacja jest dość prosta, po prostu zwróć dykt z wartościami z kluczami odpowiadającymi polam indeksu, wbudowany krok od dyktowania do modelu magazynu jest prostym przekazywaniem utworzonego dyktowania.
Aby uzyskać więcej informacji na temat tej koncepcji, zobacz dokumentację serializacji.
Wprowadzenie
Dołącz najnowszą wersję łącznika danych semantycznego jądra usługi Azure AI Search w projekcie maven, dodając następującą zależność do elementu pom.xml
:
<dependency>
<groupId>com.microsoft.semantic-kernel</groupId>
<artifactId>semantickernel-data-azureaisearch</artifactId>
<version>[LATEST]</version>
</dependency>
Następnie możesz utworzyć wystąpienie magazynu wektorów przy użyciu AzureAISearchVectorStore
klasy , używając klienta AzureAISearch jako parametru.
import com.azure.core.credential.AzureKeyCredential;
import com.azure.search.documents.indexes.SearchIndexClientBuilder;
import com.microsoft.semantickernel.data.azureaisearch.AzureAISearchVectorStore;
import com.microsoft.semantickernel.data.azureaisearch.AzureAISearchVectorStoreOptions;
import com.microsoft.semantickernel.data.azureaisearch.AzureAISearchVectorStoreRecordCollection;
import com.microsoft.semantickernel.data.azureaisearch.AzureAISearchVectorStoreRecordCollectionOptions;
public class Main {
public static void main(String[] args) {
// Build the Azure AI Search client
var searchClient = new SearchIndexClientBuilder()
.endpoint("https://<your-search-service-name>.search.windows.net")
.credential(new AzureKeyCredential("<your-search-service-key>"))
.buildAsyncClient();
// Build an Azure AI Search Vector Store
var vectorStore = AzureAISearchVectorStore.builder()
.withSearchIndexAsyncClient(searchClient)
.withOptions(new AzureAISearchVectorStoreOptions())
.build();
}
}
Możesz również utworzyć kolekcję bezpośrednio.
var collection = new AzureAISearchVectorStoreRecordCollection<>(searchClient, "skhotels",
AzureAISearchVectorStoreRecordCollectionOptions.<Hotel>builder()
.withRecordClass(Hotel.class)
.build());
Mapowanie danych
Domyślnym maperem używanym przez łącznik usługi Azure AI Search podczas mapowania danych z modelu danych na magazyn jest ten udostępniany przez zestaw SDK usługi Azure AI Search.
Ten maper wykonuje bezpośrednią konwersję listy właściwości modelu danych na pola w usłudze Azure AI Search i używa System.Text.Json.JsonSerializer
jej do konwersji na schemat magazynu. Oznacza to, że użycie elementu JsonPropertyNameAttribute
jest obsługiwane, jeśli wymagana jest inna nazwa magazynu dla nazwy właściwości modelu danych.
Istnieje również możliwość użycia wystąpienia niestandardowego JsonSerializerOptions
z dostosowanymi zasadami nazewnictwa właściwości. Aby to umożliwić, należy przekazać je JsonSerializerOptions
zarówno do obiektu , jak SearchIndexClient
AzureAISearchVectorStoreRecordCollection
i do konstrukcji.
var jsonSerializerOptions = new JsonSerializerOptions { PropertyNamingPolicy = JsonNamingPolicy.SnakeCaseUpper };
var collection = new AzureAISearchVectorStoreRecordCollection<Hotel>(
new SearchIndexClient(
new Uri(azureAISearchUri),
new AzureKeyCredential(secret),
new() { Serializer = new JsonObjectSerializer(jsonSerializerOptions) }),
"skhotels",
new() { JsonSerializerOptions = jsonSerializerOptions });