Bazy wektorowe — sgcWebSockets | eSeGeCe

Bazy wektorowe

Łącz się z bazami wektorowymi z Delphi na potrzeby wyszukiwania semantycznego, RAG i aplikacji napędzanych AI. Wsparcie dla Pinecone i innych.

Wyszukiwanie semantyczne i RAG w Delphi

Przechowuj tekst jako wielowymiarowe embeddingi i pobieraj najbardziej trafne fragmenty według znaczenia, a nie słów kluczowych.

Baza wektorowa przechowuje numeryczne embeddingi tworzone przez model embeddingów i pozwala znaleźć wpisy najbliższe wektorowi zapytania. To fundament wyszukiwania semantycznego i Retrieval-Augmented Generation (RAG), gdzie duży model językowy jest osadzany w kontekście fragmentów pobranych z Twoich własnych dokumentów, zamiast polegać wyłącznie na tym, co model zapamiętał podczas trenowania.

sgcWebSockets dostarcza dwa wymienne backendy magazynu wektorowego, które współdzielą ten sam komponent bazowy, TsgcAIDatabaseVector, dzięki czemu możesz zamienić jeden na drugi bez zmiany kodu ingestu czy zapytań. Połącz dowolny backend z komponentem TsgcAIOpenAIEmbeddings, aby zamienić surowy tekst na wektory i wysłać je prosto do magazynu.

  • TsgcAIDatabaseVectorFile — lokalny magazyn oparty na pliku. Bez zewnętrznej usługi, idealny do aplikacji desktopowych, użycia offline i mniejszych korpusów.
  • TsgcAIDatabaseVectorPinecone — zarządzana usługa chmurowa Pinecone przez jej API REST, dla dużych, współdzielonych lub skalowanych horyzontalnie indeksów.

Kiedy którego użyć: sięgnij po backend plikowy, gdy chcesz zero infrastruktury, a dane swobodnie mieszczą się na maszynie. Wybierz Pinecone, gdy indeks jest duży, musi być współdzielony między procesami lub użytkownikami albo musi skalować się ponad jednego hosta.

  • Przechowuj i odpytuj wielowymiarowe embeddings wektorowe
  • Wyszukiwanie semantycznego podobieństwa dla aplikacji RAG
  • Wsparcie dla wielu backendów baz wektorowych
  • Filtrowanie po metadanych i wyszukiwanie hybrydowe
  • Operacje wsadowe upsert i query

Jak to działa

Przypisz magazyn wektorowy do właściwości Database komponentu TsgcAIOpenAIEmbeddings, a następnie wywołaj CreateEmbeddingsFromFile, aby osadzić i wczytać cały dokument w jednej partii. Wewnętrznie każdy fragment jest dodawany przez sekwencję BeginAddData / AddData / EndAddData, którą magazyn dziedziczy po TsgcAIDatabaseVector, więc backendy plikowy i Pinecone zachowują się identycznie z punktu widzenia Twojego kodu.

W trakcie zapytania osadzasz pytanie użytkownika za pomocą GetEmbedding i przekazujesz powstały wektor do QueryData, który zwraca najbliższe dopasowania uszeregowane według podobieństwa kosinusowego. Podaj te fragmenty z powrotem do modelu czatu jako kontekst i masz działający potok RAG: odpowiedzi osadzone w Twoich własnych danych, z cytowaniami pod Twoją kontrolą. To samo podejście napędza wyszukiwanie semantyczne po bazach wiedzy, deduplikację, rekomendacje i klasteryzację, a wszystko to bez opuszczania Delphi czy C++ Builder.

Przykład w Delphi

Wczytaj korpus i odpytaj najbliższego sąsiada za pomocą dowolnego backendu.

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;

Gotowy korzystać z baz wektorowych?

Pobierz bezpłatną wersję próbną i zacznij budować w kilka minut.