Použití konektoru Weaviate Vector Store (Preview)
Upozorňující
Funkce sémantického úložiště vektorů jádra je ve verzi Preview a vylepšení, která vyžadují zásadní změny, se můžou vyskytovat za omezených okolností před vydáním.
Přehled
Konektor Weaviate Vector Store se dá použít k přístupu k datům ve weaviate a správě dat. Konektor má následující charakteristiky.
Oblast funkcí | Technická podpora |
---|---|
Kolekce map na | Kolekce weaviate |
Podporované typy vlastností klíče | Guid |
Podporované typy datových vlastností |
|
Podporované typy vektorových vlastností |
|
Podporované typy indexů |
|
Podporované funkce vzdálenosti |
|
Podporuje více vektorů v záznamu. | Ano |
Je podporováno Filtrování? | Ano |
Podporuje se IsFullTextSearchable? | Ano |
StoragePropertyName se podporuje? | Ne, použijte JsonSerializerOptions a JsonPropertyNameAttribute místo toho. Další informace najdete tady. |
Omezení
Omezení funkcí konektoru se dají odlehčit.
Oblast funkcí | Alternativní řešení |
---|---|
Použití vlastnosti vector pro objekty s jedním vektorem není podporováno. | Místo toho se podporuje použití vlastnosti vektory. |
Začínáme
Přidejte do projektu balíček NuGet konektoru Weaviate Vector Store.
dotnet add package Microsoft.SemanticKernel.Connectors.Weaviate --prerelease
Vektorové úložiště můžete přidat do kontejneru injektáže závislostí dostupného IServiceCollection
v KernelBuilder
kontejneru injektáže závislostí nebo do kontejneru injektáže závislostí pomocí rozšiřujících metod poskytovaných sémantickým jádrem.
Úložiště vektorů Weaviate používá HttpClient
ke komunikaci se službou Weaviate. Existují dvě možnosti pro poskytnutí adresy URL/koncového bodu pro službu Weaviate.
Lze ji poskytnout prostřednictvím možností nebo nastavením základní adresy HttpClient
.
Tento první příklad ukazuje, jak nastavit adresu URL služby prostřednictvím možností.
Všimněte si také, že tyto metody načtou HttpClient
instanci pro volání služby Weaviate od poskytovatele služby injektáže závislostí.
using Microsoft.SemanticKernel;
// Using Kernel Builder.
var kernelBuilder = Kernel
.CreateBuilder()
.AddWeaviateVectorStore(options: new() { Endpoint = new Uri("http://localhost:8080/v1/") });
using Microsoft.SemanticKernel;
// Using IServiceCollection with ASP.NET Core.
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddWeaviateVectorStore(options: new() { Endpoint = new Uri("http://localhost:8080/v1/") });
K dispozici jsou také přetížení, kde můžete zadat vlastní HttpClient
.
V takovém případě je možné nastavit adresu URL služby prostřednictvím HttpClient
BaseAddress
možnosti.
using System.Net.Http;
using Microsoft.SemanticKernel;
// Using Kernel Builder.
var kernelBuilder = Kernel.CreateBuilder();
using HttpClient client = new HttpClient { BaseAddress = new Uri("http://localhost:8080/v1/") };
kernelBuilder.AddWeaviateVectorStore(client);
using System.Net.Http;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.SemanticKernel;
// Using IServiceCollection with ASP.NET Core.
var builder = WebApplication.CreateBuilder(args);
using HttpClient client = new HttpClient { BaseAddress = new Uri("http://localhost:8080/v1/") };
builder.Services.AddWeaviateVectorStore(client);
Instanci Weaviate Vector Store můžete vytvořit také přímo.
using System.Net.Http;
using Microsoft.SemanticKernel.Connectors.Weaviate;
var vectorStore = new WeaviateVectorStore(
new HttpClient { BaseAddress = new Uri("http://localhost:8080/v1/") });
Je možné vytvořit přímý odkaz na pojmenovanou kolekci.
using System.Net.Http;
using Microsoft.SemanticKernel.Connectors.Weaviate;
var collection = new WeaviateVectorStoreRecordCollection<Hotel>(
new HttpClient { BaseAddress = new Uri("http://localhost:8080/v1/") },
"skhotels");
V případě potřeby je možné klíč rozhraní API předat jako možnost při použití některého z výše uvedených mechanismů, např.
using Microsoft.SemanticKernel;
var kernelBuilder = Kernel
.CreateBuilder()
.AddWeaviateVectorStore(options: new() { Endpoint = new Uri("http://localhost:8080/v1/"), ApiKey = secretVar });
Mapování dat
Konektor Weaviate Vector Store poskytuje při mapování z datového modelu do úložiště výchozí mapovač. Weaviate vyžaduje, aby se vlastnosti mapovaly na seskupení ID, datové části a vektorů. Výchozí mapovač používá k určení typu každé vlastnosti a k tomuto mapování poznámky modelu nebo definici záznamu.
- Vlastnost datového modelu označená jako klíč se mapuje na vlastnost Weaviate
id
. - Vlastnosti datového modelu anotované jako data budou mapovány na objekt Weaviate
properties
. - Vlastnosti datového modelu anotované jako vektory budou mapovány na objekt Weaviate
vectors
.
Výchozí mapovač používá System.Text.Json.JsonSerializer
k převodu na schéma úložiště.
To znamená, že použití tohoto objektu JsonPropertyNameAttribute
se podporuje, pokud se vyžaduje jiný název úložiště s názvem vlastnosti datového modelu.
Tady je příklad datového modelu se JsonPropertyNameAttribute
sadou a způsobem, jak se bude reprezentovat ve Weaviate.
using System.Text.Json.Serialization;
using Microsoft.Extensions.VectorData;
public class Hotel
{
[VectorStoreRecordKey]
public ulong HotelId { get; set; }
[VectorStoreRecordData(IsFilterable = true)]
public string HotelName { get; set; }
[VectorStoreRecordData(IsFullTextSearchable = true)]
public string Description { get; set; }
[JsonPropertyName("HOTEL_DESCRIPTION_EMBEDDING")]
[VectorStoreRecordVector(4, DistanceFunction.EuclideanDistance, IndexKind.QuantizedFlat)]
public ReadOnlyMemory<float>? DescriptionEmbedding { get; set; }
}
{
"id": 1,
"properties": { "HotelName": "Hotel Happy", "Description": "A place where everyone can be happy." },
"vectors": {
"HOTEL_DESCRIPTION_EMBEDDING": [0.9, 0.1, 0.1, 0.1],
}
}
Již brzy
Další informace budou brzy k dispozici.
Již brzy
Další informace budou brzy k dispozici.