Delen via


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
  • tekenreeks
  • byte
  • kort
  • int
  • long
  • dubbel
  • zwevend
  • decimal
  • bool
  • Datum en tijd
  • DateTimeOffset
  • Guid
  • en opsommingen van elk van deze typen
Ondersteunde vectoreigenschappentypen
  • ReadOnlyMemory<float>
  • ReadOnlyMemory<double>
Ondersteunde indextypen
  • Hnsw
  • Vast
  • Dynamisch
Ondersteunde afstandsfuncties
  • CosineDistance
  • DotProductsimilarity
  • EuclideanSquaredDistance
  • Hamming
  • ManhattanDistance
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.