Použití konektoru Pinecone (Preview)
Upozorňující
Funkce sémantického úložiště vektorů jádra je ve verzi Preview a vylepšení, která vyžadují zásadní změny, se můžou vyskytovat za omezených okolností před vydáním.
Přehled
Konektor Pinecone Vector Store lze použít pro přístup k datům v Pineconu a jejich správě. Konektor má následující charakteristiky.
Oblast funkcí | Technická podpora |
---|---|
Kolekce map na | Borovice bezserverový index |
Podporované typy vlastností klíče | string |
Podporované typy datových vlastností |
|
Podporované typy vektorových vlastností | ReadOnlyMemory<float> |
Podporované typy indexů | PGA (Pinecone Graph Algorithm) |
Podporované funkce vzdálenosti |
|
Podporuje více vektorů v záznamu. | No |
Je podporováno Filtrování? | Ano |
Podporuje se IsFullTextSearchable? | No |
StoragePropertyName se podporuje? | Ano |
Začínáme
Přidejte do projektu balíček NuGet konektoru Pinecone Vector Store.
dotnet add package Microsoft.SemanticKernel.Connectors.Pinecone --prerelease
Vektorové úložiště můžete přidat do kontejneru injektáže závislostí dostupného IServiceCollection
v KernelBuilder
kontejneru injektáže závislostí nebo do kontejneru injektáže závislostí pomocí rozšiřujících metod poskytovaných sémantickým jádrem.
using Microsoft.SemanticKernel;
// Using Kernel Builder.
var kernelBuilder = Kernel
.CreateBuilder()
.AddPineconeVectorStore(pineconeApiKey);
using Microsoft.SemanticKernel;
// Using IServiceCollection with ASP.NET Core.
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddPineconeVectorStore(pineconeApiKey);
K dispozici jsou také metody rozšíření, které nepoužívají žádné parametry. Vyžadují samostatnou registraci instance PineconeClient
kontejneru injektáže závislostí.
using Microsoft.Extensions.DependencyInjection;
using Microsoft.SemanticKernel;
using PineconeClient = Pinecone.PineconeClient;
// Using Kernel Builder.
var kernelBuilder = Kernel.CreateBuilder();
kernelBuilder.Services.AddSingleton<PineconeClient>(
sp => new PineconeClient(pineconeApiKey));
kernelBuilder.AddPineconeVectorStore();
using Microsoft.Extensions.DependencyInjection;
using Microsoft.SemanticKernel;
using PineconeClient = Pinecone.PineconeClient;
// Using IServiceCollection with ASP.NET Core.
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddSingleton<PineconeClient>(
sp => new PineconeClient(pineconeApiKey));
builder.Services.AddPineconeVectorStore();
Instanci Pinecone Vector Store můžete vytvořit přímo.
using Microsoft.SemanticKernel.Connectors.Pinecone;
using PineconeClient = Pinecone.PineconeClient;
var vectorStore = new PineconeVectorStore(
new PineconeClient(pineconeApiKey));
Je možné vytvořit přímý odkaz na pojmenovanou kolekci.
using Microsoft.SemanticKernel.Connectors.Pinecone;
using PineconeClient = Pinecone.PineconeClient;
var collection = new PineconeVectorStoreRecordCollection<Hotel>(
new PineconeClient(pineconeApiKey),
"skhotels");
Obor názvů indexu
Abstrakce vektorového úložiště nepodporuje mechanismus seskupování více vrstev záznamů. Kolekce v abstrakci mapují na bezserverový index Pinecone a v abstrakci neexistuje žádná druhá úroveň. Pinecone podporuje druhou úroveň seskupování označovaných jako obory názvů.
Ve výchozím nastavení konektor Pinecone předá hodnotu null jako obor názvů pro všechny operace. Při vytváření kolekce Pinecone je však možné předat jeden obor názvů a místo toho ho použít pro všechny operace.
using Microsoft.SemanticKernel.Connectors.Pinecone;
using PineconeClient = Pinecone.PineconeClient;
var collection = new PineconeVectorStoreRecordCollection<Hotel>(
new PineconeClient(pineconeApiKey),
"skhotels",
new() { IndexNamespace = "seasidehotels" });
Mapování dat
Konektor Pinecone poskytuje výchozí mapovač při mapování dat z datového modelu do úložiště. Pinecone vyžaduje, aby vlastnosti byly mapovány na ID, metadata a seskupení hodnot. Výchozí mapovač používá k určení typu každé vlastnosti a k tomuto mapování poznámky modelu nebo definici záznamu.
- Vlastnost datového modelu anotovaná jako klíč bude mapována na vlastnost Pinecone ID.
- Vlastnosti datového modelu anotované jako data budou mapovány na objekt metadat Pinecone.
- Vlastnost datového modelu anotovaná jako vektor se mapuje na vlastnost Pinecone vector.
Přepsání názvu vlastnosti
U vlastností dat můžete zadat názvy polí přepsání pro použití v úložišti, které se liší od názvů vlastností datového modelu. U klíčů to není podporováno, protože klíč má pevný název v Pinecone.
Také není podporován pro vektory, protože vektor je uložen pod pevným názvem values
.
Přepsání názvu vlastnosti se provádí nastavením StoragePropertyName
možnosti prostřednictvím atributů datového modelu nebo definice záznamu.
Tady je příklad datového modelu se StoragePropertyName
sadou jeho atributů a způsob, jak bude reprezentován v Pinecone.
using Microsoft.Extensions.VectorData;
public class Hotel
{
[VectorStoreRecordKey]
public ulong HotelId { get; set; }
[VectorStoreRecordData(IsFilterable = true, StoragePropertyName = "hotel_name")]
public string HotelName { get; set; }
[VectorStoreRecordData(IsFullTextSearchable = true, StoragePropertyName = "hotel_description")]
public string Description { get; set; }
[VectorStoreRecordVector(Dimensions: 4, DistanceFunction.CosineDistance, IndexKind.Hnsw)]
public ReadOnlyMemory<float>? DescriptionEmbedding { get; set; }
}
{
"id": "h1",
"values": [0.9, 0.1, 0.1, 0.1],
"metadata": { "hotel_name": "Hotel Happy", "hotel_description": "A place where everyone can be happy." }
}
Konektor Pinecone ještě není v Pythonu k dispozici.
Konektor Pinecone ještě není v Javě k dispozici.