Arquitectura y conceptos
Un modelo de lenguaje tiene conocimiento general, pero no conoce automáticamente las políticas, productos o procedimientos de un negocio específico. Una base de conocimiento permite incorporar esa información para que un agente pueda utilizarla cuando una conversación lo requiera.
Kivox utiliza una arquitectura de recuperación aumentada por generación. La idea central es recuperar primero la información relevante para una pregunta concreta y utilizarla después como contexto para generar la respuesta, en lugar de que el agente intente responder solo con lo que ya sabe.
Cuando el usuario realiza una consulta que requiere conocimiento de un dominio específico, Kivox realiza una consulta semántica en la base de conocimiento y aplica un algoritmo de categorización y ranking para determinar qué fragmentos son más relevantes para esa consulta. Los resultados se ordenan según su relevancia y se seleccionan únicamente los primeros topK resultados. Estos resultados son los que se incorporan al contexto que recibe el modelo de lenguaje para generar la respuesta.
De esta forma, el contexto no contiene toda la información disponible en la base de conocimiento, sino únicamente una selección de los contenidos considerados más relevantes para la consulta actual.
Fragmentos
Durante el procesamiento, Kivox divide cada documento en unidades más pequeñas llamadas fragmentos. Los fragmentos permiten buscar sobre partes concretas del contenido en lugar de recuperar documentos completos.
La calidad de esta división afecta directamente la calidad de las respuestas. Un fragmento demasiado pequeño puede perder el contexto necesario para comprender una idea; uno demasiado grande puede incluir información que no es relevante para una consulta puntual.
Dos parámetros controlan esta división al crear una base:
- Tamaño del fragmento (
chunk_size): cuánto contenido puede contener cada unidad recuperable. - Solapamiento (
chunk_overlap): cuánto contenido se repite entre fragmentos consecutivos, para preservar el contexto cuando una idea importante queda cerca del límite entre dos fragmentos.
Búsqueda semántica
Para encontrar contenido relevante, Kivox convierte cada fragmento en una representación numérica mediante un modelo de embeddings, configurado como embedding_model al crear la base. Esta representación permite relacionar una consulta con el contenido almacenado incluso cuando las palabras utilizadas no coinciden exactamente.
Por ejemplo, un usuario puede preguntar "¿cuánto cuesta devolver un producto?" mientras que la documentación tiene una sección titulada "Tarifas asociadas a las devoluciones". La búsqueda semántica relaciona ambas expresiones porque representan una intención similar, algo que una búsqueda por coincidencia exacta de palabras no lograría.
Conectar una base con un agente
Crear una base de conocimiento no le da acceso automático a ningún agente. Cada base debe conectarse explícitamente desde la configuración del agente que la necesita, como se describe en Conectar conocimiento y herramientas. Una misma base puede conectarse a varios agentes cuando corresponde compartir el mismo conocimiento entre ellos.