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 Sqlite-Vector-Store-Funktionalität befindet sich in der Vorschau, und Verbesserungen, die inkopatible Änderungen erfordern, können unter begrenzten Umständen noch vor der Veröffentlichung erfolgen.
Warnung
Die Funktionalität des semantischen Kernel-Vektorspeichers befindet sich in der Vorschau, und Verbesserungen, die einschneidende Änderungen erfordern, können unter bestimmten begrenzten Umständen noch vor der Veröffentlichung auftreten.
Warnung
Die Funktionalität des semantischen Kernel-Vektorspeichers befindet sich in der Vorschau, und Verbesserungen, die einschneidende Änderungen erfordern, können unter bestimmten begrenzten Umständen noch vor der Veröffentlichung auftreten.
Übersicht
Der SQLite Vector Store-Connector kann verwendet werden, um auf Daten in SQLite zuzugreifen und sie zu verwalten. Der Verbinder weist die folgenden Merkmale auf.
| Funktionsbereich | Unterstützung |
|---|---|
| Zuordnungen von Sammlungen | SQLite-Tabelle |
| Unterstützte Schlüsseleigenschaftentypen |
|
| Unterstützte Daten-Eigenschaftstypen |
|
| Unterstützte Typen von Vektoreigenschaften |
|
| Unterstützte Indextypen | N/V |
| Unterstützte Entfernungsfunktionen |
|
| Unterstützte Filterklauseln |
|
| Unterstützt mehrere Vektoren in einem Datensatz | Ja |
| Wird Indized unterstützt? | Nein |
| WirdFullTextIndexed unterstützt? | Nein |
| Wird StorageName unterstützt? | Ja |
| HybridSearch wird unterstützt? | Nein |
Erste Schritte
Fügen Sie dem Projekt das NuGet-Paket des SQLite Vector Store-Connectors hinzu.
dotnet add package Microsoft.SemanticKernel.Connectors.SqliteVec --prerelease
Sie können den Vektorspeicher mithilfe von vom semantischen Kernel bereitgestellten Erweiterungsmethoden zum Dependency-Injection-Container IServiceCollection hinzufügen.
using Microsoft.Extensions.DependencyInjection;
// Using IServiceCollection with ASP.NET Core.
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddSqliteVectorStore(_ => "Data Source=:memory:");
using Microsoft.Extensions.DependencyInjection;
using Microsoft.SemanticKernel;
// Using IServiceCollection with ASP.NET Core.
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddSqliteVectorStore(_ => "Data Source=:memory:")
Sie können eine SQLite Vector Store-Instanz direkt erstellen.
using Microsoft.SemanticKernel.Connectors.SqliteVec;
var vectorStore = new SqliteVectorStore("Data Source=:memory:");
Es ist möglich, einen direkten Verweis auf eine benannte Auflistung zu erstellen.
using Microsoft.SemanticKernel.Connectors.SqliteVec;
var collection = new SqliteCollection<string, Hotel>("Data Source=:memory:", "skhotels");
Datenzuordnung
Der SQLite Vector Store-Connector bietet bei der Zuordnung vom Datenmodell zum Speicher einen Standard-Mapper an. Dieser Mapper führt eine direkte Konvertierung der Liste der Eigenschaften im Datenmodell in die Spalten in SQLite durch.
Mit der Vektorsucherweiterung werden Vektoren in virtuellen Tabellen getrennt von Schlüssel- und Dateneigenschaften gespeichert.
Standardmäßig verwendet die virtuelle Tabelle mit Vektoren denselben Namen wie die Tabelle mit Schlüssel- und Dateneigenschaften, aber mit einem vec_ Präfix. Wenn der Auflistungsname SqliteCollection beispielsweise lautet skhotels, lautet vec_skhotelsder Name der virtuellen Tabelle mit Vektoren. Es ist möglich, den Namen der virtuellen Tabelle durch Verwendung der SqliteVectorStoreOptions.VectorVirtualTableName- oder SqliteCollectionOptions<TRecord>.VectorVirtualTableName-Eigenschaft zu überschreiben.
Außerkraftsetzung des Eigenschaftsnamens
Sie können Eigenschaftsnamen überschreiben, die im Speicher verwendet werden sollen und sich von den Eigenschaftsnamen im Datenmodell unterscheiden.
Die Außerkraftsetzung des Eigenschaftennamens erfolgt durch Festlegen der StorageName Option über die Eigenschaftenattribute des Datenmodells oder die Datensatzdefinition.
Hier ist ein Beispiel für ein Datenmodell, dessen Attribute auf StorageName gesetzt sind und wie das in einem SQLite-Befehl dargestellt wird.
using Microsoft.Extensions.VectorData;
public class Hotel
{
[VectorStoreKey]
public ulong HotelId { get; set; }
[VectorStoreData(StorageName = "hotel_name")]
public string? HotelName { get; set; }
[VectorStoreData(StorageName = "hotel_description")]
public string? Description { get; set; }
[VectorStoreVector(Dimensions: 4, DistanceFunction = DistanceFunction.CosineDistance)]
public ReadOnlyMemory<float>? DescriptionEmbedding { get; set; }
}
CREATE TABLE Hotels (
HotelId INTEGER PRIMARY KEY,
hotel_name TEXT,
hotel_description TEXT
);
CREATE VIRTUAL TABLE vec_Hotels (
HotelId INTEGER PRIMARY KEY,
DescriptionEmbedding FLOAT[4] distance_metric=cosine
);
In Kürze verfügbar
Weitere Informationen werden in Kürze verfügbar sein.
JDBC
Der JDBC-Connector kann verwendet werden, um eine Verbindung mit SQLite herzustellen.