Show HN: Khoj - um segundo cérebro e chat offline com Llama 2
(github.com/khoj-ai)- Khoj é um app pessoal de IA que amplia as capacidades do usuário, com uma arquitetura escalável que vai de IA pessoal on-device até IA empresarial em escala de nuvem
- É possível conversar com LLMs locais ou online; alguns modelos de exemplo são llama3, qwen, gemma, mistral, gpt, claude, gemini e deepseek
- Pode obter respostas da internet e de documentos, com suporte a formatos como imagens, PDF, Markdown, org-mode, Word e arquivos do Notion
- Pode ser acessado via Browser, Obsidian, Emacs, Desktop, Phone e Whatsapp, com suporte à criação de agentes com conhecimento, persona, modelo de chat e ferramentas personalizados
- Suporta automação de pesquisas repetitivas, entrega de newsletters pessoais e alertas inteligentes na inbox, exploração de documentos relacionados por meio de busca semântica avançada, geração de imagens, conversas por voz e reprodução de mensagens
- É open source e pode ser self-hosted, rodando de forma privada no computador do usuário ou sendo usado no app em nuvem
- A versão Enterprise é oferecida como serviço em nuvem, on-premises e solução híbrida
1 comentários
Opiniões do Hacker News
Na landing page do site, não vejo nenhum caso de uso com Llama ou offline; parece que só é mencionado o uso online via OpenAI
Também fiquei curioso sobre qual tamanho de modelo e fine-tuning vocês usam, e como avaliaram o desempenho nesse caso de uso
Usei um pouco o Llama 2 nos tamanhos 7B e 13B, e tive a impressão de que ele consome bastante RAM em máquinas de consumidor, então o potencial é realmente empolgante
Também queria saber se a busca usa embeddings e um banco de dados vetorial com filtragem adicional de metadados, como comandos de data
O Khoj usa o Llama 7B 4-bit quantized GGML do TheBloke
É algo próximo do primeiro modelo de chat offline que dá respostas coerentes a consultas do usuário quando as notas são incluídas como contexto, e também é interessante que ele seja mais conversacional do que o GPT-3.5+
Se houver uma garantia de que, ao fazer self-hosting, informações pessoais não serão enviadas a nenhum serviço remoto, ajudaria muito deixar essa garantia de privacidade bem explícita
Ao ver isso, achei realmente incrível, e acredito que a execução local é o verdadeiro futuro da IA
Testei em um MacBook Air M2 pequeno e ele travou completamente
Lembrou-me de quando PCs antigos pegavam vírus e, 45 segundos depois de mexer o mouse, o cursor finalmente se movia; foi estranhamente nostálgico
Acho que preciso reduzir minhas expectativas de desempenho para este Air; é a primeira vez que passo por algo assim
O modelo 7B costuma funcionar bem com 16 GB ou mais de memória unificada, mas vi Macs com 8 GB sofrerem bastante
Será que também daria para pegar o conteúdo do meu histórico web de um dia e resumir em notas o que pesquisei?
Está chegando cada vez mais perto do ideal de uma IA pessoal
Mal posso esperar para, em alguns anos, ter um cérebro digital preenchido com tudo o que eu sei
Criar uma extensão de navegador que resuma o histórico web diário não parece ser um trabalho tão grande, e imagino que já exista algo parecido
Indexar todo o rastro digital e torná-lo fácil de digerir seria algo de enorme valor
Espero que o Khoj se torne isso
Gostaria de saber se há recomendações de ferramentas que façam isso
Ou também gostaria de encontrar alguém para criar isso junto
Para que serve a telemetria do PostHog?
Não entendo por que não há nada na documentação e por que não existe uma forma clara de opt-out
Por exemplo, para saber se as pessoas usam Markdown, org etc.
Todos os dados são coletados de forma totalmente anonimizada, e nenhuma informação identificável é enviada ao servidor de telemetria
Para fazer opt-out, defina o valor de
should-log-telemetrycomo false emkhoj.ymlAdicionamos à documentação o que é coletado e como: https://docs.khoj.dev/#/telemetry
Fora isso, o projeto funciona surpreendentemente bem
Parece um projeto bacana
Seria ótimo se também pudesse fazer indexação de diretórios de PDFs e até aplicar OCR nos PDFs para indexar documentos escaneados
Isso pode estar fora do escopo atual do projeto, mas poucos dias atrás eu estava pensando que seria bom ter uma ferramenta assim
O Khoj consegue indexar diretórios de PDFs para busca e chat
Porém, no momento, ele não lida com PDFs escaneados que não têm texto selecionável
Seria ótimo conseguir lidar também com esses arquivos; só falta implementar
Espero que isso chegue em breve
Ele poderia rastrear PDFs, downloads, screenshots, fotos etc., mostrar uma árvore lógica de organização dos arquivos e permitir ajustes como: “adicione aqui os PDFs relacionados a este tema e organize por fonte/autor; depois mova as screenshots para cá em ordem de data”
Sempre quis um computador que eu pudesse simplesmente chamar de “COMPUTADOR.”
Eu digo “COMPUTADOR!”, e ele responde “Senhor, você precisa usar o teclado” — ah, o teclado, que coisa antiquada
Parece que usa gpt4all; fiquei curioso se existe uma forma oficialmente suportada de trocar o modelo de inferência local
Muitos apps projetados para as APIs de completion/chat da OpenAI funcionam de maneira quase idêntica simplesmente apontando para o endpoint fornecido pelo llama-cpp-python [0], permitindo usar vários modelos e quantizações compatíveis com o llama.cpp
Assim, dá para rodar modelos maiores no hardware que você quiser, incluindo aceleração Metal no Apple Silicon ou GPUs NVIDIA, e também usar outros proxies como o openrouter.io
Pessoalmente, gosto de usar o openrouter.io porque ele dá suporte ao modelo de 100k da Anthropic
[0]: https://github.com/abetlen/llama-cpp-python
Acho que basta trocar esta linha https://github.com/khoj-ai/khoj/blob/master/src/khoj/process... pelo modelo desejado
Você terá que criar a imagem localmente com
docker-compose, mas deve ser relativamente simplesVários desenvolvedores querem experimentar diferentes modelos, mas queremos seguir numa direção que seja fácil de usar e, ao mesmo tempo, ofereça ajuda profunda
Como os recursos são limitados, ainda estamos refletindo um pouco sobre onde concentrar os esforços
Comecei a usar o Obsidian e, do ponto de vista de alguém que está mexendo com IA de chat, isso é realmente excelente
Ainda não usei, mas algo assim definitivamente precisa existir
Se você não tiver uma GPU boa o suficiente, acho que ainda não deve ser muito utilizável em hardware de consumidor, mas tenho certeza de que isso será possível em alguns anos, ou até antes
O logo também é bonito e gostei das cores
Para esse tipo de caso de uso, o Llama 2 parece suficientemente competente, então, especialmente quando privacidade é importante, pagar pelo ChatGPT fica menos atraente
Espero que continuem construindo bem
Usei o Khoj por um dia e ele é realmente limpo e bem feito
Tenho algumas observações
Deixei uma issue e uma sugestão sobre isso aqui: https://github.com/khoj-ai/khoj/issues/389
Também adicionei uma nota na issue do GitHub acima
Por exemplo, gostaria de saber se é possível configurar um modelo huggingface/gpt4all e, se for, se ele é baixado automaticamente pelo nome ou se é preciso colocar um
.bine um YAML em algum volumeComo escrevemos na documentação, você pode ver diretamente o servidor de telemetria[1]
Se vir algo estranho, avise e faremos um hotfix imediatamente
Todos os metadados de telemetria também podem ser verificados aqui[2]
[1]: https://github.com/khoj-ai/khoj/tree/master/src/telemetry
[2]: https://github.com/khoj-ai/khoj/blob/master/src/khoj/routers...
A configuração do
docker-composeé um pouco específica, então veja a issue correspondente para mais detalhesObrigado também pela observação sobre integração com GPU; para deixar claro, usamos otimização de GPU para indexação, mas ainda não para o chat local baseado em Llama
Estamos trabalhando para fazer essa parte funcionar
./serverno ggml?Se o contexto de busca estiver sendo pré-tokenizado, talvez isso seja mais difícil
O projeto é muito legal
Achei interessante você mencionar
C-sisearch-forwardcostuma ser usado para busca por correspondência literal de baixa latênciaFico curioso em quais fluxos de trabalho o Khoj poderia oferecer latência aceitável ou utilidade melhor a ponto de ser visto como substituto do isearch
Você tem algum exemplo de como o usa ao navegar por documentos?
Ela oferece uma experiência de busca enquanto você digita, mas com uma interface de busca em linguagem natural, não por palavras-chave
Meu fluxo de trabalho é assim
C-c s sRETn n o 2[1]:
C-c sestá associado ao menu transitóriokhoj[2] https://orgmode.org/manual/Speed-Keys.html