ベクトルデータベース(Pinecone)
TsgcAIDatabaseVectorPinecone は、埋め込みをマネージドの Pinecone インデックスに格納します。取り込みではすべてのベクトルを 1 回の upsert にまとめ、クエリでは最も近い一致の元テキストを返します。コーパスを複数のマシンやユーザーで共有できます。
TsgcAIDatabaseVectorPinecone は、埋め込みをマネージドの Pinecone インデックスに格納します。取り込みではすべてのベクトルを 1 回の upsert にまとめ、クエリでは最も近い一致の元テキストを返します。コーパスを複数のマシンやユーザーで共有できます。
ファイルストアのクラウド版です。インターフェースも呼び出し方も同じですが、インデックスは Pinecone 上に置かれ、メモリに収まる範囲を超えてスケールします。
TsgcAIDatabaseVectorPinecone
マネージドのベクトルインデックス
Win32 および Win64
sgcAI は単体で完結しています。このコンポーネントは、土台となる sgcWebSockets Core ランタイムとともに sgcAI に同梱されているため、基本ライセンスを購入する必要はありません。
API キー、環境、インデックス、プロジェクトを設定して、埋め込みコンポーネントに割り当てます。
uses
sgcAI, sgcAI_DB_Vector_Pinecone, sgcAI_OpenAI_Embeddings;
var
oDB: TsgcAIDatabaseVectorPinecone;
oEmbeddings: TsgcAIOpenAIEmbeddings;
begin
oDB := TsgcAIDatabaseVectorPinecone.Create(nil);
oDB.PineconeOptions.ApiKey := 'pc-...';
oDB.PineconeOptions.Environment := 'us-west4-gcp-free';
oDB.PineconeIndexOptions.IndexName := 'sgc-embeddings';
oDB.PineconeIndexOptions.ProjectId := 'abcd1234';
oEmbeddings := TsgcAIOpenAIEmbeddings.Create(nil);
oEmbeddings.OpenAIOptions.ApiKey := 'sk-...';
oEmbeddings.Database := oDB;
// Every chunk is batched into a single upsert.
oEmbeddings.CreateEmbeddingsFromFile('manual.txt');
// Retrieve context for a question.
Memo1.Text := oEmbeddings.GetEmbedding('How do I reset the device?', '');
end;
// includes: sgcAI.hpp, sgcAI_DB_Vector_Pinecone.hpp
TsgcAIDatabaseVectorPinecone *oDB = new TsgcAIDatabaseVectorPinecone(NULL);
oDB->PineconeOptions->ApiKey = "pc-...";
oDB->PineconeOptions->Environment = "us-west4-gcp-free";
oDB->PineconeIndexOptions->IndexName = "sgc-embeddings";
oDB->PineconeIndexOptions->ProjectId = "abcd1234";
oDB->BeginAddData();
oDB->AddData("Reset procedure: hold the button for 10 seconds.", vVector);
oDB->EndAddData();
String vBest = oDB->QueryData(vQueryVector);
最もよく使うメンバーです。
ApiKey と Environment で Pinecone アカウントに対して認証し、インデックスが置かれているリージョンを選択します。
IndexName と ProjectId で対象のインデックスを指定します。どちらも Pinecone のコンソールで確認できます。
BeginAddData で収集を開始し、AddData でテキストとベクトルをキューに積み、EndAddData でバッチ全体を 1 回の upsert として送信します。チャンクごとにリクエストを送る必要はありません。
QueryData はインデックスに対して類似度クエリを発行し、最も一致したものの元テキストを返します。
OnBeginAddData でバッチの開始 id と id ラベルを設定するため、複数の取り込みを 1 つのインデックス内で衝突させずに共存させられます。
コーパスがローカルファイルに収まらなくなった場合、複数のアプリケーションで 1 つのインデックスを共有する場合、取り込みとクエリを別々のマシンで行う場合に最適です。
このコンポーネントが利用するサービスとプロトコルの一次情報です。