Saltar al contenido principal
Usa Archivos para subir documentos una sola vez. Usa Almacenes Vectoriales para indexar esos archivos y realizar búsquedas semánticas y recuperación de información. Este es el patrón estándar para asistentes respaldados por documentos, flujos de trabajo de recuperación y respuestas fundamentadas.

Subir un archivo

Sube el archivo usando multipart/form-data. La especificación OpenAPI en vivo requiere file y purpose.
import { SDK } from '@meetkai/mka1';

const mka1 = new SDK({ apiKey: '<mka1-api-key>' });

const file = Bun.file('./support-manual.pdf');
const result = await mka1.llm.files.upload(
  { file, purpose: 'assistants' },
  { headers: { 'X-On-Behalf-Of': '<end-user-id>' } }
);
La respuesta devuelve un objeto file con un ID como file-abc123.

Crear un almacén vectorial

Crea un almacén vectorial y adjunta uno o más IDs de archivos subidos.
const vectorStore = await mka1.llm.vectorStores.create(
  {
    name: 'Base de conocimientos de soporte',
    description: 'Manuales de soporte y documentos del centro de ayuda indexados',
    fileIds: ['file-abc123'],
    expiresAfter: { anchor: 'last_active_at', days: 30 },
  },
  { headers: { 'X-On-Behalf-Of': '<end-user-id>' } }
);
Esta respuesta devuelve un ID de almacén vectorial como vs_abc123.

Agregar más archivos después

Puedes agregar más archivos a un almacén vectorial existente sin tener que recrearlo.
const vsFile = await mka1.llm.vectorStores.createFile(
  {
    vectorStoreId: 'vs_abc123',
    fileId: 'file-def456',
    attributes: { category: 'manual', version: '2.0' },
  },
  { headers: { 'X-On-Behalf-Of': '<end-user-id>' } }
);
El archivo del almacén vectorial puede devolver status: "in_progress" mientras se realiza la indexación. Consulta los endpoints de Archivos y Almacenes Vectoriales en la Referencia de la API si necesitas consultar el estado.

Buscar en el almacén vectorial

Utiliza la búsqueda semántica para recuperar los fragmentos más relevantes para una pregunta del usuario.
const results = await mka1.llm.vectorStores.search(
  {
    vectorStoreId: 'vs_abc123',
    searchVectorStoreRequest: {
      query: '¿Cómo puedo restablecer mi contraseña?',
      maxNumResults: 5,
    },
  },
  { headers: { 'X-On-Behalf-Of': '<end-user-id>' } }
);
La respuesta devuelve coincidencias ordenadas con file_id, filename, datos de puntuación y contenido del fragmento.

Flujo de trabajo típico

Utiliza esta secuencia para la mayoría de configuraciones de recuperación:
  1. Sube el archivo fuente.
  2. Crea un almacén vectorial con file_ids, o adjunta el archivo después.
  3. Espera a que el procesamiento del archivo finalice.
  4. Busca en el almacén vectorial cuando necesites contexto relevante.
Luego puedes alimentar el texto devuelto a la lógica de tu propia aplicación o a una solicitud de Respuestas.