Client API Pinecone per Delphi

· Componenti

A partire da sgcWebSockets 2023.6.0 è supportata l'API Pinecone.

Pinecone.io

Pinecone è un database vettoriale che permette di caricare / interrogare / eliminare dati vettoriali in modo semplice e potente. Pinecone ha un'API pubblica che permette a terze parti di integrare Pinecone nelle proprie applicazioni. Il componente TsgcHTTP_API_Pinecone è un wrapper sull'API di Pinecone.

Configurazione

Prima di iniziare, devi registrarti sul sito di Pinecone e richiedere una API. Questa API key viene usata per inviare le richieste API e deve essere impostata nella proprietà PineconeOptions.ApiKey del componente TsgcHTTP_API_Pinecone.

Metodi

Sono supportati i seguenti metodi:

  1.  Index Operations: permettono di elencare, creare, descrivere, eliminare e configurare gli index.
  2. Collection Operations: puoi elencare, creare e descrivere le operazioni.
  3. Vector Operations: supportano query, delete, update, upsert e fetch dei vettori.

Come eseguire l'UPSERT

Di seguito un esempio di UPSERT di un singolo vettore con Id = "id1". 

procedure UpsertPinecone(const aIndexName, aProjectId: string; const aVector: Array of Double);
var
  oPinecone: TsgcHTTP_API_Pinecone;
  oParams: TsgcHTTPPineconeVectorUpserts;
  oVectors: TsgcArrayOfVectorUpsert;
begin
  oPinecone := TsgcHTTP_API_Pinecone.Create(nil);
  Try
    oPinecone.PineconeOptions.API := 'your-api-key';
    oParams := TsgcHTTPPineconeVectorUpserts.Create;
    Try
      SetLength(oVectors, 1);
      oVectors[0] := TsgcHTTPPineconeVectorUpsert.Create;
      oVectors[0].Id := 'id1';
      oVectors[0].Values := aVector;
      oParams.Vectors := oVectors;
      Pinecone.VectorsUpsert(aIndexName, aProjectId, oParams);
    Finally
      oParams.Free;
    End;
  Finally
    oPinecone.Free;
  End;
end; 

Come eseguire una Query

Di seguito un esempio di QUERY di un singolo vettore. 

procedure QueryPinecone(const aIndexName, aProjectId: string; const aVector: Array of Double);
var
  oParams: TsgcHTTPPineconeVectorQuery;
begin
  oParams := TsgcHTTPPineconeVectorQuery.Create;
  Try
    oParams.Vector := aVector;
    Pinecone.VectorsQuery(aIndexName, aProjectId, oParams);
  Finally
    oParams.Free;
  End;
end; 

Demo

La demo seguente mostra come funziona l'API Pinecone; la demo è compilata per Windows e usa il client API Pinecone di sgcWebSockets.