Playground e Busca de embeddings
Um projeto de embeddings tem duas formas de experimentar um modelo base público ou um modelo de embeddings
hospedado antes de construir sobre ele: o Playground, que gera embeddings e
compara alguns textos, e a Busca, que classifica os trechos de um conjunto
de dados contra uma consulta. Os dois chamam o mesmo modelo e são
cobrados como chamadas a
/embeddings.
Playground
Em Modelos hospedados, escolha Usar modelo e depois Abrir no Playground para abrir o projeto com o modelo de embeddings selecionado. Abrir o Playground não envia uma requisição de inferência; use Comparar, Gerar embedding ou Busca para executar uma.
O seletor de modo sempre mostra Busca, Similaridade e Vetor. A Busca fica desabilitada com uma explicação quando a indexação não está disponível ou o projeto não tem um modelo de embeddings disponível. Modelos base funcionam nos três modos sem ajuste fino nem criação de alias hospedado. A Similaridade inclui exemplos de reembolso e acesso à API. Escolher um exemplo apenas preenche os campos; pressionar Comparar envia a requisição de inferência cobrada. Dimensões, normalização e instruções de consulta seguem o modelo servido, sem substituição por requisição. O rótulo Modelo base identifica um modelo do catálogo.
POST /api/v1/projects/{owner_slug}/{project_slug}/playground/embeddings/vector
POST /api/v1/projects/{owner_slug}/{project_slug}/playground/embeddings/similarity
Vector recebe {model, input, input_type} e retorna os vetores dos seus
textos, com a revisão exata do modelo (target) que os produziu e a instrução
efetiva. input_type é query ou document; um modelo treinado com
query_instruction a aplica só às consultas.
Similarity recebe {model, source, documents} e retorna a similaridade de
cosseno de cada documento com a consulta, na ordem de entrada. Ela gera o
embedding da consulta e depois o dos documentos, em lotes, e cada um é cobrado
como uma requisição de embeddings: usage.billable_requests diz quantas. Se
uma requisição posterior falhar, as anteriores ainda podem ser cobradas. Vector
é cobrado da mesma forma.
Valem os mesmos limites de entrada de /embeddings, e eles são aplicados no
servidor.
Busca
Use um ID público como ReOpenly/Qwen3-Embedding-0.6B ou um alias hospedado
no mesmo campo model. Um índice base retorna saved_model_id: null,
base_model_artifact_id e o ID público em model; um índice hospedado mantém
saved_model_id inteiro. Ambos fixam o artefato e a política de inferência,
com as mesmas permissões, cobrança, cotas e cancelamento. Alterações ou
indisponibilidade do modelo base tornam o índice desatualizado.
Escolha o conjunto de dados pelo nome em Corpus. A Busca classifica os trechos da captura indexada contra uma consulta. Os IDs das capturas ficam em Detalhes da captura, fora do seletor principal.
GET /api/v1/projects/{owner_slug}/{project_slug}/search/corpora
GET /api/v1/projects/{owner_slug}/{project_slug}/search/versions
GET /api/v1/projects/{owner_slug}/{project_slug}/search/indexes
POST /api/v1/projects/{owner_slug}/{project_slug}/search/indexes
POST /api/v1/projects/{owner_slug}/{project_slug}/search/indexes/{index_id}/query
POST /api/v1/projects/{owner_slug}/{project_slug}/search/indexes/{index_id}/cancel
DELETE /api/v1/projects/{owner_slug}/{project_slug}/search/indexes/{index_id}
Criar um índice. GET /search/corpora lista os conjuntos de dados de
embeddings ativos pelo nome, com contagens de exemplos e digests da seleção
atual. Envie dataset_id, model e credit_ceiling a POST /search/indexes.
Isso captura o conjunto de dados atual completo, sem treinamento ou divisão
entre treino e avaliação. A API também aceita dataset_version_id para uma
captura existente; envie exatamente um desses identificadores.
GET /search/versions mostra as capturas históricas e os limites da Busca.
Criar um índice gera os embeddings de cada trecho positivo e negativo distinto com
o modelo base público ou hospedado que você escolher, em lotes cobrados no preço normal desse
modelo; cada lote aparece no seu registro de créditos. Você define um teto de
créditos para a criação: ela para de enviar lotes quando o gasto chega ao
teto, e um lote já em andamento pode terminar um pouco acima dele. Um índice
está pronto quando o status indica; embedded_count e spent_credits mostram
o progresso.
Alterações no conjunto de dados. As alterações não modificam o índice existente nem iniciam uma reconstrução cobrada automaticamente. O Playground mostra Conjunto de dados alterado quando o digest atual difere da captura indexada. Escolha Atualizar índice e aprove um limite de créditos para capturar e indexar o conteúdo novo. O índice antigo permanece disponível até ser excluído e continua contando na cota de armazenamento.
Apenas um índice pode ser criado por vez em um projeto, inclusive uma criação em fila aguardando um endpoint. Trocar o modelo ou o Corpus não libera essa vaga. O Playground identifica uma criação bloqueadora fora da seleção atual e oferece Parar indexação; Criar e Atualizar ficam desativados até ela parar ou terminar. Também é possível parar um índice em fila ou execução no inventário em detalhes da captura, carregando índices antigos quando necessário. Índices prontos continuam disponíveis para busca.
Parar a indexação. Criações em fila, em execução ou aguardando nova tentativa
oferecem Parar indexação, também disponível em
POST /search/indexes/{index_id}/cancel. A ação interrompe o índice e impede
novas tentativas automáticas. Um lote já iniciado pode terminar o processamento,
mas sua resposta tardia não pode gravar vetores ou uma cobrança após o
cancelamento. Cobranças já confirmadas e progresso parcial permanecem visíveis.
Parar não libera armazenamento: exclua o índice interrompido quando não precisar
mais dele. Repetir a ação é seguro; índices prontos ou com falha respondem
409 search_index_not_building, pois não há mais uma criação a interromper.
Consultar. Cada consulta gera o embedding do seu texto uma vez (uma requisição normal cobrada) e classifica o índice exatamente por similaridade de cosseno, retornando cada trecho com posição, pontuação, o exemplo de origem e se foi cortado.
Limites. Um índice guarda no máximo 20.000 trechos, e os índices de um projeto dividem 256 MB de armazenamento de vetores. Os vetores armazenados não têm cobrança à parte.
Índices desatualizados. Se o modelo hospedado for apontado para outro modelo, desativado ou alterado, ou se a versão não estiver mais disponível, o índice é marcado como desatualizado e recusa consultas: exclua-o e crie um novo. Excluir um índice remove seus trechos e vetores na hora; créditos já gastos não são devolvidos. Um índice que falhou continua contando na cota de armazenamento até ser excluído.
Se a Busca ou o Playground não estiverem disponíveis para o seu projeto, a API
responde 409 project_capability_mismatch.
Cada campo dessas requisições e respostas está na referência da API.
Paginação do histórico
GET /api/v1/playground/sessions sempre retorna {data, next_cursor, total_count}.
Use limit (25 por padrão, máximo 100) e passe cursor=<next_cursor> para a
próxima página. A lista omite mensagens e aceita o filtro de dono/projeto.
Solicitações salvas
O Playground global permite alternar entre Texto e Embeddings e selecionar um projeto de embeddings no painel Parâmetros. O tipo e o projeto ficam na URL. Os três modos usam os modelos e o escopo de cobrança desse projeto.
Solicitações bem-sucedidas de Search, Similaridade e Vetor salvam entradas, modelo, configurações e resultados no Histórico, inclusive após sair da página ou recarregar. Abrir uma solicitação restaura o resultado sem executar ou cobrar outra inferência. Resultados de Search continuam sendo um retrato da solicitação original, mesmo se o corpus ou índice mudar.
O botão de excluir ao lado de cada entrada remove suas entradas e resultados salvos. Não exclui índice, dataset ou modelo e não reembolsa a inferência. O histórico é privado à conta e ao projeto, permanece até sua exclusão ou a exclusão da conta, e pode ser consultado ou excluído mesmo sem disponibilidade de inferência. Se o salvamento falhar, Tentar novamente salva o resultado sem repetir a inferência.
A API compartilhada aceita embedding_run tipado com mode, model, entradas
do modo e result, limitado a 2 MB. São registros enviados pelo cliente,
não provas independentes de cobrança ou qualidade. A listagem expõe
embedding_mode sem entradas nem resultados; consulte uma sessão para lê-los.
Use task=embedding ou task=text_generation para separar históricos; sem
task, ambos são listados. O cursor pertence ao tipo e escopo originais.