Skip to content

RAGs

Un RAG es un conjunto de documentos indexados sobre el que se busca por significado. Estos endpoints te dejan consultarlo directamente desde tu backend, sin pasar por una inferencia ni por un agente.

Es la vía cuando quieres los fragmentos relevantes y el LLM lo pones tú, o cuando lo que necesitas es una búsqueda semántica dentro de tu producto.

Listar tus RAGs

bash
curl https://ur.tuempresa.com/api/rags \
  -H "Authorization: Bearer $UR_TOKEN"
json
[
  {
    "id": "6f1c...",
    "name": "Documentación de ventas",
    "identifier": "ventas-docs",
    "status": "active",
    "totalFiles": 128,
    "processedFiles": 126,
    "numberVectors": 4821,
    "fileSource": {
      "id": "9a22...",
      "name": "Drive de ventas",
      "identifier": "drive-ventas",
      "provider": "google_drive"
    }
  }
]

totalFiles frente a processedFiles es el indicador rápido de salud: si difieren mucho, hay ficheros sin indexar — mira status y los ficheros para ver por qué.

Buscar en un RAG

bash
curl -X POST https://ur.tuempresa.com/api/rags/ventas-docs/retrieve \
  -H "Authorization: Bearer $UR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"semanticSearch": ["plazo de devolución"], "topK": 10}'
json
{
  "chunks": [
    { "text": "El plazo de devolución es de 30 días naturales...", "score": 0.87 }
  ]
}

Cuerpo

CampoTipoPor defectoDescripción
semanticSearchstring[]Obligatorio, de 1 a 10 queries
topKint 1–1005Fragmentos a devolver
useRerankingboolfalseReordena, si el RAG tiene reranker
candidateMultiplierint 2–102Candidatos antes de reordenar
similarityThresholdnumber 0–1Descarta por debajo de este parecido
includeDuplicatesboolfalseIncluye fragmentos marcados como duplicados
useAllFilesbooltrueA false, restringe a lo seleccionado
selectedFilesstring[]Rutas de fichero
selectedFoldersstring[]Rutas de carpeta

Aquí semanticSearch es obligatorio siempre

A diferencia de inferencias, donde solo hace falta si hay RAGs vinculados, aquí es el único sitio de donde sale la búsqueda: sin él es 400.

Y ojo con selectedFiles: aquí es una lista plana de rutas (["a.pdf", "b.pdf"]), no la forma por RAG que usan las inferencias. Es el mismo nombre con distinta forma porque aquí el RAG ya viene en la URL.

Igual que en inferencias, la búsqueda nunca lanza error: si algo se degrada, la respuesta incluye degraded.

Estado de un RAG

bash
curl https://ur.tuempresa.com/api/rags/ventas-docs \
  -H "Authorization: Bearer $UR_TOKEN"
json
{
  "id": "6f1c...",
  "name": "Documentación de ventas",
  "identifier": "ventas-docs",
  "status": "active",
  "fileSourceScopeMode": "scoped",
  "fileSourceScopes": [{ "type": "path", "value": "documentos/" }],
  "totalFiles": 128,
  "processedFiles": 126,
  "numberVectors": 4821
}

Listar los ficheros

bash
curl "https://ur.tuempresa.com/api/rags/ventas-docs/files?page=1&limit=50" \
  -H "Authorization: Bearer $UR_TOKEN"

page cambia la forma de la respuesta

Con page devuelve { data, total, page, limit }. Sin page devuelve el array completo, por compatibilidad con integraciones antiguas.

Usa siempre page en código nuevo: un RAG que crece puede devolver miles de filas de golpe.

limit va de 1 a 100, y por defecto es 20.

Acotar qué se indexa

Un RAG puede estar en dos modos:

  • global — indexa todo lo que haya en su file source.
  • scoped — indexa solo las rutas que le digas.

En modo scoped, estos dos endpoints gestionan esa lista desde tu código (útil si quien decide qué documentos entran es tu aplicación, no una persona en el panel):

bash
# Añadir
curl -X POST https://ur.tuempresa.com/api/rags/ventas-docs/scopes \
  -H "Authorization: Bearer $UR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"type": "path", "value": "documentos/"}'

# Quitar
curl -X DELETE https://ur.tuempresa.com/api/rags/ventas-docs/scopes \
  -H "Authorization: Bearer $UR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"type": "path", "value": "documentos/"}'

Los dos devuelven {"ok": true}.

Formato del valor

Quétypevalue
CarpetapathTermina en /"documentos/"
FicheropathSin barra final — "documentos/informe.pdf"
Google DriveexternalIdEl id del fichero o carpeta en Drive

La barra final no es cosmética

"documentos/" es una carpeta e incluye todo lo que cuelga de ella. "documentos" sin barra es un fichero llamado así. Si un scope no surte efecto, empieza por ahí.

Errores propios

CódigoCuándo
409Ese scope ya estaba en la lista
422El RAG está en modo global: no tiene lista que gestionar

Un 422 significa que primero hay que pasar el RAG a modo scoped en el panel.