Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Warnung
Die Weaviate Vector Store-Funktionalität befindet sich in der Vorschau, und Verbesserungen, die breaking changes erfordern, können unter begrenzten Umständen noch vor der Veröffentlichung auftreten.
Warnung
Die Funktionalität des Semantischen Kernel-Vector-Stores befindet sich in der Vorschau, und Verbesserungen, die Änderungen erfordern, die wichtige Anpassungen bedingen, können in begrenzten Fällen vor der Freigabe noch auftreten.
Warnung
Die Funktionalität des Semantischen Kernel-Vector-Stores befindet sich in der Vorschau, und Verbesserungen, die Änderungen erfordern, die wichtige Anpassungen bedingen, können in begrenzten Fällen vor der Freigabe noch auftreten.
Übersicht
Der Weaviate Vector Store-Connector kann verwendet werden, um auf Daten in Weaviate zuzugreifen und sie zu verwalten. Der Verbinder weist die folgenden Merkmale auf.
Featurebereich | Unterstützung |
---|---|
Zuweisungen der Sammlungen | Weaviate Sammlung |
Unterstützte Schlüsseleigenschaftentypen | Leitfaden |
Unterstützte Dateneigenschaftstypen |
|
Unterstützte Typen von Vektoreigenschaften |
|
Unterstützte Indextypen |
|
Unterstützte Entfernungsfunktionen |
|
Unterstützte Filterklauseln |
|
Unterstützt mehrere Vektoren in einem Datensatz | Ja |
Wird Indized unterstützt? | Ja |
WirdFullTextIndexed unterstützt? | Ja |
Wird StorageName unterstützt? | Nein, verwenden JsonSerializerOptions Und JsonPropertyNameAttribute stattdessen.
Weitere Informationen finden Sie hier. |
HybridSearch wird unterstützt? | Ja |
Featurebereich | Unterstützung |
---|---|
Zuweisungen der Sammlungen | Weaviate Sammlung |
Unterstützte Schlüsseleigenschaftentypen | Leitfaden |
Unterstützte Dateneigenschaftstypen |
|
Unterstützte Typen von Vektoreigenschaften |
|
Unterstützte Indextypen |
|
Unterstützte Entfernungsfunktionen |
|
Unterstützte Filterklauseln |
|
Unterstützt mehrere Vektoren in einem Datensatz | Ja |
IstFilterbar unterstützt? | Ja |
WirdFullTextSearchable unterstützt? | Ja |
Demnächst.
Begrenzungen
Wichtige Einschränkungen der Weaviate-Verbinderfunktionalität.
Featurebereich | Problemumgehung |
---|---|
Die Verwendung der Eigenschaft "vector" für einzelne Vektorobjekte wird nicht unterstützt. | Die Verwendung der Eigenschaft "vectors" wird stattdessen unterstützt. |
Warnung
Weaviate erfordert, dass Sammlungsnamen mit einem Großbuchstaben beginnen. Wenn Sie keinen Sammlungsnamen mit einem Großbuchstaben angeben, gibt Weaviate einen Fehler zurück, wenn Sie versuchen, Ihre Sammlung zu erstellen. Der Fehler, den Sie sehen, ist Cannot query field "mycollection" on type "GetObjectsObj". Did you mean "Mycollection"?
, wobei mycollection
der Name der Sammlung ist. Wenn Sie in diesem Beispiel stattdessen den Sammlungsnamen in Mycollection
ändern, wird der Fehler behoben.
Erste Schritte
Fügen Sie das NuGet-Paket des Weaviate Vector Store-Connectors zu Ihrem Projekt hinzu.
dotnet add package Microsoft.SemanticKernel.Connectors.Weaviate --prerelease
Sie können den Vektorspeicher dem verfügbaren Abhängigkeitsinjektionscontainer für KernelBuilder
hinzufügen oder dem IServiceCollection
Abhängigkeitsinjektionscontainer mithilfe der vom Semantischen Kernel bereitgestellten Erweiterungsmethoden hinzufügen.
Der Weaviate-Vektorspeicher verwendet eine HttpClient
zur Kommunikation mit dem Weaviate-Dienst. Es gibt zwei Optionen für die Bereitstellung der URL/des Endpunkts für den Weaviate-Dienst.
Die Bereitstellung kann über Optionen oder durch Festlegen der Basisadresse des HttpClient
erfolgen.
In diesem ersten Beispiel wird gezeigt, wie die Dienst-URL über Optionen festgelegt wird.
Beachten Sie außerdem, dass diese Methoden eine HttpClient
Instanz für Aufrufe an den Weaviate-Dienst vom Anbieter für Abhängigkeitseinfügungen abrufen.
using Microsoft.Extensions.DependencyInjection;
using Microsoft.SemanticKernel;
// Using Kernel Builder.
var kernelBuilder = Kernel
.CreateBuilder();
kernelBuilder.Services
.AddWeaviateVectorStore(new Uri("http://localhost:8080/v1/"), apiKey: null);
using Microsoft.Extensions.DependencyInjection;
// Using IServiceCollection with ASP.NET Core.
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddWeaviateVectorStore(new Uri("http://localhost:8080/v1/"), apiKey: null);
Überladungen, bei denen Sie eigene HttpClient
angeben können, sind ebenfalls verfügbar.
In diesem Fall ist es möglich, die Dienst-URL über die HttpClient
BaseAddress
Option festzulegen.
using System.Net.Http;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.SemanticKernel;
// Using Kernel Builder.
var kernelBuilder = Kernel.CreateBuilder();
using HttpClient client = new HttpClient { BaseAddress = new Uri("http://localhost:8080/v1/") };
kernelBuilder.Services.AddWeaviateVectorStore(_ => client);
using System.Net.Http;
using Microsoft.Extensions.DependencyInjection;
// 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);
Sie können auch eine Weaviate Vector Store-Instanz direkt erstellen.
using System.Net.Http;
using Microsoft.SemanticKernel.Connectors.Weaviate;
var vectorStore = new WeaviateVectorStore(
new HttpClient { BaseAddress = new Uri("http://localhost:8080/v1/") });
Es ist möglich, einen direkten Verweis auf eine benannte Auflistung zu erstellen.
using System.Net.Http;
using Microsoft.SemanticKernel.Connectors.Weaviate;
var collection = new WeaviateCollection<Guid, Hotel>(
new HttpClient { BaseAddress = new Uri("http://localhost:8080/v1/") },
"Skhotels");
Bei Bedarf ist es möglich, einen API-Schlüssel als Option zu übergeben, wenn eines der oben genannten Mechanismen verwendet wird, z. B.
using Microsoft.SemanticKernel;
var kernelBuilder = Kernel
.CreateBuilder();
kernelBuilder.Services
.AddWeaviateVectorStore(new Uri("http://localhost:8080/v1/"), secretVar);
Datenzuordnung
Der Weaviate Vector Store-Connector stellt beim Zuordnen vom Datenmodell zum Speicher einen Standard-Mapper bereit. Weaviate erfordert, dass Eigenschaften in die Gruppierungen id, Nutzlast und Vektoren zugeordnet werden. Der Standardzuordnungs-Mapper verwendet die Modellanmerkungen oder die Datensatzdefinition, um den Typ jeder Eigenschaft zu bestimmen und diese Zuordnung auszuführen.
- Die als Schlüssel gekennzeichnete Datenmodelleigenschaft wird der Weaviate-Eigenschaft
id
zugeordnet. - Die Datenmodelleigenschaften, die als Daten gekennzeichnet sind, werden dem Weaviate-Objekt
properties
zugeordnet. - Die Als Vektoren gekennzeichneten Datenmodelleigenschaften werden dem Weaviate-Objekt
vectors
zugeordnet.
Der Standard-Mapper verwendet System.Text.Json.JsonSerializer
, um in das Speicherschema zu konvertieren.
Dies bedeutet, dass die Verwendung von JsonPropertyNameAttribute
unterstützt wird, wenn ein anderer Speichername benötigt wird als der Name der Eigenschaft im Datenmodell.
Hier ist ein Beispiel für ein Datenmodell mit JsonPropertyNameAttribute
Set und wie dies in Weaviate dargestellt wird.
using System.Text.Json.Serialization;
using Microsoft.Extensions.VectorData;
public class Hotel
{
[VectorStoreKey]
public Guid HotelId { get; set; }
[VectorStoreData(IsIndexed = true)]
public string HotelName { get; set; }
[VectorStoreData(IsFullTextIndexed = true)]
public string Description { get; set; }
[JsonPropertyName("HOTEL_DESCRIPTION_EMBEDDING")]
[VectorStoreVector(4, DistanceFunction = DistanceFunction.CosineDistance, IndexKind = IndexKind.QuantizedFlat)]
public ReadOnlyMemory<float>? DescriptionEmbedding { get; set; }
}
{
"id": "11111111-1111-1111-1111-111111111111",
"properties": { "HotelName": "Hotel Happy", "Description": "A place where everyone can be happy." },
"vectors": {
"HOTEL_DESCRIPTION_EMBEDDING": [0.9, 0.1, 0.1, 0.1],
}
}
Erste Schritte
Fügen Sie Ihrem Projekt die Verbindungsabhängigkeiten des Weaviate Vector Store hinzu.
pip install semantic-kernel[weaviate]
Anschließend können Sie den Vektorspeicher erstellen, er verwendet Umgebungseinstellungen, um eine Verbindung herzustellen:
Für die Verwendung von Weaviate Cloud:
- url: WEAVIATE_URL
- api_key: WEAVIATE_API_KEY
Zur Verwendung von Weaviate Local (d. h. Weaviate in einem Docker-Container):
- local_host: WEAVIATE_LOCAL_HOST
- local_port: WEAVIATE_LOCAL_PORT
- local_grpc_port: WEAVIATE_LOCAL_GRPC_PORT
Wenn Sie eingebettete Anwendungen verwenden möchten:
- use_embed: WEAVIATE_USE_EMBED
Diese sollten ausschließlich festgelegt werden, sodass nur eine Gruppe der obigen Elemente vorhanden ist, andernfalls wird eine Ausnahme ausgelöst.
from semantic_kernel.connectors.weaviate import WeaviateStore
store = WeaviateStore()
Alternativ können Sie auch Ihren eigenen MongoDB-Client übergeben, wenn Sie mehr Kontrolle über die Konstruktion des Clients haben möchten.
import weaviate
from semantic_kernel.connectors.weaviate import WeaviateStore
client = weaviate.WeaviateAsyncClient(...)
store = WeaviateStore(async_client=client)
Sie können auch eine Sammlung direkt ohne das Geschäft erstellen.
from semantic_kernel.connectors.weaviate import WeaviateCollection
# `hotel` is a class created with the @vectorstoremodel decorator
collection = WeaviateCollection(
collection_name="my_collection",
record_type=hotel
)
Serialisierung
Der Weaviate-Client gibt seine eigenen Objekte zurück, die analysiert und in Diktaten im regulären Fluss umgewandelt werden, weitere Details zu diesem Konzept finden Sie in der Serialisierungsdokumentation.
In Kürze verfügbar
Weitere Informationen werden in Kürze verfügbar sein.