Skip to main content
Use Arquivos para enviar documentos uma vez. Use Armazenamentos de Vetores para indexar esses arquivos para busca e recuperação semânticas. Este é o padrão padrão para assistentes baseados em documentos, fluxos de recuperação e respostas fundamentadas.

Fazer upload de um arquivo

Faça upload do arquivo com multipart/form-data. A especificação OpenAPI ativa exige file e purpose.
A resposta retorna um objeto file com um ID como file-abc123.

Criar um armazenamento de vetores

Crie um armazenamento de vetores e anexe um ou mais IDs de arquivos enviados.
Esta resposta retorna um ID de armazenamento de vetores como vs_abc123.

Criar um armazenamento de grafo

Defina retrieval_mode como "graph" para obter recuperação com reconhecimento de grafo em vez de similaridade vetorial simples. Em um armazenamento de grafo, entidades e relações são extraídas de cada trecho na ingestão para construir um grafo de conhecimento, e a busca percorre esse grafo para coletar evidências conectadas, em vez de retornar apenas os trechos mais próximos. Os ganhos aparecem em perguntas que exigem ligar fatos entre vários documentos. Duas opções se aplicam somente a armazenamentos de grafo:
  • extraction_model — o modelo usado para extração de entidades e relações. Segue o mesmo contrato de embedding_model: opcional, tem auto como padrão e é resolvido para um modelo concreto na criação.
  • max_hops — até onde expandir pelo grafo em cada consulta, de 1 a 4. O padrão é 2.
A resposta devolve retrieval_mode, extraction_model e max_hops, com extraction_model já resolvido para o modelo concreto, e não como auto. Você pesquisa um armazenamento de grafo com a mesma chamada de busca usada em qualquer outro armazenamento de vetores — o modo é uma propriedade do armazenamento, não da requisição.

O que muda em um armazenamento de grafo

  • O modo é congelado na criação. Não há como converter um armazenamento entre vector e graph depois; o endpoint de atualização não aceita retrieval_mode. Trocar significa criar um novo armazenamento e reanexar os arquivos.
  • A extração é medida no seu consumo. Entidades e relações são extraídas de cada trecho na ingestão, e cada consulta também executa uma passagem de extração para identificar as entidades a partir das quais expandir. Ambas são cobradas como uso normal de modelo, então um armazenamento de grafo custa mais para preencher e mais para consultar do que um armazenamento de vetores sobre os mesmos arquivos.
  • A busca em grafo retorna no máximo 20 resultados. max_num_results aceita até 50, mas consultas em grafo são limitadas a 20. Um valor maior é truncado, não rejeitado.
  • Filtros por atributo podem devolver menos resultados. Como observado em Filtrar a busca por atributos de arquivo, a filtragem em um armazenamento de grafo é aplicada parcialmente após a recuperação, portanto uma busca filtrada pode retornar menos correspondências do que max_num_results.
  • extraction_model e max_hops são exclusivos de grafo. Enviar qualquer um deles sem retrieval_mode: "graph" retorna 400.

Adicionar mais arquivos depois

Você pode adicionar mais arquivos a um armazenamento de vetores existente sem recriá-lo.
O arquivo do armazenamento de vetores pode retornar status: "in_progress" enquanto a indexação é executada. Um arquivo só fica pesquisável quando o status chega a "completed" — uma busca feita antes disso tem sucesso, mas omite o arquivo, então consulte o status até "completed" em vez de assumir uma espera fixa. A indexação normalmente termina em segundos, mas a latência varia conforme o tamanho do arquivo e a carga. Consulte os endpoints de Arquivos e Armazenamentos de Vetores na Referência da API para o endpoint de consulta de status.

Listar arquivos com paginação

As listagens de arquivos são ordenadas por created_at (os mais recentes primeiro por padrão) e retornam até limit itens por página. Quando has_more for true, passe o id do último item como after para buscar a próxima página.
Para paginar para trás, passe o id de um item como before: a resposta será a página imediatamente anterior a esse item na ordem de exibição. Arquivos anexados no mesmo lote podem compartilhar um carimbo de data e hora de criação; o cursor considera isso, portanto, uma varredura completa retorna cada arquivo exatamente uma vez. Se o arquivo de um cursor não existir mais — por exemplo, se ele foi removido do armazenamento de vetores enquanto você paginava — a API retorna 400 Invalid pagination cursor. Reinicie a varredura a partir da primeira página.

Pesquisar no armazenamento de vetores

Use a busca semântica para recuperar os blocos mais relevantes para uma pergunta do usuário.
A resposta retorna correspondências classificadas com file_id, filename, dados de pontuação, conteúdo dos blocos e os attributes atuais do arquivo.

Filtrar a busca por atributos de arquivo

Os atributos são metadados de chave-valor no nível do arquivo — valores de string, número ou booleanos — definidos quando você anexa um arquivo (consulte Adicionar mais arquivos depois). Você pode alterá-los após a ingestão com o endpoint update-file (POST /vector_stores/{vector_store_id}/files/{file_id}); a busca sempre avalia os valores atuais. Passe filters na solicitação de busca para restringir os resultados a arquivos cujos atributos correspondam. Um filtro é uma comparação — eq, ne, gt, gte, lt, lte, in, nin — ou um composto and/or de filtros aninhados.
A avaliação de filtros segue estas regras:
  • Um arquivo que não possui a key do filtro nunca corresponde — inclusive para ne e nin. Um filtro só inclui um arquivo com base em evidências, nunca por ausência.
  • eq e ne usam igualdade estrita, sem coerção de tipo: a string "2" não é igual ao número 2.
  • gt, gte, lt e lte comparam apenas números; um atributo ou valor de filtro não numérico falha na comparação.
  • in e nin recebem um value de matriz e verificam se o atributo do arquivo é (ou não é) um de seus elementos.
  • Os compostos and e or podem ser aninhados em qualquer profundidade.
  • Em armazenamentos de grafo, a filtragem é aplicada após a recuperação, portanto, uma busca filtrada pode retornar menos correspondências do que max_num_results.

Fluxo de trabalho típico

Use esta sequência para a maioria das configurações de recuperação:
  1. Faça upload do arquivo de origem.
  2. Crie um armazenamento de vetores com file_ids ou anexe o arquivo depois.
  3. Aguarde a conclusão do processamento do arquivo.
  4. Pesquise no armazenamento de vetores quando precisar de contexto relevante.
Depois, você pode inserir o texto retornado na lógica da sua própria aplicação ou em uma solicitação Responses.