Show HN : Khoj - un deuxième cerveau et du chat hors ligne avec Llama 2
(github.com/khoj-ai)- Khoj est une application d’IA personnelle conçue pour amplifier les capacités de l’utilisateur, avec une architecture extensible allant de l’IA personnelle sur appareil à l’IA d’entreprise à l’échelle du cloud
- Il permet de discuter avec des LLM locaux ou en ligne ; les modèles pris en charge incluent notamment llama3, qwen, gemma, mistral, gpt, claude, gemini et deepseek
- Il peut obtenir des réponses à partir d’Internet et de documents ; les formats pris en charge comprennent les images, les PDF, Markdown, org-mode, Word, les fichiers Notion, etc.
- Accessible depuis le navigateur, Obsidian, Emacs, le bureau, le téléphone et Whatsapp, avec prise en charge de la création d’agents disposant de connaissances, personas, modèles de chat et outils personnalisés
- Prend en charge l’automatisation des recherches répétitives, la livraison de newsletters personnelles et d’alertes intelligentes dans la boîte de réception, l’exploration de documents connexes via une recherche sémantique avancée, la génération d’images, ainsi que les conversations vocales et la lecture des messages
- Open source et auto-hébergeable, il peut être exécuté en privé sur l’ordinateur de l’utilisateur ou utilisé via l’application cloud
- La version Enterprise est proposée sous forme de service cloud, on-premise ou solution hybride
1 commentaires
Avis Hacker News
Sur la landing page du site, je ne vois aucune mention de Llama ni de cas d’usage hors ligne ; il semble seulement être question d’une utilisation en ligne via OpenAI.
Je serais aussi curieux de savoir quelle taille de modèle et quel fine-tuning sont utilisés, et comment vous avez évalué les performances pour ce cas d’usage.
J’ai un peu utilisé Llama 2 en versions 7B et 13B, et j’ai eu l’impression que ça consommait pas mal de RAM sur une machine grand public, donc le potentiel m’enthousiasme vraiment.
Je me demande aussi si la recherche repose sur des embeddings et une base vectorielle, avec en plus des filtres de métadonnées comme des commandes de date.
Khoj utilise Llama 7B quantifié en 4 bits GGML de TheBloke.
C’est à peu près le premier modèle de chat hors ligne qui donne des réponses cohérentes aux requêtes utilisateur quand on lui fournit les notes comme contexte, et il est aussi intéressant qu’il soit plus conversationnel que GPT-3.5+.
S’il est garanti qu’aucune donnée personnelle n’est envoyée à un service distant lorsqu’on l’auto-héberge, il serait utile de l’indiquer très clairement comme garantie de confidentialité.
En voyant ça, je trouve ça vraiment génial, et je pense que l’exécution locale est le véritable avenir de l’IA.
Je l’ai lancé sur un petit MacBook Air M2 et il s’est complètement figé.
Ça m’a rappelé l’époque où un vieux PC infecté par un virus bougeait le curseur 45 secondes après que j’avais déplacé la souris, avec une étrange pointe de nostalgie.
Je vais devoir revoir mes attentes de performance à la baisse sur cet Air ; c’est la première fois que ça m’arrive.
Les modèles 7B fonctionnent plutôt bien avec au moins 16 Go de mémoire unifiée, mais j’ai vu des Mac à 8 Go peiner pas mal.
Serait-il aussi possible de prendre l’historique web d’une journée et de résumer en notes ce sur quoi j’ai fait des recherches ?
On se rapproche de plus en plus de l’idéal de l’IA personnelle.
J’ai hâte : dans quelques années, j’ai l’impression que je pourrai avoir un cerveau numérique rempli de tout ce que je sais.
Créer une extension de navigateur qui résume l’historique web quotidien ne semble pas être un si gros chantier, et il existe probablement déjà des choses similaires.
Indexer tous nos déplacements numériques et les rendre faciles à digérer aurait énormément de valeur.
J’aimerais que Khoj devienne ça.
Je me demande s’il existe des outils à recommander pour faire ça.
Sinon, je serais aussi partant pour trouver quelqu’un avec qui le construire.
À quoi sert la télémétrie PostHog ?
Je ne comprends pas pourquoi la documentation n’en dit rien, ni pourquoi il n’existe pas de méthode claire d’opt-out.
Par exemple, pour savoir si les gens utilisent Markdown, org, etc.
Toutes les données sont collectées de manière entièrement anonymisée, et aucune information identifiable n’est envoyée au serveur de télémétrie.
Pour désactiver la télémétrie, définissez
should-log-telemetrysur false danskhoj.yml.Nous avons ajouté à la documentation ce qui est collecté et comment : https://docs.khoj.dev/#/telemetry
À part ça, le projet fonctionne étonnamment bien.
Ça ressemble à un super projet.
Ce serait vraiment bien de pouvoir indexer un répertoire de PDF, et même d’appliquer de l’OCR aux PDF pour indexer les documents scannés.
C’est peut-être hors périmètre pour le moment, mais pas plus tard qu’il y a quelques jours, je me disais qu’un tel outil serait utile.
Khoj peut indexer des répertoires de PDF pour la recherche et le chat.
En revanche, pour l’instant, il ne gère pas les PDF scannés sans texte sélectionnable.
Ce serait bien de pouvoir aussi traiter ces fichiers ; il ne reste qu’à l’implémenter.
J’espère que ce sera bientôt possible.
Il crawlerait les PDF, téléchargements, captures d’écran, photos, etc., afficherait une arborescence logique de l’organisation des fichiers, puis permettrait de la modifier avec des instructions du type : « ajoute ici les PDF liés à ce sujet et organise-les par source/auteur, puis déplace les captures d’écran ici par ordre chronologique ».
J’ai toujours voulu un ordinateur qu’on puisse appeler « ORDINATEUR. ».
Je dis « ORDINATEUR ! » et il répond : « Monsieur, vous devez utiliser le clavier. » Ah, le clavier, quelle antiquité.
On dirait que vous utilisez gpt4all ; je me demande s’il existe une méthode officiellement prise en charge pour changer le modèle d’inférence local.
Beaucoup d’apps conçues pour les API completion/chat d’OpenAI peuvent fonctionner presque de la même façon en pointant simplement vers l’endpoint fourni par llama-cpp-python [0], tout en utilisant les différents modèles et quantifications pris en charge par llama.cpp.
Cela permettrait de faire tourner des modèles plus gros sur le matériel de son choix, y compris avec l’accélération Metal sur Apple Silicon ou un GPU NVIDIA, et d’utiliser aussi d’autres proxys comme openrouter.io.
Personnellement, j’aime bien openrouter.io parce qu’il prend en charge le modèle 100k d’Anthropic.
[0]: https://github.com/abetlen/llama-cpp-python
Je pense qu’il suffit de remplacer cette ligne https://github.com/khoj-ai/khoj/blob/master/src/khoj/process... par le modèle voulu.
Il faut construire soi-même l’image locale avec
docker-compose, mais ça devrait être relativement simple.Plusieurs développeurs veulent tester différents modèles, mais nous voulons aller vers quelque chose de facile à utiliser tout en apportant une aide approfondie.
Comme nos ressources sont limitées, nous réfléchissons encore un peu à ce sur quoi concentrer nos efforts.
Ayant commencé à utiliser Obsidian et à expérimenter avec les IA de chat, je trouve ça vraiment excellent
Je ne l’ai pas encore essayé, mais ce genre d’outil doit clairement exister
Sans un GPU suffisamment bon, je ne pense pas que ce soit encore très utilisable sur du matériel grand public, mais je suis convaincu que ce sera possible d’ici quelques années, voire plus tôt
Le logo est aussi très beau, et j’aime les couleurs
Pour ce type de cas d’usage, Llama 2 semble assez compétent pour rendre moins attrayant le fait de payer ChatGPT, surtout quand la confidentialité est importante
Continuez comme ça
J’ai utilisé Khoj pendant une journée, et c’est vraiment propre et bien conçu
Quelques observations
J’ai laissé une issue et une proposition à ce sujet ici : https://github.com/khoj-ai/khoj/issues/389
J’ai aussi ajouté une note dans l’issue GitHub ci-dessus
Par exemple, je me demande s’il est possible de configurer un modèle huggingface/gpt4all, et si oui, s’il est téléchargé automatiquement à partir de son nom, ou s’il faut placer un
.binet du YAML quelque part dans un volumeComme indiqué dans la documentation, vous pouvez consulter directement le serveur de télémétrie[1]
Si vous voyez quelque chose d’étrange, dites-le-moi et je publierai immédiatement un hotfix
Toutes les métadonnées de télémétrie sont également consultables ici[2]
[1]: https://github.com/khoj-ai/khoj/tree/master/src/telemetry
[2]: https://github.com/khoj-ai/khoj/blob/master/src/khoj/routers...
La configuration
docker-composeest un peu particulière ; consultez l’issue correspondante pour plus de détailsMerci aussi pour les remarques sur l’intégration GPU ; pour clarifier, nous utilisons l’optimisation GPU pour l’indexation, mais pas encore pour le chat local basé sur Llama
Nous travaillons à faire fonctionner cette partie
./serveravec ggml ?Si le contexte de recherche est pré-tokenisé, ce sera peut-être plus difficile
Le projet est vraiment super
C’est intéressant que
C-ssoit mentionnéisearch-forwardest généralement utilisé pour une recherche de correspondance littérale à faible latenceJe me demande dans quels workflows Khoj pourrait offrir une latence acceptable ou une meilleure utilité pour être considéré comme un remplaçant d’isearch
Auriez-vous un exemple de la façon dont vous l’utilisez pour parcourir des documents ?
Elle offre une expérience de recherche dès la saisie via une interface de recherche en langage naturel, plutôt que par mots-clés
Mon workflow est le suivant
C-c s sRETn n o 2[1]:
C-c sest lié au menu transientkhoj[2] https://orgmode.org/manual/Speed-Keys.html