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
Pinecone hat die Unterstützung für das .NET SDK eingestellt, indem sein Repository archiviert wurde.
Warnung
Die Funktionalität des Semantischer Kernel Vector Store befindet sich in der Vorschau, und Verbesserungen, die Änderungen erfordern, können in begrenzten Fällen vor der Veröffentlichung noch auftreten.
Warnung
Die Funktionalität des Semantischer Kernel Vector Store befindet sich in der Vorschau, und Verbesserungen, die Änderungen erfordern, können in begrenzten Fällen vor der Veröffentlichung noch auftreten.
Übersicht
Der Pinecone Vector Store-Connector kann verwendet werden, um auf Daten in Pinecone zuzugreifen und sie zu verwalten. Der Verbinder weist die folgenden Merkmale auf.
| Featurebereich | Unterstützung |
|---|---|
| Sammlung wird zugeordnet zu | Pinecone serverloser Index |
| Unterstützte Schlüssel-Eigenschaftstypen | string |
| Unterstützte Dateneigenschaftstypen |
|
| Unterstützte Vektor-Eigenschaftstypen |
|
| Unterstützte Indextypen | PGA (Pinecone Graphalgorithmus) |
| Unterstützte Entfernungsfunktionen |
|
| Unterstützte Filterklauseln |
|
| Unterstützt mehrere Vektoren in einem Datensatz | Nein |
| IstFilterbar unterstützt? | Ja |
| WirdFullTextSearchable unterstützt? | Nein |
| Integrierte Einbettungen unterstützt? | Ja, siehe hier |
| Wird GRPC unterstützt? | Ja, siehe hier |
Erste Schritte
Hinzufügen des Pinecone Vector Store Connector-Extras zu Ihrem Projekt
pip install semantic-kernel[pinecone]
Anschließend können Sie eine PineconeStore-Instanz erstellen und sie zum Erstellen einer Sammlung verwenden.
Dadurch wird der Pinecone-API-Schlüssel aus der Umgebungsvariablen PINECONE_API_KEYgelesen.
from semantic_kernel.connectors.pinecone import PineconeStore
store = PineconeStore()
collection = store.get_collection(collection_name="collection_name", record_type=DataModel)
Es ist möglich, einen direkten Verweis auf eine benannte Auflistung zu erstellen.
from semantic_kernel.connectors.pinecone import PineconeCollection
collection = PineconeCollection(collection_name="collection_name", record_type=DataModel)
Sie können auch Ihren eigenen Pinecone-Client erstellen und an den Konstruktor übergeben.
Der Client muss entweder PineconeAsyncio oder PineconeGRPC sein (siehe GRPC-Support).
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-Support
Außerdem unterstützen wir zwei Optionen für den Sammlungskonstruktor: Zunächst wird die GRPC-Unterstützung aktiviert:
from semantic_kernel.connectors.pinecone import PineconeCollection
collection = PineconeCollection(collection_name="collection_name", record_type=DataModel, use_grpc=True)
Oder mit Ihrem eigenen Kunden:
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)
Integrierte Einbettungen
Die zweite besteht darin, die integrierten Einbettungen von Pinecone zu verwenden. Dadurch wird eine Umgebungsvariable namens PINECONE_EMBED_MODEL mit dem Modellnamen überprüft, oder Sie können ein embed_settings Dict übergeben, das nur den Modellschlüssel oder die vollständigen Einstellungen für das Einbettungsmodell enthalten kann. Im früheren Fall werden die anderen Einstellungen aus der Datenmodelldefinition abgeleitet.
Siehe Pinecone-Dokumentation und dann die Use integrated embeddings Abschnitte.
from semantic_kernel.connectors.pinecone import PineconeCollection
collection = PineconeCollection(collection_name="collection_name", record_type=DataModel)
Wenn Sie die Umgebungsvariable nicht festlegen, können Sie alternativ die Einbettungseinstellungen an den Konstruktor übergeben:
from semantic_kernel.connectors.pinecone import PineconeCollection
collection = PineconeCollection(collection_name="collection_name", record_type=DataModel, embed_settings={"model": "multilingual-e5-large"})
Dies kann weitere Details zum Vektorsetup enthalten, z. B. Metrik und Feldzuordnung.
Sie können die Einbettungseinstellungen auch an die ensure_collection_exists-Methode übergeben. Dadurch werden die standardeinstellungen außer Kraft gesetzt, die während der Initialisierung festgelegt wurden.
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"})
Wichtig: GRPC und integrierte Einbettungen können nicht zusammen verwendet werden.
Index-Namespace
Die Vektorspeicher-Abstraktion unterstützt keinen Mechanismus für mehrstufige Datensatzgruppierung. Auflistungen innerhalb der Abstraktion werden einem serverlosen Pinecone-Index zugeordnet und es gibt keine zweite Ebene in der Abstraktion. Pinecone unterstützt eine zweite Ebene der Gruppierung namens Namespaces.
Standardmäßig übergibt der Pinecone-Connector '' als Namespace für alle Vorgänge. Es ist jedoch möglich, einen einzelnen Namespace an die Pinecone-Sammlung zu übergeben, wenn sie erstellt wird, und diesen stattdessen für alle Operationen zu verwenden.
from semantic_kernel.connectors.pinecone import PineconeCollection
collection = PineconeCollection(
collection_name="collection_name",
record_type=DataModel,
namespace="seasidehotels"
)
Der Pinecone-Connector ist in Java noch nicht verfügbar.