Dela via


Använda SQLite Vector Store-anslutningsappen (förhandsversion)

Varning

Funktionerna i Sqlite Vector Store är i förhandsversion och förbättringar som kräver icke-bakåtkompatibla ändringar kan fortfarande ske under begränsade omständigheter före lanseringen.

Varning

Funktionen Semantic Kernel Vector Store är i förhandsversion, och förbättringar som innebär icke-bakåtkompatibla ändringar kan fortfarande ske under begränsade omständigheter före lanseringen.

Varning

Funktionen Semantic Kernel Vector Store är i förhandsversion, och förbättringar som innebär icke-bakåtkompatibla ändringar kan fortfarande ske under begränsade omständigheter före lanseringen.

Översikt

SQLite Vector Store-anslutningsappen kan användas för att komma åt och hantera data i SQLite. Anslutningsappen har följande egenskaper.

Funktionsområde Stöd
Samlingskartor till SQLite-tabell
Nyckelegenskapstyper som stöds
  • Int
  • lång
  • sträng
Dataegenskapstyper som stöds
  • Int
  • lång
  • kort
  • sträng
  • Bool
  • flyttal
  • dubbel
  • byte[]
Egenskapstyper för vektorer som stöds
  • ReadOnlyMemory
  • Inbäddning<flyttal>
  • float[]
Indextyper som stöds Ej tillämpligt
Avståndsfunktioner som stöds
  • CosineDistance
  • ManhattanDistance
  • EuclideanDistance
Filtersatser som stöds
  • EqualTo
Stöder flera vektorer i en postering Ja
Stöds IsIndexed-funktionen? Nej
Stöds fulltextindexerad? Nej
Stöds StorageName? Ja
Stöds HybridSearch? Nej

Komma igång

Lägg till NuGet-paketet för SQLite Vector Store-anslutningsappen i projektet.

dotnet add package Microsoft.SemanticKernel.Connectors.SqliteVec --prerelease

Du kan lägga till vektorlagret i containern IServiceCollection för beroendeinmatning med hjälp av tilläggsmetoder som tillhandahålls av semantisk kernel.

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:")

Du kan skapa en SQLite Vector Store-instans direkt.

using Microsoft.SemanticKernel.Connectors.SqliteVec;

var vectorStore = new SqliteVectorStore("Data Source=:memory:");

Det går att skapa en direktreferens till en namngiven samling.

using Microsoft.SemanticKernel.Connectors.SqliteVec;

var collection = new SqliteCollection<string, Hotel>("Data Source=:memory:", "skhotels");

Mappning av data

SQLite Vector Store-anslutningsappen tillhandahåller en standardmappare vid mappning från datamodellen till lagring. Den här mapparen utför en direkt konvertering av listan med egenskaper i datamodellen till kolumnerna i SQLite.

Med vektorsökningstillägget lagras vektorer i virtuella tabeller, separat från nyckel- och dataegenskaper. Som standard använder den virtuella tabellen med vektorer samma namn som tabellen med nyckel- och dataegenskaper, men med ett vec_ prefix. Om samlingsnamnet i SqliteCollection till exempel är skhotelsblir namnet på den virtuella tabellen med vektorer vec_skhotels. Det går att åsidosätta det virtuella tabellnamnet med hjälp av SqliteVectorStoreOptions.VectorVirtualTableName- eller SqliteCollectionOptions<TRecord>.VectorVirtualTableName-egenskaperna.

Åsidosättning av egenskapsnamn

Du kan ange åsidosättningsegenskapsnamn som ska användas i lagring som skiljer sig från egenskapsnamnen i datamodellen. Åsidosättningen StorageName av egenskapsnamnet görs genom att alternativet anges via egenskapsattributen för datamodellen eller postdefinitionen.

Här är ett exempel på en datamodell med StorageName angivna attribut och hur den representeras i ett SQLite-kommando.

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
);

Kommer snart

Mer information kommer snart.

JDBC

JDBC-anslutningsappen kan användas för att ansluta till SQLite.