Vector Database (Pinecone)
TsgcAIDatabaseVectorPinecone은 임베딩을 관리형 Pinecone 인덱스에 저장합니다. 수집 시 모든 벡터를 하나의 upsert로 묶어 보내고, 조회 시에는 가장 가까운 항목의 저장된 텍스트를 반환하므로, 코퍼스를 여러 컴퓨터와 사용자가 공유할 수 있습니다.
TsgcAIDatabaseVectorPinecone은 임베딩을 관리형 Pinecone 인덱스에 저장합니다. 수집 시 모든 벡터를 하나의 upsert로 묶어 보내고, 조회 시에는 가장 가까운 항목의 저장된 텍스트를 반환하므로, 코퍼스를 여러 컴퓨터와 사용자가 공유할 수 있습니다.
파일 저장소의 클라우드 버전입니다. 인터페이스와 호출 방식은 같지만 인덱스가 Pinecone에 있어 메모리 한계를 넘어 확장됩니다.
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가 청크마다 요청을 보내는 대신 배치 전체를 하나의 upsert로 전송합니다.
QueryData는 인덱스에 유사도 질의를 보내고, 가장 잘 맞는 항목의 저장된 텍스트를 반환합니다.
OnBeginAddData가 배치의 첫 ID와 ID 레이블을 지정하므로, 여러 번의 수집이 충돌 없이 하나의 인덱스에 공존할 수 있습니다.
코퍼스가 로컬 파일 규모를 넘어설 때, 여러 애플리케이션이 하나의 인덱스를 공유할 때, 또는 수집과 조회가 서로 다른 컴퓨터에서 일어날 때 가장 적합합니다.
이 컴포넌트가 사용하는 서비스와 프로토콜의 공식 자료입니다.