Vector Database (File)
TsgcAIDatabaseVectorFile 把嵌入向量及其源文本存储在两个本地文件中。把它赋给一个嵌入向量组件,您就得到了一个随应用程序一起分发的可检索语料库,既不需要服务器,也没有按查询计费的成本。
TsgcAIDatabaseVectorFile 把嵌入向量及其源文本存储在两个本地文件中。把它赋给一个嵌入向量组件,您就得到了一个随应用程序一起分发的可检索语料库,既不需要服务器,也没有按查询计费的成本。
一个无依赖的向量存储。向量及其源文本保存在内存中,批次关闭时写入磁盘,查询时扫描以找出最接近的匹配项。
sgcAI 是自包含的。该组件随 sgcAI 一同交付,并附带它所基于的 sgcWebSockets Core 运行时,因此无需购买基础授权。
把该组件指向一个输入文件和一个向量文件,再把它赋给一个嵌入向量组件,剩下的它会自动完成。
uses
sgcAI, sgcAI_DB_Vector_File, sgcAI_OpenAI_Embeddings;
var
oDB: TsgcAIDatabaseVectorFile;
oEmbeddings: TsgcAIOpenAIEmbeddings;
begin
oDB := TsgcAIDatabaseVectorFile.Create(nil);
oDB.VectorFileOptions.InputFilename := 'corpus.sgcif';
oDB.VectorFileOptions.VectorFilename := 'corpus.sgcvf';
oEmbeddings := TsgcAIOpenAIEmbeddings.Create(nil);
oEmbeddings.OpenAIOptions.ApiKey := 'sk-...';
oEmbeddings.Database := oDB;
oEmbeddings.CreateEmbeddingsFromFile('manual.txt');
// The store can also be driven directly.
oDB.BeginAddData;
oDB.AddData('Reset procedure: hold the button for 10 seconds.', vVector);
oDB.EndAddData;
Memo1.Text := oDB.QueryData(vQueryVector);
end;
// includes: sgcAI.hpp, sgcAI_DB_Vector_File.hpp
TsgcAIDatabaseVectorFile *oDB = new TsgcAIDatabaseVectorFile(NULL);
oDB->VectorFileOptions->InputFilename = "corpus.sgcif";
oDB->VectorFileOptions->VectorFilename = "corpus.sgcvf";
oDB->BeginAddData();
oDB->AddData("Reset procedure: hold the button for 10 seconds.", vVector);
oDB->EndAddData();
String vBest = oDB->QueryData(vQueryVector);
您最常使用的成员。
InputFilename 保存按 id 索引的源文本,VectorFilename 保存与之对应的向量。把这两个文件随应用程序一起分发,语料库即可离线使用。
BeginAddData 开启一个批次,AddData 添加一段文本及其向量,EndAddData 关闭该批次并把两个文件写入磁盘。
QueryData 接受一个查询向量,扫描已存储的向量以找出最接近的匹配项,并返回其背后的原始文本。
OnBeginAddData 让您为某个批次设置起始 id 和 id 标签,使第二次导入可以追加到已有语料库上,而不是覆盖它。
它最适合能够轻松放进内存的语料库,以及必须在无网络连接时也能工作的桌面应用程序。对于大型或共享索引,请改用 Pinecone 存储。
它实现了与 TsgcAIDatabaseVectorPinecone 相同的接口,因此从本地文件迁移到托管索引只是换一个组件,而不是改代码。