OpenAI Embeddings コンポーネント — sgcAI | eSeGeCe

OpenAI Embeddings

TsgcAIOpenAIEmbeddings は、検索拡張生成(RAG)における取り込みと検索を担います。コーパスをチャンクに分割し、それぞれの埋め込みベクトルを取得して、割り当てたベクトルストアに書き込み、任意のクエリに対して最も近い保存済みテキストを返します。

TsgcAIOpenAIEmbeddings

差し替え可能なストアを備えた埋め込み生成コンポーネントです。Database にベクトルデータベースコンポーネントを割り当てれば、チャンク分割、埋め込み生成、バッチ処理、書き込みという取り込みパイプライン全体が 1 回の呼び出しで実行されます。

コンポーネントクラス

TsgcAIOpenAIEmbeddings

用途

埋め込み生成と RAG 検索

プラットフォーム

Win32 および Win64

sgcAI は単体で完結しています。このコンポーネントは、土台となる sgcWebSockets Core ランタイムとともに sgcAI に同梱されているため、基本ライセンスを購入する必要はありません。

コーパスをインデックス化して検索する

ベクトルストアを割り当て、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-small です。ChunkSize はコーパスの分割方法を、WaitStoringData はストアへの書き込みペースを制御し、User はリクエストにタグを付けます。

取り込み

CreateEmbeddings は文字列を、CreateEmbeddingsFromFile はファイル全体をインデックス化します。いずれもストア上でバッチを開き、チャンクごとに 1 ベクトルを送信してから閉じます。

クエリ

GetEmbedding はクエリを埋め込みに変換し、最も近い保存済みテキストを返します。これがプロンプトにコンテキストとして貼り付ける文字列です。

バッチのイベント

OnCreateEmbeddingsStart は全体のサイズを通知し、OnCreateEmbeddingsProgress は進捗位置を通知するとともに継続フラグを備えているため、長時間の取り込みを中断できます。OnCreateEmbeddingsStop が処理を終了します。

チャンクごとのイベント

OnBeforeCreateEmbedding では個々のリクエストを検査して却下でき、OnAfterCreateEmbedding ではリクエストとレスポンスの両方を受け取れます。トークン消費量の監査に役立ちます。

仕様と参考資料

このコンポーネントが利用するサービスとプロトコルの一次情報です。

さらに詳しく

オンラインヘルプsgcAI コンポーネントの完全な API リファレンスと利用ガイドです。
sgcAI の全コンポーネント15 コンポーネントすべての機能一覧を確認できます。
無料体験版をダウンロード自社ドキュメントをインデックス化して、オフラインで検索できます。
価格Single、Team、Site の各ライセンス。完全なソースコード付き、基本製品は不要です。
最もお得な選択: All-AccesseSeGeCe の全製品にプレミアムサポートが付いて、年間 €1,059 からご利用いただけます。
All-Access の価格を見る

はじめてみませんか

無料体験版をダウンロードして、自社データに基づいて回答する言語モデルを実現しましょう。