OpenAI Embeddings
TsgcAIOpenAIEmbeddings 负责检索增强生成中的数据导入和查找环节。它把语料库切分成块,为每一块请求一个嵌入向量,写入您所指定的任意向量存储,并为任何查询返回最接近的已存储文本。
TsgcAIOpenAIEmbeddings 负责检索增强生成中的数据导入和查找环节。它把语料库切分成块,为每一块请求一个嵌入向量,写入您所指定的任意向量存储,并为任何查询返回最接近的已存储文本。
带可插拔存储的嵌入向量生成。把一个向量数据库组件赋给 Database,整条导入流水线(分块、嵌入、分批和写入)便可由一次调用完成。
sgcAI 是自包含的。该组件随 sgcAI 一同交付,并附带它所基于的 sgcWebSockets Core 运行时,因此无需购买基础授权。
指定一个向量存储,调用一次 CreateEmbeddingsFromFile,之后就能为每个用户问题查找上下文。
uses
sgcAI, sgcAI_OpenAI_Embeddings, sgcAI_DB_Vector_File;
var
oEmbeddings: TsgcAIOpenAIEmbeddings;
oDB: TsgcAIDatabaseVectorFile;
vContext: string;
begin
oDB := TsgcAIDatabaseVectorFile.Create(nil);
oDB.VectorFileOptions.InputFilename := 'corpus.sgcif';
oDB.VectorFileOptions.VectorFilename := 'corpus.sgcvf';
oEmbeddings := TsgcAIOpenAIEmbeddings.Create(nil);
oEmbeddings.OpenAIOptions.ApiKey := 'sk-...';
oEmbeddings.EmbeddingsOptions.Model := 'text-embedding-3-small';
oEmbeddings.EmbeddingsOptions.ChunkSize := 4096;
oEmbeddings.Database := oDB;
oEmbeddings.OnCreateEmbeddingsProgress := EmbeddingsProgress;
// One pass over the corpus, done once.
oEmbeddings.CreateEmbeddingsFromFile('manual.txt');
// Then, per question, retrieve the nearest chunk.
vContext := oEmbeddings.GetEmbedding('How do I reset the device?', '');
end;
procedure TForm1.EmbeddingsProgress(Sender: TObject;
aPosition: Int64; var aContinue: Boolean);
begin
ProgressBar1.Position := aPosition;
aContinue := not CancelRequested;
end;
// includes: sgcAI.hpp, sgcAI_OpenAI_Embeddings.hpp, sgcAI_DB_Vector_File.hpp
TsgcAIDatabaseVectorFile *oDB = new TsgcAIDatabaseVectorFile(NULL);
oDB->VectorFileOptions->InputFilename = "corpus.sgcif";
oDB->VectorFileOptions->VectorFilename = "corpus.sgcvf";
TsgcAIOpenAIEmbeddings *oEmbeddings = new TsgcAIOpenAIEmbeddings(NULL);
oEmbeddings->OpenAIOptions->ApiKey = "sk-...";
oEmbeddings->Database = oDB;
oEmbeddings->CreateEmbeddingsFromFile("manual.txt");
String vContext = oEmbeddings->GetEmbedding("How do I reset the device?", "");
您最常使用的成员。
Database 接受任意向量存储组件。本地文件用 TsgcAIDatabaseVectorFile,托管索引用 TsgcAIDatabaseVectorPinecone。导入代码无需改动。
Model 默认为 text-embedding-3-small。ChunkSize 控制语料库的切分方式,WaitStoringData 调节写入存储的节奏,User 则为请求打上标记。
CreateEmbeddings 索引一个字符串,CreateEmbeddingsFromFile 索引整个文件。两者都会在存储上开启一个批次,为每一块推送一个向量,然后关闭该批次。
GetEmbedding 对查询做嵌入并返回最接近的已存储文本,也就是您作为上下文粘贴到提示词中的那段字符串。
OnCreateEmbeddingsStart 报告总大小,OnCreateEmbeddingsProgress 报告进度位置并带有继续标志,以便中止长时间的导入,OnCreateEmbeddingsStop 结束本次运行。
OnBeforeCreateEmbedding 可以检查并否决单个请求,OnAfterCreateEmbedding 把请求和响应交给您,这在审计令牌开销时很有用。
该组件所用服务和协议的权威资料来源。