Cliente Pinecone API para Delphi

· Componentes

A partir de sgcWebSockets 2023.6.0 se admite la API de Pinecone.

Pinecone.io

Pinecone es una base de datos vectorial que permite subir, consultar y eliminar datos vectoriales de forma sencilla y potente. Pinecone tiene una API pública que permite a terceros integrarlo en sus propias aplicaciones. El componente TsgcHTTP_API_Pinecone es un wrapper sobre la API de Pinecone.

Configuración

Antes de empezar debes registrarte en la web de Pinecone y solicitar una API. Esta api key se usa para enviar las peticiones a la API y debe configurarse en la propiedad PineconeOptions.ApiKey del componente TsgcHTTP_API_Pinecone.

Métodos

Se admiten los siguientes métodos:

  1.  Operaciones de Index: permite listar, crear, describir, eliminar y configurar índices.
  2. Operaciones de Collection: puedes listar, crear y describir colecciones.
  3. Operaciones de Vector: admite query, delete, update, upsert y fetch sobre los vectores.

Cómo hacer un UPSERT

A continuación tienes un ejemplo de UPSERT de un único vector 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; 

Cómo hacer un Query

A continuación tienes un ejemplo de QUERY sobre un único vector. 

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 siguiente demo muestra cómo funciona la API de Pinecone. La demo está compilada para Windows y usa el cliente Pinecone API de sgcWebSockets.