Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Waarschuwing
De functionaliteit van Pinecone Vector Store is in preview, en verbeteringen die grote veranderingen vereisen, kunnen in beperkte omstandigheden nog steeds plaatsvinden voordat zij worden uitgebracht.
Waarschuwing
De functionaliteit van de Semantische Kernel Vector Store is in preview, en verbeteringen waartoe brekende wijzigingen behoren, kunnen nog steeds in beperkte omstandigheden optreden voor de release.
Waarschuwing
De functionaliteit van de Semantische Kernel Vector Store is in preview, en verbeteringen waartoe brekende wijzigingen behoren, kunnen nog steeds in beperkte omstandigheden optreden voor de release.
Overzicht
De Pinecone Vector Store-connector kan worden gebruikt voor toegang tot en beheer van gegevens in Pinecone. De verbindingslijn heeft de volgende kenmerken.
Functiegebied | Ondersteuning |
---|---|
Verzameling komt overeen met | Serverloze Index van Pinecone |
Ondersteunde sleuteleigenschapstypen | tekenreeks |
Ondersteunde gegevenseigenschapstypen |
|
Ondersteunde vectoreigenschappentypen |
|
Ondersteunde indextypen | PGA (Pinecone Graph Algorithm) |
Ondersteunde afstandsfuncties |
|
Ondersteunde filterclausules |
|
Ondersteunt meerdere vectoren in een record | Nee |
WordtIndexed ondersteund? | Ja |
Wordt Ondersteund doorFullTextIndexed? | Nee |
Wordt StorageName ondersteund? | Ja |
HybridSearch ondersteund? | Nee |
Geïntegreerde insluitingen ondersteund? | Nee |
Aan de slag
Voeg het NuGet-pakket van de Pinecone Vector Store-connector toe aan uw project.
dotnet add package Microsoft.SemanticKernel.Connectors.Pinecone --prerelease
U kunt het vectorarchief toevoegen aan de container voor afhankelijkheidsinjectie die beschikbaar is op KernelBuilder
of aan de IServiceCollection
container voor afhankelijkheidsinjectie met behulp van extensiemethoden die worden geleverd door Semantische Kernel.
using Microsoft.Extensions.DependencyInjection;
using Microsoft.SemanticKernel;
// Using Kernel Builder.
var kernelBuilder = Kernel
.CreateBuilder();
kernelBuilder.Services
.AddPineconeVectorStore(pineconeApiKey);
using Microsoft.Extensions.DependencyInjection;
// Using IServiceCollection with ASP.NET Core.
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddPineconeVectorStore(pineconeApiKey);
Extensiemethoden waarvoor geen parameters worden gebruikt, worden ook opgegeven. Hiervoor moet een exemplaar van PineconeClient
apart worden geregistreerd bij de container voor afhankelijkheidsinjectie.
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.Services.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();
U kunt rechtstreeks een Pinecone Vector Store-exemplaar maken.
using Microsoft.SemanticKernel.Connectors.Pinecone;
using PineconeClient = Pinecone.PineconeClient;
var vectorStore = new PineconeVectorStore(
new PineconeClient(pineconeApiKey));
Het is mogelijk om een directe verwijzing naar een benoemde verzameling te maken.
using Microsoft.SemanticKernel.Connectors.Pinecone;
using PineconeClient = Pinecone.PineconeClient;
var collection = new PineconeCollection<string, Hotel>(
new PineconeClient(pineconeApiKey),
"skhotels");
Indexnamespace
De Vector Store-abstractie biedt geen ondersteuning voor een groepeermechanisme met meerdere lagen. Verzamelingen in de abstractie komen overeen met een serverloze Pinecone-index en er is geen tweede niveau in de abstractie. Pinecone biedt wel ondersteuning voor een tweede groepeerniveau genaamd naamruimten.
Standaard geeft de Pinecone-connector null door als de naamruimte voor alle bewerkingen. Het is echter mogelijk om een enkele naamruimte aan de Pinecone-verzameling door te geven bij het samenstellen, en deze vervolgens voor alle bewerkingen te gebruiken.
using Microsoft.SemanticKernel.Connectors.Pinecone;
using PineconeClient = Pinecone.PineconeClient;
var collection = new PineconeCollection<string, Hotel>(
new PineconeClient(pineconeApiKey),
"skhotels",
new() { IndexNamespace = "seasidehotels" });
Datamapping
De Pinecone-connector biedt een standaardtoewijzingsfunctie bij het toewijzen van gegevens uit het gegevensmodel aan de opslag. Voor Pinecone moeten eigenschappen worden toegewezen aan ID-, metadata- en waardengroepen. De standaardmapper gebruikt de modelaantekeningen of recorddefinitie om het type van elke eigenschap te bepalen en deze mapping uit te voeren.
- De eigenschap van het gegevensmodel die als sleutel wordt geannoteerd, wordt toegewezen aan de eigenschap Pinecone-id.
- De eigenschappen van het gegevensmodel die zijn geannoteerd als gegevens, worden toegewezen aan het metagegevensobject Pinecone.
- De eigenschap van het gegevensmodel die is geannoteerd als een vector, wordt toegewezen aan de eigenschap Pinecone Vector.
Overschrijven van eigenschapsnaam
Voor gegevenseigenschappen kunt u veldnamen overschrijven die moeten worden gebruikt in de opslag die verschilt van de eigenschapsnamen in het gegevensmodel. Dit wordt niet ondersteund voor sleutels, omdat een sleutel een vaste naam heeft in Pinecone.
Het wordt ook niet ondersteund voor vectoren, omdat de vector wordt opgeslagen onder een vaste naam values
.
De eigenschapsnaam wordt overschreven door de optie StorageName
in te stellen via de attributen van het gegevensmodel of de recorddefinitie.
Hier is een voorbeeld van een gegevensmodel met StorageName
ingesteld voor zijn attributen en hoe dat in Pinecone wordt weergegeven.
using Microsoft.Extensions.VectorData;
public class Hotel
{
[VectorStoreKey]
public string HotelId { get; set; }
[VectorStoreData(IsIndexed = true, StorageName = "hotel_name")]
public string HotelName { get; set; }
[VectorStoreData(IsFullTextIndexed = true, StorageName = "hotel_description")]
public string Description { get; set; }
[VectorStoreVector(Dimensions: 4, DistanceFunction = DistanceFunction.CosineSimilarity, IndexKind = 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." }
}
Overzicht
De Pinecone Vector Store-connector kan worden gebruikt voor toegang tot en beheer van gegevens in Pinecone. De verbindingslijn heeft de volgende kenmerken.
Functiegebied | Ondersteuning |
---|---|
Verzameling komt overeen met | Serverloze Index van Pinecone |
Ondersteunde sleuteleigenschapstypen | tekenreeks |
Ondersteunde gegevenseigenschapstypen |
|
Ondersteunde vectoreigenschappentypen |
|
Ondersteunde indextypen | PGA (Pinecone Graph Algorithm) |
Ondersteunde afstandsfuncties |
|
Ondersteunde filterclausules |
|
Ondersteunt meerdere vectoren in een record | Nee |
Wordt Filterable ondersteund? | Ja |
WordtFullTextSearchable ondersteund? | Nee |
Geïntegreerde insluitingen ondersteund? | Ja, zie hier |
GRPC ondersteund? | Ja, zie hier |
Aan de slag
Voeg de Pinecone Vector Store-connector extra toe aan uw project.
pip install semantic-kernel[pinecone]
Vervolgens kunt u een PineconeStore-exemplaar maken en deze gebruiken om een verzameling te maken.
Hiermee wordt de API-sleutel van Pinecone uit de omgevingsvariabele PINECONE_API_KEY
gelezen.
from semantic_kernel.connectors.pinecone import PineconeStore
store = PineconeStore()
collection = store.get_collection(collection_name="collection_name", record_type=DataModel)
Het is mogelijk om een directe verwijzing naar een benoemde verzameling te maken.
from semantic_kernel.connectors.pinecone import PineconeCollection
collection = PineconeCollection(collection_name="collection_name", record_type=DataModel)
U kunt ook uw eigen Pinecone-client maken en doorgeven aan de constructor.
De client moet PineconeAsyncio
of PineconeGRPC
zijn (zie GRPC-ondersteuning).
from semantic_kernel.connectors.pinecone import PineconeStore, PineconeCollection
from pinecone import PineconeAsyncio
client = PineconeAsyncio(api_key="your_api_key")
store = PineconeStore(client=client)
collection = store.get_collection(collection_name="collection_name", record_type=DataModel)
GRPC-ondersteuning
We ondersteunen ook twee opties voor de verzamelingsconstructor, de eerste is om GRPC-ondersteuning in te schakelen:
from semantic_kernel.connectors.pinecone import PineconeCollection
collection = PineconeCollection(collection_name="collection_name", record_type=DataModel, use_grpc=True)
Of met uw eigen client:
from semantic_kernel.connectors.pinecone import PineconeStore
from pinecone.grpc import PineconeGRPC
client = PineconeGRPC(api_key="your_api_key")
store = PineconeStore(client=client)
collection = store.get_collection(collection_name="collection_name", record_type=DataModel)
Geïntegreerde insluitingen
De tweede is het gebruik van de geïntegreerde insluitingen van Pinecone. Hiermee wordt gecontroleerd op een omgevingsvariabele genaamd PINECONE_EMBED_MODEL
met de modelnaam, of u kunt een embed_settings
dict aanleveren, die alleen de modelsleutel kan bevatten, of de volledige instellingen voor het embeddermodel. In het eerste geval worden de andere instellingen afgeleid van de definitie van het gegevensmodel.
Zie Pinecone-documenten en bekijk daarna de Use integrated embeddings
secties.
from semantic_kernel.connectors.pinecone import PineconeCollection
collection = PineconeCollection(collection_name="collection_name", record_type=DataModel)
Als u de omgevingsvariabele niet wilt instellen, kunt u de insluitinstellingen ook doorgeven aan de constructor:
from semantic_kernel.connectors.pinecone import PineconeCollection
collection = PineconeCollection(collection_name="collection_name", record_type=DataModel, embed_settings={"model": "multilingual-e5-large"})
Dit kan andere details bevatten over de vectorinstallatie, zoals metrische gegevens en veldtoewijzing.
U kunt de insluitinstellingen ook doorgeven aan de methode ensure_collection_exists
. Hierdoor worden de standaardinstellingen die tijdens de initialisatie zijn ingesteld, overschreven.
from semantic_kernel.connectors.pinecone import PineconeCollection
collection = PineconeCollection(collection_name="collection_name", record_type=DataModel)
await collection.ensure_collection_exists(embed_settings={"model": "multilingual-e5-large"})
Belangrijk: GRPC en geïntegreerde insluitingen kunnen niet samen worden gebruikt.
Indexnamespace
De Vector Store-abstractie biedt geen ondersteuning voor een groepeermechanisme met meerdere lagen. Verzamelingen in de abstractie komen overeen met een serverloze Pinecone-index en er is geen tweede niveau in de abstractie. Pinecone biedt wel ondersteuning voor een tweede groepeerniveau genaamd naamruimten.
Standaard geeft de Pinecone-connector ''
door als naamruimte voor alle bewerkingen. Het is echter mogelijk om een enkele naamruimte aan de Pinecone-verzameling door te geven bij het samenstellen, en deze vervolgens voor alle bewerkingen te gebruiken.
from semantic_kernel.connectors.pinecone import PineconeCollection
collection = PineconeCollection(
collection_name="collection_name",
record_type=DataModel,
namespace="seasidehotels"
)
De Pinecone-connector is nog niet beschikbaar in Java.