Une interface utilisateur RAG open source propre et personnalisable pour discuter avec vos documents. Conçu pour les utilisateurs finaux et les développeurs.
Démo en direct | Installation en ligne | Guide de l'utilisateur | Guide du développeur | Commentaires | Contact
Ce projet sert d'interface utilisateur RAG fonctionnelle à la fois aux utilisateurs finaux qui souhaitent effectuer un contrôle qualité sur leurs documents et aux développeurs qui souhaitent créer leur propre pipeline RAG.
+------------------------------------------------- --------------------------------+| Utilisateurs finaux : ceux qui utilisent des applications créées avec « kotaemon ». || (Vous utilisez une application comme celle de la démo ci-dessus) || +------------------------------------------------- ---------------+ || | Développeurs : Ceux qui ont construit avec `kotaemon`. | || | (Vous avez `import kotaemon` quelque part dans votre projet) | || | +------------------------------------------------- ---+ | || | | Contributeurs : Ceux qui améliorent "kotaemon". | | || | | (Vous faites des relations publiques sur ce dépôt) | | || | +------------------------------------------------- ---+ | || +------------------------------------------------- ---------------+ |+-------------------------------- --------------------------------------------+
Interface utilisateur propre et minimaliste : une interface conviviale pour l'assurance qualité basée sur RAG.
Prise en charge de divers LLM : Compatible avec les fournisseurs d'API LLM (OpenAI, AzureOpenAI, Cohere, etc.) et les LLM locaux (via ollama
et llama-cpp-python
).
Installation facile : des scripts simples pour vous permettre de démarrer rapidement.
Framework pour les pipelines RAG : outils pour créer votre propre pipeline d'assurance qualité de documents basé sur RAG.
Interface utilisateur personnalisable : voyez votre pipeline RAG en action avec l'interface utilisateur fournie, construite avec Gradio.
Thème Gradio : Si vous utilisez Gradio pour le développement, consultez notre thème ici : kotaemon-gradio-theme.
Hébergez votre propre interface Web QA (RAG) de documents : prenez en charge la connexion multi-utilisateurs, organisez vos fichiers dans des collections privées/publiques, collaborez et partagez votre discussion préférée avec d'autres.
Organisez vos modèles LLM et d'intégration : prenez en charge à la fois les LLM locaux et les fournisseurs d'API populaires (OpenAI, Azure, Ollama, Groq).
Pipeline RAG hybride : pipeline RAG par défaut sain avec outil de récupération hybride (texte intégral et vecteur) et reclassement pour garantir la meilleure qualité de récupération.
Prise en charge de l'assurance qualité multimodale : effectuez des réponses aux questions sur plusieurs documents avec prise en charge des figures et des tableaux. Prise en charge de l'analyse de documents multimodaux (options sélectionnables sur l'interface utilisateur).
Citations avancées avec aperçu du document : par défaut, le système fournira des citations détaillées pour garantir l'exactitude des réponses LLM. Consultez vos citations (y compris les notes pertinentes) directement dans la visionneuse PDF du navigateur avec les surlignages. Avertissement lorsque le pipeline de récupération renvoie des articles peu pertinents.
Prend en charge les méthodes de raisonnement complexes : utilisez la décomposition des questions pour répondre à votre question complexe/à plusieurs sauts. Prend en charge le raisonnement basé sur les agents avec ReAct
, ReWOO
et d'autres agents.
Paramètres configurables de l'interface utilisateur : vous pouvez ajuster les aspects les plus importants du processus de récupération et de génération sur l'interface utilisateur (y compris les invites).
Extensible : étant construit sur Gradio, vous êtes libre de personnaliser ou d'ajouter des éléments d'interface utilisateur à votre guise. Nous visons également à prendre en charge plusieurs stratégies d’indexation et de récupération de documents. Le pipeline d'indexation GraphRAG
est fourni à titre d'exemple.
Si vous n'êtes pas un développeur et souhaitez simplement utiliser l'application, veuillez consulter notre guide de l'utilisateur facile à suivre. Téléchargez le fichier
.zip
de la dernière version pour obtenir toutes les dernières fonctionnalités et corrections de bugs.
Python >= 3.10
Docker : facultatif, si vous installez avec Docker
Non structuré si vous souhaitez traiter des fichiers autres que les documents .pdf
, .html
, .mhtml
et .xlsx
. Les étapes d'installation diffèrent en fonction de votre système d'exploitation. Veuillez visiter le lien et suivre les instructions spécifiques qui y sont fournies.
Nous prenons en charge les versions lite
et full
des images Docker. Avec full
, les packages supplémentaires unstructured
seront également installés, il peut prendre en charge des types de fichiers supplémentaires ( .doc
, .docx
, ...) mais le coût est une taille d'image Docker plus grande. Pour la plupart des utilisateurs, l’image lite
devrait bien fonctionner dans la plupart des cas.
Pour utiliser la version lite
.
exécution du docker -e GRADIO_SERVER_NAME=0.0.0.0 -e GRADIO_SERVER_PORT=7860 -p 7860:7860 -it --rm ghcr.io/cinnamon/kotaemon:main-lite
Pour utiliser la version full
.
exécution du docker -e GRADIO_SERVER_NAME=0.0.0.0 -e GRADIO_SERVER_PORT=7860 -p 7860:7860 -it --rm ghcr.io/cinnamon/kotaemon:main-full
Nous prenons actuellement en charge et testons deux plates-formes : linux/amd64
et linux/arm64
(pour les Mac les plus récents). Vous pouvez spécifier la plate-forme en passant --platform
dans la commande docker run
. Par exemple:
# Pour exécuter Docker avec la plateforme Linux/arm64docker, exécutez -e GRADIO_SERVER_NAME=0.0.0.0 -e GRADIO_SERVER_PORT=7860 -p 7860:7860 -it --rm --plateforme Linux/arm64 ghcr.io/cinnamon/kotaemon:main-lite
Une fois que tout est correctement configuré, vous pouvez accéder à http://localhost:7860/
pour accéder à la WebUI.
Nous utilisons GHCR pour stocker les images Docker, toutes les images peuvent être trouvées ici.
Clonez et installez les packages requis sur un nouvel environnement Python.
# facultatif (configuration env) conda create -n kotaemon python=3.10 conda activer kotaemon# cloner ce clone de repogit https://github.com/Cinnamon/kotaemoncd kotaemon pip install -e "libs/kotaemon[all]" pip install -e "libs/ktem"
Créez un fichier .env
à la racine de ce projet. Utiliser .env.example
comme modèle
Le fichier .env
est là pour servir les cas d'utilisation où les utilisateurs souhaitent préconfigurer les modèles avant de démarrer l'application (par exemple déployer l'application sur le hub HF). Le fichier ne sera utilisé pour remplir la base de données qu'une seule fois lors de la première exécution, il ne sera plus utilisé lors des exécutions ultérieures.
(Facultatif) Pour activer la visionneuse PDF_JS
dans le navigateur, téléchargez PDF_JS_DIST puis extrayez-le dans libs/ktem/ktem/assets/prebuilt
Démarrez le serveur Web :
application python.py
L'application sera automatiquement lancée dans votre navigateur.
Le nom d'utilisateur et le mot de passe par défaut sont tous deux admin
. Vous pouvez configurer des utilisateurs supplémentaires directement via l'interface utilisateur.
Vérifiez l'onglet Resources
et LLMs and Embeddings
et assurez-vous que votre valeur api_key
est correctement définie à partir de votre fichier .env
. S'il n'est pas défini, vous pouvez le définir ici.
Note
L'indexation officielle MS GraphRAG ne fonctionne qu'avec l'API OpenAI ou Ollama. Nous recommandons à la plupart des utilisateurs d'utiliser l'implémentation NanoGraphRAG pour une intégration simple avec Kotaemon.
Installer nano-GraphRAG : pip install nano-graphrag
L'installation nano-graphrag
peut introduire des conflits de version, voir ce problème
Pour corriger rapidement : pip uninstall hnswlib chroma-hnswlib && pip install chroma-hnswlib
Lancez Kotaemon avec la variable d'environnement USE_NANO_GRAPHRAG=true
.
Définissez vos modèles LLM et intégration par défaut dans les paramètres Ressources et ils seront automatiquement reconnus par NanoGraphRAG.
Installation non-Docker : Si vous n'utilisez pas Docker, installez GraphRAG avec la commande suivante :
pip installer graphrag futur
Configuration de la clé API : pour utiliser la fonctionnalité de récupération GraphRAG, assurez-vous de définir la variable d'environnement GRAPHRAG_API_KEY
. Vous pouvez le faire directement dans votre environnement ou en l'ajoutant à un fichier .env
.
Utilisation de modèles locaux et de paramètres personnalisés : si vous souhaitez utiliser GraphRAG avec des modèles locaux (comme Ollama
) ou personnaliser le LLM par défaut et d'autres configurations, définissez la variable d'environnement USE_CUSTOMIZED_GRAPHRAG_SETTING
sur true. Ensuite, ajustez vos paramètres dans le fichier settings.yaml.example
.
Voir Configuration du modèle local.
Par défaut, toutes les données de l'application sont stockées dans le dossier ./ktem_app_data
. Vous pouvez sauvegarder ou copier ce dossier pour transférer votre installation sur une nouvelle machine.
Pour les utilisateurs avancés ou les cas d'utilisation spécifiques, vous pouvez personnaliser ces fichiers :
flowsettings.py
.env
flowsettings.py
Ce fichier contient la configuration de votre application. Vous pouvez utiliser l’exemple ici comme point de départ.
# configurez votre magasin de documents préféré (avec des capacités de recherche en texte intégral)KH_DOCSTORE=(Elasticsearch | LanceDB | SimpleFileDocumentStore)# configurez votre magasin de documents préféré (pour la recherche vectorielle)KH_VECTORSTORE=(ChromaDB | LanceDB | InMemory | Qdrant)# Activer/désactiver multimodal QAKH_REASONINGS_USE_MULTIMODAL=True# Configurez votre nouveau pipeline de raisonnement ou modifiez celui existant.KH_REASONINGS = ["ktem.reasoning.simple.FullQAPipeline","ktem.reasoning.simple.FullDecomposeQAPipeline","ktem.reasoning.react.ReactAgentPipeline","ktem .reasoning.rewoo.RewooAgentPipeline", ]
.env
Ce fichier fournit une autre façon de configurer vos modèles et vos informations d'identification.
Alternativement, vous pouvez configurer les modèles via le fichier .env
avec les informations nécessaires pour vous connecter aux LLM. Ce fichier se trouve dans le dossier de l'application. Si vous ne le voyez pas, vous pouvez en créer un.
Actuellement, les fournisseurs suivants sont pris en charge :
Utilisation du serveur compatible ollama
OpenAI :
Utiliser GGUF
avec llama-cpp-python
Vous pouvez rechercher et télécharger un LLM à exécuter localement à partir du Hugging Face Hub. Actuellement, ces formats de modèle sont pris en charge :
Installez ollama et démarrez l'application.
Tirez votre modèle, par exemple :
ollama tire le lama3.1:8b ollama pull nomic-embed-text
Définissez les noms des modèles sur l'interface utilisateur Web et définissez-les par défaut :
GGUF
Vous devez choisir un modèle dont la taille est inférieure à la mémoire de votre appareil et doit laisser environ 2 Go. Par exemple, si vous disposez de 16 Go de RAM au total, dont 12 Go sont disponibles, alors vous devez choisir un modèle qui occupe au maximum 10 Go de RAM. Les modèles plus gros ont tendance à donner une meilleure génération mais prennent également plus de temps de traitement.
Voici quelques recommandations et leur taille en mémoire :
Qwen1.5-1.8B-Chat-GGUF : environ 2 Go
Ajoutez un nouveau modèle LlamaCpp avec le nom de modèle fourni sur l'interface utilisateur Web.
OpenAI
Dans le fichier .env
, définissez la variable OPENAI_API_KEY
avec votre clé API OpenAI afin de permettre l'accès aux modèles OpenAI. Il existe d'autres variables qui peuvent être modifiées, n'hésitez pas à les modifier en fonction de votre cas. Sinon, le paramètre par défaut devrait fonctionner pour la plupart des gens.
OPENAI_API_BASE=https://api.openai.com/v1 OPENAI_API_KEY=OPENAI_CHAT_MODEL=gpt-3.5-turbo OPENAI_EMBEDDINGS_MODEL=text-embedding-ada-002
Azure OpenAI
Pour les modèles OpenAI via la plateforme Azure, vous devez fournir votre point de terminaison Azure et votre clé API. Vous devrez peut-être également fournir le nom de vos développements pour le modèle de discussion et le modèle d'intégration en fonction de la manière dont vous configurez le développement Azure.
AZURE_OPENAI_ENDPOINT= AZURE_OPENAI_API_KEY= OPENAI_API_VERSION=2024-02-15-aperçu AZURE_OPENAI_CHAT_DEPLOYMENT=gpt-35-turbo AZURE_OPENAI_EMBEDDINGS_DEPLOYMENT=text-embedding-ada-002
Modèles locaux
Vérifiez l'implémentation du pipeline par défaut ici. Vous pouvez ajuster rapidement le fonctionnement du pipeline d’assurance qualité par défaut.
Ajoutez une nouvelle implémentation .py
dans libs/ktem/ktem/reasoning/
et incluez-la plus tard dans flowssettings
pour l'activer sur l'interface utilisateur.
Vérifiez l'exemple d'implémentation dans libs/ktem/ktem/index/file/graph
(plus d'instructions WIP).
Étant donné que notre projet est activement développé, nous apprécions grandement vos commentaires et contributions. Veuillez consulter notre Guide de contribution pour commencer. Merci à tous nos contributeurs !