Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Advertencia
La funcionalidad del Sqlite Vector Store está en versión preliminar, y las mejoras que requieran cambios importantes podrían seguir ocurriendo en circunstancias limitadas antes del lanzamiento.
Advertencia
La funcionalidad Almacén de vectores del Kernel Semántico está en fase de vista previa, y mejoras que requieren cambios importantes aún pueden producirse en circunstancias limitadas antes del lanzamiento.
Advertencia
La funcionalidad Almacén de vectores del Kernel Semántico está en fase de vista previa, y mejoras que requieren cambios importantes aún pueden producirse en circunstancias limitadas antes del lanzamiento.
Información general
El conector del almacén de vectores de SQLite se puede usar para acceder a los datos y administrarlos en SQLite. El conector tiene las siguientes características.
Área de características | Soporte técnico |
---|---|
La colección se mapea a | Tabla SQLite |
Tipos de propiedades de clave admitidos |
|
Tipos de propiedad de datos admitidos |
|
Tipos de propiedades vectoriales admitidos |
|
Tipos de índice admitidos | N/D |
Funciones de distancia admitidas |
|
Cláusulas de filtro admitidas |
|
Admite varios vectores en un registro | Sí |
¿Está IsIndexed soportado? | No |
¿Está IsFullTextIndexed soportado? | No |
¿Se admite StorageName? | Sí |
¿Se admite HybridSearch? | No |
Comenzar
Agregue el paquete NuGet del conector SQLite Vector Store a tu proyecto.
dotnet add package Microsoft.SemanticKernel.Connectors.SqliteVec --prerelease
Puede añadir el almacén de vectores en el IServiceCollection
contenedor de inserción de dependencias mediante métodos de extensión proporcionados por el Kernel Semántico.
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:")
Puede construir una instancia de SQLite Vector Store directamente.
using Microsoft.SemanticKernel.Connectors.SqliteVec;
var vectorStore = new SqliteVectorStore("Data Source=:memory:");
Es posible construir una referencia directa a una colección con nombre.
using Microsoft.SemanticKernel.Connectors.SqliteVec;
var collection = new SqliteCollection<string, Hotel>("Data Source=:memory:", "skhotels");
Asignación de datos
El conector de almacenamiento de vectores de SQLite proporciona un mapeador predeterminado al mapear desde el modelo de datos al almacenamiento. Este mapeador hace una conversión directa de la lista de propiedades del modelo de datos a las columnas de SQLite.
Con la extensión de búsqueda vectorial, los vectores se almacenan en tablas virtuales, independientemente de las propiedades de clave y datos.
De forma predeterminada, la tabla virtual con vectores usará el mismo nombre que la tabla con propiedades de clave y datos, pero con un vec_
prefijo. Por ejemplo, si el nombre de la colección de SqliteCollection
es skhotels
, el nombre de la tabla virtual con vectores será vec_skhotels
. Es posible invalidar el nombre de la tabla virtual mediante las SqliteVectorStoreOptions.VectorVirtualTableName
propiedades o SqliteCollectionOptions<TRecord>.VectorVirtualTableName
.
Invalidación del nombre de propiedad
Puede proporcionar nombres de propiedad de sobrescritura para usar en el almacenamiento que sean diferentes de los nombres de propiedad del modelo de datos.
La anulación del nombre de propiedad se realiza mediante la configuración de la opción StorageName
a través de los atributos de propiedad del modelo de datos o la definición de registro.
Este es un ejemplo de un modelo de datos con StorageName
establecido en sus atributos y cómo se representará en un comando SQLite.
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
);
Próximamente
Más información próximamente.
JDBC
El conector JDBC se puede usar para conectarse a SQLite.