Vektör Veritabanları
Anlamsal arama, RAG ve yapay zeka destekli uygulamalar için Delphi'den vektör veritabanlarına bağlanın. Pinecone ve daha fazlası için destek.
Anlamsal arama, RAG ve yapay zeka destekli uygulamalar için Delphi'den vektör veritabanlarına bağlanın. Pinecone ve daha fazlası için destek.
Metni yüksek boyutlu embeddings olarak depolayın ve en alakalı pasajları anahtar kelimelere göre değil, anlama göre getirin.
Bir vektör veritabanı, bir embedding modeli tarafından üretilen sayısal embeddings'i depolar ve bir sorgu vektörüne en yakın girdileri bulmanıza olanak tanır. Bu, anlamsal aramanın ve Retrieval-Augmented Generation (RAG) yönteminin temelidir; burada büyük bir dil modelini, yalnızca modelin eğitim sırasında ezberlediklerine güvenmek yerine kendi belgelerinizden çekilen pasajlarla beslersiniz.
sgcWebSockets, aynı temel bileşeni, TsgcAIDatabaseVector, paylaşan birbirinin yerine geçebilen iki vektör depolama arka ucu sunar, böylece alım veya sorgu kodunuzu değiştirmeden birini diğeriyle değiştirebilirsiniz. Ham metni vektörlere dönüştürüp doğrudan depoya göndermek için her iki arka ucu da TsgcAIOpenAIEmbeddings bileşeniyle eşleştirin.
Hangisini ne zaman kullanmalı: sıfır altyapı istediğinizde ve veriler makineye rahatça sığdığında dosya arka ucunu tercih edin. Dizin büyükse, işlemler veya kullanıcılar arasında paylaşılması gerekiyorsa ya da tek bir ana bilgisayarın ötesine ölçeklenmesi gerekiyorsa Pinecone'u seçin.
Bir vektör deposunu bir TsgcAIOpenAIEmbeddings bileşeninin Database özelliğine atayın, ardından bir belgenin tamamını tek bir toplu işlemde embed edip almak için CreateEmbeddingsFromFile çağırın. Dahili olarak her parça, deponun TsgcAIDatabaseVector'dan miras aldığı BeginAddData / AddData / EndAddData dizisi aracılığıyla eklenir, böylece dosya ve Pinecone arka uçları kodunuzun bakış açısından aynı şekilde davranır.
Sorgu zamanında, kullanıcının sorusunu GetEmbedding ile embed edersiniz ve elde edilen vektörü, kosinüs benzerliğine göre sıralanmış en yakın eşleşmeleri döndüren QueryData'ya iletirsiniz. Bu pasajları bağlam olarak bir sohbet modeline geri besleyin ve çalışan bir RAG işlem hattınız olsun: kendi verilerinize dayanan, sizin kontrol ettiğiniz alıntılarla desteklenen yanıtlar. Aynı yaklaşım, Delphi veya C++ Builder'dan ayrılmadan bilgi tabanları üzerinde anlamsal arama, yinelenenleri kaldırma, öneri ve kümeleme işlemlerini de güçlendirir.
Bir derlemi alın ve her iki arka uçla da en yakın komşuyu sorgulayın.
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;