Vectordatabases — sgcWebSockets | eSeGeCe

Vectordatabases

Maak verbinding met vectordatabases vanuit Delphi voor semantisch zoeken, RAG en AI-aangedreven toepassingen. Ondersteuning voor Pinecone en meer.

Semantisch zoeken & RAG in Delphi

Sla tekst op als hoogdimensionale embeddings en haal de meest relevante passages op op basis van betekenis, niet van trefwoorden.

Een vectordatabase slaat de numerieke embeddings op die door een embeddingmodel worden geproduceerd en laat je de entries vinden die het dichtst bij een queryvector liggen. Dit is de basis van semantisch zoeken en Retrieval-Augmented Generation (RAG), waarbij je een groot taalmodel verankert met passages uit je eigen documenten in plaats van uitsluitend te vertrouwen op wat het model tijdens de training heeft onthouden.

sgcWebSockets levert twee uitwisselbare vectoropslag-backends die hetzelfde basiscomponent delen, TsgcAIDatabaseVector, zodat je de ene voor de andere kunt verwisselen zonder je ingest- of querycode te wijzigen. Combineer een van beide backends met het component TsgcAIOpenAIEmbeddings om ruwe tekst om te zetten in vectoren en die rechtstreeks in de opslag te plaatsen.

  • TsgcAIDatabaseVectorFile — een lokale, bestandsgebaseerde opslag. Geen externe service, ideaal voor desktoptoepassingen, offline gebruik en kleinere corpora.
  • TsgcAIDatabaseVectorPinecone — de beheerde Pinecone-cloudservice via de REST API, voor grote, gedeelde of horizontaal geschaalde indexen.

Wanneer welke gebruiken: kies voor de bestands-backend wanneer je geen infrastructuur wilt en de data comfortabel op de machine past. Kies Pinecone wanneer de index groot is, gedeeld moet worden tussen processen of gebruikers, of moet schalen voorbij één host.

  • Sla hoogdimensionale vector embeddings op en bevraag ze
  • Semantische similarity search voor RAG-toepassingen
  • Ondersteuning voor meerdere vectordatabase-backends
  • Metadata-filtering en hybride zoekopdrachten
  • Batch-upsert- en query-operaties

Hoe het werkt

Wijs een vectoropslag toe aan de eigenschap Database van een TsgcAIOpenAIEmbeddings-component en roep vervolgens CreateEmbeddingsFromFile aan om een heel document in één batch te embedden en te ingesten. Intern wordt elk fragment toegevoegd via de sequentie BeginAddData / AddData / EndAddData die de opslag overerft van TsgcAIDatabaseVector, zodat de bestands- en Pinecone-backends zich vanuit het oogpunt van je code identiek gedragen.

Bij het bevragen embed je de vraag van de gebruiker met GetEmbedding en geef je de resulterende vector door aan QueryData, die de dichtstbijzijnde matches retourneert gerangschikt op cosinus-overeenkomst. Voer die passages terug naar een chatmodel als context en je hebt een werkende RAG-pipeline: antwoorden verankerd in je eigen data, met bronvermeldingen die jij beheert. Dezelfde aanpak ondersteunt semantisch zoeken over kennisbanken, deduplicatie, aanbevelingen en clustering, allemaal zonder Delphi of C++ Builder te verlaten.

Delphi-voorbeeld

Ingest een corpus en bevraag de dichtstbijzijnde buur met een van beide backends.

uses
  sgcAI, sgcAI_OpenAI_Embeddings,
  sgcAI_DB_Vector, sgcAI_DB_Vector_File, sgcAI_DB_Vector_Pinecone;

var
  Embeddings: TsgcAIOpenAIEmbeddings;
  DBFile: TsgcAIDatabaseVectorFile;
  DBPinecone: TsgcAIDatabaseVectorPinecone;
begin
  Embeddings := TsgcAIOpenAIEmbeddings.Create(nil);
  Embeddings.OpenAIOptions.ApiKey := 'sk-...';

  // Local file-based vector store
  DBFile := TsgcAIDatabaseVectorFile.Create(nil);
  DBFile.VectorFileOptions.InputFilename  := 'corpus.sgcif';
  DBFile.VectorFileOptions.VectorFilename := 'corpus.sgcvf';
  Embeddings.Database := DBFile;
  Embeddings.CreateEmbeddingsFromFile('docs.txt');

  // Or push to the Pinecone cloud index
  DBPinecone := TsgcAIDatabaseVectorPinecone.Create(nil);
  DBPinecone.PineconeOptions.ApiKey         := 'pc-...';
  DBPinecone.PineconeIndexOptions.IndexName := 'sgc-embeddings';
  Embeddings.Database := DBPinecone;

  // Query the nearest neighbour for an arbitrary text
  Results := Embeddings.Database.QueryData(
    Embeddings.GetEmbedding('what is sgcWebSockets?', ''));
end;

Klaar om vectordatabases te gebruiken?

Download de gratis proefversie en begin binnen enkele minuten te bouwen.