O assistente de SI dentro do KamoCRM lê os documentos do próprio inquilino antes de responder.Fazer esse trabalho significava executar toda a cadeia nós mesmos: um servidor de modelo, um modelo de incorporação, um banco de dados vetorial, reconhecimento de fala, síntese de fala e tradução automática, tudo dentro do nosso cluster, tudo em dados que nunca saem dele.
| Medida | Valor | Fonte | Medido |
|---|---|---|---|
| Serviços de inferência e fala auto-hospedados | 6 (model server, embedding model, vector database, speech recognition, speech synthesis, machine translation) | kubectl get deployments,statefulsets --all-namespaces | |
| Serviços dedicados de recuperação e vetor na plataforma | 3 (RAG service, vector service, embedding model) | kubectl get deployments -n kamo | |
| Idiomas atendidos pelo pipeline de tradução auto-hospedado | 22 | messages/*.json in the marketing site repository | |
| Taxa de erro de reconhecimento óptico de caracteres | 0.180 CER | ocrservice evaluation run |
Que edifício nos ensinou
Chamar uma API de modelo hospedada é um trabalho de tarde e nós também fazemos isso, onde é a resposta certa. Executando a inferência você mesmo é uma disciplina diferente, e é o que os clientes perguntam sobre o momento em que seus dados são confidenciais - saúde, finanças, jurídico, qualquer coisa sob uma obrigação de residência de dados.
A recuperação é onde esses sistemas são ganhos ou perdidos, e é na maioria das vezes pouco glamourosa. Partir documentos para que uma passagem recuperada seja auto-suficiente. Decidir o que uma consulta significa mesmo quando o usuário digitou quatro palavras. Fazer a recuperação respeitar permissões, para que um assistente não possa responder a partir de um documento que a pessoa que está fazendo a pergunta não tem permissão para ler — o que é fácil de errar, e o tipo de erro que acaba em uma carta do regulador ao invés de um rastreador de bugs. Nossa base de conhecimento tem níveis de visibilidade que a camada de recuperação tem que honrar exatamente como as leituras voltadas para o ser humano fazem, em dois lugares separados que devem concordar.
Também executamos reconhecimento e síntese de fala e tradução automática em vinte e dois idiomas. O pipeline de tradução nos ensinou mais, principalmente por falhar silenciosamente: uma atualização em massa executada sem uma transação foi bem-sucedida no papel e não escreveu nada para vinte e um dos idiomas, e porque nada foi jogado, ninguém notou por um longo tempo.
Construído com
- Ollama
- Qdrant
- Whisper
- Coqui TTS
- LibreTranslate
- Python
- Java
- Spring Boot
O que isso nos qualifica para
Diga-nos o que você está tentando fazer
Uma breve conversa geralmente é suficiente para dizer se somos as pessoas certas, se não formos, diremos isso e indicaremos um lugar melhor.
