Ir para o conteúdo

Busca

Busca semântica nas bases: top_k, corte por pontuação e consulta a várias bases de uma vez.

Atualizado em 10 de ago. de 2026

A busca embeda a pergunta com o mesmo hinow/hiembed da ingestão (com cache — perguntas repetidas não re-embedam) e compara com os trechos indexados. Volta os mais próximos, com a pontuação de similaridade (0 a 1) e o metadado do documento de origem.

POSThttps://api.hinow.ai/v1/rag/searchBearer

Busca semântica na(s) base(s).

Parâmetros

  • querystring· bodyobrigatório
  • rag_idstring· body

    A base a consultar. Sem `rag_id` e sem `rag_ids`, busca em TODAS as bases do escopo.

  • rag_idsarray· body

    Várias bases de uma vez (OR). Tem precedência sobre `rag_id`.

  • top_kinteger· body

    Quantos trechos devolver. Padrão 5.

  • min_scorenumber· body

    Corte de similaridade (0–1). Trechos abaixo ficam de fora. Entre 0.5 e 0.7 funciona bem.

Respostas

200Trechos ordenados por similaridade
{
  "query": "quanto custa o plano diamante?",
  "results": [
    {
      "score": 0.652,
      "document_id": "3f6a1a5e...",
      "source": "planos.xlsx#Planos",
      "chunk_index": 0,
      "text": "Plano\tPreço mensal\nPrata\t99 reais\nOuro\t199 reais\nDiamante\t399 reais",
      "metadata": { "rag_id": "1d9cf4ae...", ... }
    }
  ],
  "embed_tokens": 7
}

Uma base, várias, ou todas

Com rag_id a busca fica na base indicada; com rag_ids você consulta várias de uma vez (um agente de suporte pode olhar FAQ + políticas + catálogo); sem nenhum dos dois, a busca varre todas as bases do escopo da chave — incluindo vector stores vs_... de assistentes.

Usando os trechos no chat

O padrão RAG completo em duas chamadas: busca os trechos, injeta no prompt e deixa o modelo responder ancorado neles.

import requests

HEADERS = {"Authorization": "Bearer hi_SUA_API_KEY"}
RAG_ID = "1d9cf4ae05f64a9faf987981b22cdeae"
pergunta = "posso pagar com pix?"

# 1. buscar os trechos
r = requests.post("https://api.hinow.ai/v1/rag/search", headers=HEADERS, json={
    "rag_id": RAG_ID, "query": pergunta, "top_k": 5, "min_score": 0.5,
}).json()
contexto = "\n\n".join(
    f"[{i+1}] {t['text']}" for i, t in enumerate(r["results"])
)

# 2. responder ancorado nos trechos
resp = requests.post("https://api.hinow.ai/v1/chat/completions", headers=HEADERS, json={
    "model": "hinow/himax",
    "messages": [
        {"role": "system", "content": (
            "Responda APENAS com base no contexto abaixo. "
            "Se a resposta não estiver lá, diga que não encontrou.\n\n"
            f"CONTEXTO:\n{contexto}"
        )},
        {"role": "user", "content": pergunta},
    ],
}).json()
print(resp["choices"][0]["message"]["content"])

Prefere que a busca aconteça sozinha?

Ligue a base a um agente (nó RAG do builder) ou use o file search da Assistants API — nos dois casos o modelo decide quando buscar e a injeção é automática.

Esta página foi útil?