Una interfaz de usuario RAG limpia y personalizable de código abierto para chatear con sus documentos. Creado pensando tanto en los usuarios finales como en los desarrolladores.
Demostración en vivo | Instalación en línea | Guía del usuario | Guía para desarrolladores | Comentarios | Contacto
Este proyecto sirve como una interfaz de usuario de RAG funcional tanto para los usuarios finales que desean realizar controles de calidad en sus documentos como para los desarrolladores que desean crear su propio canal RAG.
+------------------------------------------------- ----------------------+| Usuarios finales: Aquellos que usan aplicaciones creadas con `kotaemon`. || (Usas una aplicación como la de la demostración anterior) || +------------------------------------------------- ---------------+ || | Desarrolladores: Aquellos que construyeron con `kotaemon`. | || | (Tienes "importar kotaemon" en algún lugar de tu proyecto) | || | +------------------------------------------------- ---+ | || | | Colaboradores: Aquellos que hacen que "kotaemon" sea mejor. | | || | | (Haces relaciones públicas con este repositorio) | | || | +------------------------------------------------- ---+ | || +------------------------------------------------- ---------------+ |+-------------------------------- --------------------------------------------+
Interfaz de usuario limpia y minimalista : una interfaz fácil de usar para control de calidad basado en RAG.
Soporte para varios LLM : compatible con proveedores de API de LLM (OpenAI, AzureOpenAI, Cohere, etc.) y LLM locales (a través de ollama
y llama-cpp-python
).
Instalación sencilla : scripts simples para comenzar rápidamente.
Framework for RAG Pipelines : herramientas para crear su propio proceso de control de calidad de documentos basado en RAG.
Interfaz de usuario personalizable : vea su canalización RAG en acción con la interfaz de usuario proporcionada, creada con Gradio.
Tema Gradio : si usas Gradio para el desarrollo, consulta nuestro tema aquí: kotaemon-gradio-theme.
Aloje su propia interfaz de usuario web de control de calidad (RAG) de documentos : admita el inicio de sesión de múltiples usuarios, organice sus archivos en colecciones públicas/privadas, colabore y comparta su chat favorito con otros.
Organice sus LLM y modelos de integración : admita LLM locales y proveedores de API populares (OpenAI, Azure, Ollama, Groq).
Canalización RAG híbrida : canalización RAG predeterminada sensata con recuperador híbrido (texto completo y vector) y reclasificación para garantizar la mejor calidad de recuperación.
Soporte de control de calidad multimodal : responda preguntas en múltiples documentos con soporte de figuras y tablas. Admite análisis de documentos multimodal (opciones seleccionables en la interfaz de usuario).
Citas avanzadas con vista previa del documento : de forma predeterminada, el sistema proporcionará citas detalladas para garantizar la exactitud de las respuestas de LLM. Vea sus citas (incluida la puntuación relevante) directamente en el visor de PDF del navegador con aspectos destacados. Advertencia cuando el canal de recuperación devuelve artículos poco relevantes.
Admite métodos de razonamiento complejos : utiliza la descomposición de preguntas para responder a tu pregunta compleja/de múltiples saltos. Apoye el razonamiento basado en agentes con ReAct
, ReWOO
y otros agentes.
UI de configuración configurable : puede ajustar los aspectos más importantes del proceso de recuperación y generación en la UI (incluidas las indicaciones).
Extensible : al estar construido en Gradio, puedes personalizar o agregar cualquier elemento de la interfaz de usuario que desees. Además, nuestro objetivo es respaldar múltiples estrategias para la indexación y recuperación de documentos. La canalización de indexación GraphRAG
se proporciona como ejemplo.
Si no es desarrollador y solo desea utilizar la aplicación, consulte nuestra Guía del usuario fácil de seguir. Descargue el archivo
.zip
de la última versión para obtener todas las funciones más nuevas y correcciones de errores.
Pitón >= 3.10
Docker: opcional, si instala con Docker
No estructurado si desea procesar archivos que no sean documentos .pdf
, .html
, .mhtml
y .xlsx
. Los pasos de instalación difieren según su sistema operativo. Visite el enlace y siga las instrucciones específicas que se proporcionan allí.
Admitimos la versión lite
y full
de las imágenes de Docker. Con full
, también se instalarán los paquetes adicionales de unstructured
, puede admitir tipos de archivos adicionales ( .doc
, .docx
, ...) pero el costo es un mayor tamaño de imagen de la ventana acoplable. Para la mayoría de los usuarios, la imagen lite
debería funcionar bien en la mayoría de los casos.
Para usar la versión lite
.
ejecución de la ventana acoplable -e GRADIO_SERVER_NAME=0.0.0.0 -e GRADIO_SERVER_PORT=7860 -p 7860:7860 -it --rm ghcr.io/cinnamon/kotaemon:main-lite
Para utilizar la versión full
.
ejecución de la ventana acoplable -e GRADIO_SERVER_NAME=0.0.0.0 -e GRADIO_SERVER_PORT=7860 -p 7860:7860 -it --rm ghcr.io/cinnamon/kotaemon:main-full
Actualmente admitimos y probamos dos plataformas: linux/amd64
y linux/arm64
(para Mac más reciente). Puede especificar la plataforma pasando --platform
en el comando docker run
. Por ejemplo:
# Para ejecutar Docker con plataforma Linux/arm64docker run -e GRADIO_SERVER_NAME=0.0.0.0 -e GRADIO_SERVER_PORT=7860 -p 7860:7860 -it --rm --plataforma linux/arm64 ghcr.io/cinnamon/kotaemon:main-lite
Una vez que todo esté configurado correctamente, puede ir a http://localhost:7860/
para acceder a la WebUI.
Usamos GHCR para almacenar imágenes de Docker, todas las imágenes se pueden encontrar aquí.
Clone e instale los paquetes necesarios en un entorno Python nuevo.
# opcional (entorno de configuración)conda create -n kotaemon python=3.10 conda activar kotaemon# clonar este repogit clonar https://github.com/Cinnamon/kotaemoncd kotaemon instalación de pip -e "libs/kotaemon[todos]"instalación de pip -e "libs/ktem"
Cree un archivo .env
en la raíz de este proyecto. Utilice .env.example
como plantilla
El archivo .env
está ahí para casos de uso en los que los usuarios desean preconfigurar los modelos antes de iniciar la aplicación (por ejemplo, implementar la aplicación en el concentrador HF). El archivo solo se usará para completar la base de datos una vez en la primera ejecución; ya no se usará en ejecuciones posteriores.
(Opcional) Para habilitar el visor PDF_JS
en el navegador, descargue PDF_JS_DIST y luego extráigalo a libs/ktem/ktem/assets/prebuilt
Inicie el servidor web:
aplicación python.py
La aplicación se iniciará automáticamente en su navegador.
El nombre de usuario y la contraseña predeterminados son admin
. Puede configurar usuarios adicionales directamente a través de la interfaz de usuario.
Verifique la pestaña Resources
y LLMs and Embeddings
y asegúrese de que su valor api_key
esté configurado correctamente en su archivo .env
. Si no está configurado, puede configurarlo allí.
Nota
La indexación oficial de MS GraphRAG solo funciona con OpenAI o Ollama API. Recomendamos a la mayoría de los usuarios que utilicen la implementación NanoGraphRAG para una integración sencilla con Kotaemon.
Instalar nano-GraphRAG: pip install nano-graphrag
La instalación de nano-graphrag
puede introducir conflictos de versión, consulte este problema
Para solucionarlo rápidamente: pip uninstall hnswlib chroma-hnswlib && pip install chroma-hnswlib
Inicie Kotaemon con USE_NANO_GRAPHRAG=true
variable de entorno.
Configure sus modelos LLM e incrustación predeterminados en la configuración de Recursos y NanoGraphRAG los reconocerá automáticamente.
Instalación sin Docker : si no está utilizando Docker, instale GraphRAG con el siguiente comando:
instalación de pip en el futuro de Graphrag
Configuración de API KEY : para utilizar la función de recuperación GraphRAG, asegúrese de configurar la variable de entorno GRAPHRAG_API_KEY
. Puede hacerlo directamente en su entorno o agregándolo a un archivo .env
.
Uso de modelos locales y configuraciones personalizadas : si desea utilizar GraphRAG con modelos locales (como Ollama
) o personalizar el LLM predeterminado y otras configuraciones, establezca la variable de entorno USE_CUSTOMIZED_GRAPHRAG_SETTING
en verdadero. Luego, ajuste su configuración en el archivo settings.yaml.example
.
Consulte Configuración del modelo local.
De forma predeterminada, todos los datos de la aplicación se almacenan en la carpeta ./ktem_app_data
. Puede hacer una copia de seguridad o copiar esta carpeta para transferir su instalación a una nueva máquina.
Para usuarios avanzados o casos de uso específicos, puede personalizar estos archivos:
flowsettings.py
.env
flowsettings.py
Este archivo contiene la configuración de su aplicación. Puede utilizar el ejemplo aquí como punto de partida.
# configura tu almacén de documentos preferido (con capacidades de búsqueda de texto completo)KH_DOCSTORE=(Elasticsearch | LanceDB | SimpleFileDocumentStore)# configura tu almacén de vectores preferido (para búsqueda basada en vectores)KH_VECTORSTORE=(ChromaDB | LanceDB | InMemory | Qdrant)# Activar/desactivar multimodal QAKH_REASONINGS_USE_MULTIMODAL=True# Configure su nuevo canal de razonamiento o modifique uno existente.KH_REASONINGS = ["ktem.reasoning.simple.FullQAPipeline","ktem.reasoning.simple.FullDecomposeQAPipeline","ktem.reasoning.react.ReactAgentPipeline","ktem .razonamiento.rewoo.RewooAgentPipeline", ]
.env
Este archivo proporciona otra forma de configurar sus modelos y credenciales.
Alternativamente, puede configurar los modelos a través del archivo .env
con la información necesaria para conectarse a los LLM. Este archivo se encuentra en la carpeta de la aplicación. Si no lo ves, puedes crear uno.
Actualmente, se admiten los siguientes proveedores:
Usando el servidor compatible con ollama
OpenAI:
Usando GGUF
con llama-cpp-python
Puede buscar y descargar un LLM para ejecutarlo localmente desde Hugging Face Hub. Actualmente, se admiten estos formatos de modelo:
Instale ollama e inicie la aplicación.
Extraiga su modelo, por ejemplo:
ollama tira llama3.1:8b ollama extrae texto-incrustado nomic
Configure los nombres de los modelos en la interfaz de usuario web y configúrelo como predeterminado:
GGUF
Debes elegir un modelo cuyo tamaño sea menor que la memoria de tu dispositivo y debes dejar unos 2 GB. Por ejemplo, si tienes 16 GB de RAM en total, de los cuales 12 GB están disponibles, entonces deberías elegir un modelo que ocupe como máximo 10 GB de RAM. Los modelos más grandes tienden a ofrecer una mejor generación pero también requieren más tiempo de procesamiento.
Aquí algunas recomendaciones y su tamaño en memoria:
Qwen1.5-1.8B-Chat-GGUF: alrededor de 2 GB
Agregue un nuevo modelo LlamaCpp con el nombre del modelo proporcionado en la interfaz de usuario web.
AbiertoAI
En el archivo .env
, configure la variable OPENAI_API_KEY
con su clave API de OpenAI para permitir el acceso a los modelos de OpenAI. Hay otras variables que se pueden modificar; no dude en editarlas para que se ajusten a su caso. De lo contrario, el parámetro predeterminado debería funcionar para la mayoría de las personas.
OPENAI_API_BASE=https://api.openai.com/v1 OPENAI_API_KEY=OPENAI_CHAT_MODEL=gpt-3.5-turbo OPENAI_EMBEDDINGS_MODEL=incrustación-de-texto-ada-002
Azure abierto AI
Para los modelos OpenAI a través de la plataforma Azure, debe proporcionar su punto final de Azure y su clave API. Es posible que también deba proporcionar el nombre de sus desarrollos para el modelo de chat y el modelo de inserción, según cómo configure el desarrollo de Azure.
AZURE_OPENAI_ENDPOINT= AZURE_OPENAI_API_KEY= OPENAI_API_VERSION=2024-02-15-vista previa AZURE_OPENAI_CHAT_DEPLOYMENT=gpt-35-turbo AZURE_OPENAI_EMBEDDINGS_DEPLOYMENT=incrustación-de-texto-ada-002
Modelos locales
Verifique la implementación de canalización predeterminada aquí. Puede realizar ajustes rápidos en el funcionamiento del proceso de control de calidad predeterminado.
Agregue una nueva implementación .py
en libs/ktem/ktem/reasoning/
y luego inclúyala en flowssettings
para habilitarla en la interfaz de usuario.
Verifique la implementación de muestra en libs/ktem/ktem/index/file/graph
(más instrucciones WIP).
Dado que nuestro proyecto se está desarrollando activamente, valoramos mucho sus comentarios y contribuciones. Consulte nuestra Guía de contribución para comenzar. ¡Gracias a todos nuestros colaboradores!