El asistente de SI dentro de KamoCRM lee los propios documentos de un inquilino antes de responder, y para hacer ese trabajo tuvimos que ejecutar toda la cadena nosotros mismos: un servidor de modelos, un modelo de incrustación, una base de datos vectorial, reconocimiento de voz, síntesis de voz y traducción automática, todo dentro de nuestro clúster, todo en datos que nunca lo abandonan.
| Medida | Valor | Fuente | Medido |
|---|---|---|---|
| Servicios de inferencia y voz autohospedados | 6 (model server, embedding model, vector database, speech recognition, speech synthesis, machine translation) | kubectl get deployments,statefulsets --all-namespaces | |
| Servicios dedicados de recuperación y vectores en la plataforma | 3 (RAG service, vector service, embedding model) | kubectl get deployments -n kamo | |
| Idiomas atendidos por la canalización de traducción autohospedada | 22 | messages/*.json in the marketing site repository | |
| Tasa de error de reconocimiento óptico de caracteres | 0.180 CER | ocrservice evaluation run |
Qué edificio nos enseñó
Llamar a una API de modelo alojado es un trabajo de tarde y nosotros también lo hacemos, donde es la respuesta correcta. Ejecutar la inferencia usted mismo es una disciplina diferente, y es la que los clientes preguntan sobre el momento en que sus datos son confidenciales (salud, finanzas, legal, cualquier cosa bajo una obligación de residencia de datos).En ese punto, "lo enviamos a un tercero" termina la conversación, y solo un equipo que realmente ha operado la alternativa puede continuarla.
La recuperación es donde estos sistemas se ganan o pierden, y es en su mayoría poco glamorosa. Recortar documentos para que un pasaje recuperado sea autocontenido. Decidir qué significa una consulta incluso cuando el usuario escribió cuatro palabras. Hacer que la recuperación respete los permisos, de modo que un asistente no pueda responder desde un documento que la persona que hace la pregunta no tiene permiso para leer — lo cual es fácil de equivocarse, y el tipo de error que termina en una carta del regulador en lugar de un rastreador de errores. Nuestra base de conocimiento tiene niveles de visibilidad que la capa de recuperación tiene que respetar exactamente como lo hacen las lecturas de cara a los humanos, en dos lugares separados que deben coincidir.
También ejecutamos reconocimiento y síntesis de voz, y traducción automática en veintidós idiomas. La canalización de traducción nos enseñó más, principalmente por fallar silenciosamente: una actualización masiva que se ejecuta sin una transacción tuvo éxito en el papel y no escribió nada para veintiún de los idiomas, y porque nada se lanzó, nadie se dio cuenta durante mucho tiempo.
Construido con
- Ollama
- Qdrant
- Whisper
- Coqui TTS
- LibreTranslate
- Python
- Java
- Spring Boot
Para lo que esto nos califica
Cuéntanos lo que estás tratando de hacer
Una breve conversación suele ser suficiente para saber si somos las personas adecuadas, si no lo somos, lo diremos y le indicaremos un lugar mejor.
