De Weaviate Vector Store-connector gebruiken (preview)
Waarschuwing
De Semantische Kernel Vector Store-functionaliteit is in preview en verbeteringen waarvoor wijzigingen die fouten veroorzaken, kunnen nog steeds in beperkte omstandigheden optreden voordat ze worden uitgebracht.
Overzicht
De Weaviate Vector Store-connector kan worden gebruikt voor toegang tot en beheer van gegevens in Weaviate. De verbindingslijn heeft de volgende kenmerken.
Functiegebied | Ondersteuning |
---|---|
Verzamelingstoewijzingen aan | Weaviate Collectie |
Ondersteunde sleuteleigenschapstypen | Guid |
Ondersteunde gegevenseigenschapstypen |
|
Ondersteunde vectoreigenschappentypen |
|
Ondersteunde indextypen |
|
Ondersteunde afstandsfuncties |
|
Ondersteunt meerdere vectoren in een record | Ja |
Wordt Filterable ondersteund? | Ja |
WordtFullTextSearchable ondersteund? | Ja |
Ondersteunde StoragePropertyName? | Nee, gebruik JsonSerializerOptions en JsonPropertyNameAttribute in plaats daarvan. Zie hier voor meer informatie. |
Beperkingen
Belangrijke beperkingen voor de functionaliteit van de Weaviate-connector.
Functiegebied | Tijdelijke oplossing |
---|---|
Het gebruik van de eigenschap Vector voor objecten met één vector wordt niet ondersteund | Het gebruik van de eigenschap vectoren wordt in plaats daarvan ondersteund. |
Aan de slag
Voeg het NuGet-pakket van de Weaviate Vector Store-connector toe aan uw project.
dotnet add package Microsoft.SemanticKernel.Connectors.Weaviate --prerelease
U kunt het vectorarchief toevoegen aan de container voor afhankelijkheidsinjectie die beschikbaar is op of KernelBuilder
aan de IServiceCollection
container voor afhankelijkheidsinjectie met behulp van extensiemethoden die worden geleverd door Semantische kernel.
De Weaviate vector store maakt gebruik van een HttpClient
om te communiceren met de Weaviate service. Er zijn twee opties voor het opgeven van de URL/het eindpunt voor de Weaviate-service.
Het kan worden opgegeven via opties of door het basisadres van de HttpClient
.
In dit eerste voorbeeld ziet u hoe u de service-URL instelt via opties.
Houd er ook rekening mee dat met deze methoden een HttpClient
exemplaar wordt opgehaald voor het aanroepen naar de Weaviate-service van de provider van de afhankelijkheidsinjectieservice.
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/") });
Overbelastingen waar u uw eigen HttpClient
kunt opgeven, worden ook verstrekt.
In dit geval is het mogelijk om de service-URL in te stellen via de HttpClient
BaseAddress
optie.
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);
U kunt ook rechtstreeks een Weaviate Vector Store-exemplaar maken.
using System.Net.Http;
using Microsoft.SemanticKernel.Connectors.Weaviate;
var vectorStore = new WeaviateVectorStore(
new HttpClient { BaseAddress = new Uri("http://localhost:8080/v1/") });
Het is mogelijk om een directe verwijzing naar een benoemde verzameling te maken.
using System.Net.Http;
using Microsoft.SemanticKernel.Connectors.Weaviate;
var collection = new WeaviateVectorStoreRecordCollection<Hotel>(
new HttpClient { BaseAddress = new Uri("http://localhost:8080/v1/") },
"skhotels");
Indien nodig is het mogelijk om een API-sleutel als optie door te geven bij gebruik van een van de bovenstaande mechanismen, bijvoorbeeld
using Microsoft.SemanticKernel;
var kernelBuilder = Kernel
.CreateBuilder()
.AddWeaviateVectorStore(options: new() { Endpoint = new Uri("http://localhost:8080/v1/"), ApiKey = secretVar });
Gegevenstoewijzing
De Weaviate Vector Store-connector biedt een standaardtoewijzingsper bij het toewijzen van het gegevensmodel aan opslag. Weaviate vereist dat eigenschappen worden toegewezen aan id-, nettolading- en vectorgroepen. De standaardtoewijzing gebruikt de modelaantekeningen of recorddefinitie om het type van elke eigenschap te bepalen en om deze toewijzing uit te voeren.
- De eigenschap van het gegevensmodel die als sleutel wordt geannoteerd, wordt toegewezen aan de eigenschap Weaviate
id
. - De eigenschappen van het gegevensmodel die zijn geannoteerd als gegevens, worden toegewezen aan het Weaviate-object
properties
. - De eigenschappen van het gegevensmodel die zijn geannoteerd als vectoren, worden toegewezen aan het Weaviate-object
vectors
.
De standaard mapper gebruikt System.Text.Json.JsonSerializer
om te converteren naar het opslagschema.
Dit betekent dat het gebruik van het JsonPropertyNameAttribute
bestand wordt ondersteund als een andere opslagnaam voor de naam van de gegevensmodeleigenschap is vereist.
Hier volgt een voorbeeld van een gegevensmodel met JsonPropertyNameAttribute
een set en hoe dat wordt weergegeven in 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],
}
}
Binnenkort beschikbaar
Binnenkort meer informatie.
Binnenkort beschikbaar
Binnenkort meer informatie.