OpenAI Embeddings 组件 — sgcAI | eSeGeCe

OpenAI Embeddings

TsgcAIOpenAIEmbeddings 负责检索增强生成中的数据导入和查找环节。它把语料库切分成块,为每一块请求一个嵌入向量,写入您所指定的任意向量存储,并为任何查询返回最接近的已存储文本。

TsgcAIOpenAIEmbeddings

带可插拔存储的嵌入向量生成。把一个向量数据库组件赋给 Database,整条导入流水线(分块、嵌入、分批和写入)便可由一次调用完成。

组件类

TsgcAIOpenAIEmbeddings

用途

嵌入向量与 RAG 检索

平台

Win32 和 Win64

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

Database 接受任意向量存储组件。本地文件用 TsgcAIDatabaseVectorFile,托管索引用 TsgcAIDatabaseVectorPinecone。导入代码无需改动。

EmbeddingsOptions

Model 默认为 text-embedding-3-smallChunkSize 控制语料库的切分方式,WaitStoringData 调节写入存储的节奏,User 则为请求打上标记。

导入

CreateEmbeddings 索引一个字符串,CreateEmbeddingsFromFile 索引整个文件。两者都会在存储上开启一个批次,为每一块推送一个向量,然后关闭该批次。

查询

GetEmbedding 对查询做嵌入并返回最接近的已存储文本,也就是您作为上下文粘贴到提示词中的那段字符串。

批处理事件

OnCreateEmbeddingsStart 报告总大小,OnCreateEmbeddingsProgress 报告进度位置并带有继续标志,以便中止长时间的导入,OnCreateEmbeddingsStop 结束本次运行。

逐块事件

OnBeforeCreateEmbedding 可以检查并否决单个请求,OnAfterCreateEmbedding 把请求和响应交给您,这在审计令牌开销时很有用。

规范与参考资料

该组件所用服务和协议的权威资料来源。

继续探索

在线帮助sgcAI 组件的完整 API 参考和使用指南。
所有 sgcAI 组件浏览全部 15 个组件的完整功能矩阵。
下载免费试用版索引您自己的文档,并离线查询它们。
价格Single、Team 和 Site 授权,均含完整源代码,无需基础产品。
超值之选:All-AccesseSeGeCe 全部产品,含高级支持,每年 €1,059 起。
查看 All-Access 价格

准备好开始了吗?

下载免费试用版,让语言模型基于您自己的数据作答。