Чистый и настраиваемый пользовательский интерфейс RAG с открытым исходным кодом для общения с вашими документами. Создано с учетом требований как конечных пользователей, так и разработчиков.
Живая демо | Онлайн-установка | Руководство пользователя | Руководство разработчика | Обратная связь | Контакт
Этот проект служит функциональным пользовательским интерфейсом RAG как для конечных пользователей, которые хотят проводить контроль качества своих документов, так и для разработчиков, которые хотят создать собственный конвейер RAG.
+-------------------------------------------------- ---------------------------+| Конечные пользователи: те, кто использует приложения, созданные с помощью Kotaemon. || (Вы используете приложение, подобное показанному в демо-версии выше) || +-------------------------------------------------- ---------------+ || | Разработчики: Те, кто создавал с помощью `kotaemon`. | || | (Где-то в вашем проекте есть `import kotaemon`) | || | +-------------------------------------------------- ---+ | || | | Вкладчики: Те, кто делает «котаэмон» лучше. | | || | | (Вы делаете пиар этому репо) | | || | +-------------------------------------------------- ---+ | || +-------------------------------------------------- ---------------+ |+-------------------------------- --------------------------------------------+
Чистый и минималистичный пользовательский интерфейс : удобный интерфейс для контроля качества на основе RAG.
Поддержка различных LLM : совместимость с поставщиками API LLM (OpenAI, AzureOpenAI, Cohere и т. д.) и локальными LLM (через ollama
и llama-cpp-python
).
Простая установка : простые сценарии для быстрого начала работы.
Платформа для конвейеров RAG : инструменты для создания собственного конвейера контроля качества документов на основе RAG.
Настраиваемый пользовательский интерфейс . Посмотрите на свой конвейер RAG в действии с помощью предоставленного пользовательского интерфейса, созданного с помощью Gradio.
Тема Gradio : Если вы используете Gradio для разработки, ознакомьтесь с нашей темой здесь: kotaemon-gradio-theme.
Разместите свой собственный веб-интерфейс QA (RAG) для документов : поддерживайте многопользовательский вход в систему, организуйте свои файлы в частных/публичных коллекциях, сотрудничайте и делитесь любимым чатом с другими.
Организуйте свои модели LLM и внедрения : поддерживайте как местные LLM, так и популярные поставщики API (OpenAI, Azure, Ollama, Groq).
Гибридный конвейер RAG : конвейер RAG по умолчанию с гибридным (полнотекстовым и векторным) средством извлечения и повторным ранжированием для обеспечения наилучшего качества извлечения.
Поддержка мультимодального контроля качества : отвечайте на вопросы по нескольким документам с поддержкой рисунков и таблиц. Поддержка мультимодального анализа документов (выбираемые параметры в пользовательском интерфейсе).
Расширенные цитаты с предварительным просмотром документа : по умолчанию система предоставляет подробные цитаты, чтобы гарантировать правильность ответов LLM. Просматривайте свои цитаты (включая соответствующую оценку) прямо в средстве просмотра PDF-файлов в браузере с выделением основных моментов. Предупреждение, когда конвейер поиска возвращает мало релевантных статей.
Поддержка сложных методов рассуждения . Используйте декомпозицию вопроса, чтобы ответить на сложный/многошаговый вопрос. Поддерживайте рассуждения на основе агентов с помощью ReAct
, ReWOO
и других агентов.
Пользовательский интерфейс с настраиваемыми настройками : вы можете настроить наиболее важные аспекты процесса поиска и генерации в пользовательском интерфейсе (включая подсказки).
Расширяемость : поскольку приложение создано на основе Gradio, вы можете настраивать или добавлять любые элементы пользовательского интерфейса по своему усмотрению. Кроме того, мы стремимся поддерживать несколько стратегий индексирования и поиска документов. В качестве примера приведен конвейер индексирования GraphRAG
.
Если вы не разработчик и просто хотите использовать приложение, ознакомьтесь с нашим простым руководством пользователя. Загрузите
.zip
файл последней версии, чтобы получить все новейшие функции и исправления ошибок.
Питон >= 3.10
Docker: необязательно, если вы устанавливаете с помощью Docker.
Неструктурированный, если вы хотите обрабатывать файлы, отличные от документов .pdf
, .html
, .mhtml
и .xlsx
. Шаги установки различаются в зависимости от вашей операционной системы. Пожалуйста, перейдите по ссылке и следуйте конкретным инструкциям, представленным там.
Мы поддерживаем как lite
, так и full
версию образов Docker. При full
также будут установлены дополнительные unstructured
пакеты, они могут поддерживать дополнительные типы файлов ( .doc
, .docx
,...), но за это придется заплатить больший размер образа Docker. Для большинства пользователей lite
образ в большинстве случаев должен работать хорошо.
Чтобы использовать lite
версию.
запуск докера -e GRADIO_SERVER_NAME=0.0.0.0 -e GRADIO_SERVER_PORT=7860 -p 7860:7860 -it --rm ghcr.io/cinnamon/kotaemon:main-lite
Чтобы использовать full
версию.
запуск докера -e GRADIO_SERVER_NAME=0.0.0.0 -e GRADIO_SERVER_PORT=7860 -p 7860:7860 -it --rm ghcr.io/cinnamon/kotaemon:main-full
В настоящее время мы поддерживаем и тестируем две платформы: linux/amd64
и linux/arm64
(для новых Mac). Вы можете указать платформу, передав --platform
в команде docker run
. Например:
# Чтобы запустить докер на платформе linux/arm64docker, запустите -e GRADIO_SERVER_NAME=0.0.0.0 -e GRADIO_SERVER_PORT=7860 -p 7860:7860 -it --rm --платформа Linux/arm64 ghcr.io/cinnamon/kotaemon:main-lite
Как только все будет настроено правильно, вы можете перейти по адресу http://localhost:7860/
чтобы получить доступ к веб-интерфейсу.
Мы используем GHCR для хранения образов докеров, все образы можно найти здесь.
Клонируйте и установите необходимые пакеты в новую среду Python.
# необязательно (настройка env)conda create -n kotaemon python=3.10 conda active kotaemon# клонировать этот репогитный клон https://github.com/Cinnamon/kotaemoncd kotaemon pip install -e "libs/kotaemon[all]" pip install -e "libs/ktem"
Создайте файл .env
в корне этого проекта. Используйте .env.example
в качестве шаблона.
Файл .env
предназначен для случаев использования, когда пользователи хотят предварительно настроить модели перед запуском приложения (например, развернуть приложение на концентраторе HF). Файл будет использоваться для заполнения базы данных только один раз при первом запуске, он больше не будет использоваться при последующих запусках.
(Необязательно) Чтобы включить просмотрщик PDF_JS
в браузере, загрузите PDF_JS_DIST, а затем распакуйте его в libs/ktem/ktem/assets/prebuilt
Запустите веб-сервер:
приложение Python.py
Приложение будет автоматически запущено в вашем браузере.
Имя пользователя и пароль по умолчанию — admin
. Вы можете настроить дополнительных пользователей непосредственно через пользовательский интерфейс.
Проверьте вкладку Resources
, а также LLMs and Embeddings
и убедитесь, что значение api_key
установлено правильно в вашем файле .env
. Если он не установлен, вы можете установить его там.
Примечание
Официальное индексирование MS GraphRAG работает только с API OpenAI или Ollama. Мы рекомендуем большинству пользователей использовать реализацию NanoGraphRAG для простой интеграции с Kotaemon.
Установите nano-GraphRAG: pip install nano-graphrag
установка nano-graphrag
может привести к конфликтам версий, см. эту проблему
Чтобы быстро исправить: pip uninstall hnswlib chroma-hnswlib && pip install chroma-hnswlib
Запустите Kotaemon с переменной среды USE_NANO_GRAPHRAG=true
.
Установите модели LLM и внедрения по умолчанию в настройках «Ресурсы», и они будут автоматически распознаваться из NanoGraphRAG.
Установка без Docker . Если вы не используете Docker, установите GraphRAG с помощью следующей команды:
pip install Graphrag будущее
Настройка ключа API . Чтобы использовать функцию извлечения GraphRAG, убедитесь, что вы установили переменную среды GRAPHRAG_API_KEY
. Вы можете сделать это непосредственно в своей среде или добавив его в файл .env
.
Использование локальных моделей и пользовательских настроек . Если вы хотите использовать GraphRAG с локальными моделями (например, Ollama
) или настроить LLM по умолчанию и другие конфигурации, установите для переменной среды USE_CUSTOMIZED_GRAPHRAG_SETTING
значение true. Затем измените настройки в файле settings.yaml.example
.
См. Настройка локальной модели.
По умолчанию все данные приложения хранятся в папке ./ktem_app_data
. Вы можете создать резервную копию или скопировать эту папку, чтобы перенести установку на новый компьютер.
Для опытных пользователей или особых случаев использования вы можете настроить эти файлы:
flowsettings.py
.env
flowsettings.py
Этот файл содержит конфигурацию вашего приложения. Вы можете использовать приведенный здесь пример в качестве отправной точки.
# настройте предпочтительное хранилище документов (с возможностями полнотекстового поиска)KH_DOCSTORE=(Elasticsearch | LanceDB | SimpleFileDocumentStore)# настройте предпочитаемое векторное хранилище (для векторного поиска)KH_VECTORSTORE=(ChromaDB | LanceDB | InMemory | Qdrant)# Включить/отключить multimodal QAKH_REASONINGS_USE_MULTIMODAL=True# Настройте новый конвейер рассуждений или измените его. существующий.KH_REASONINGS = ["ktem.reasoning.simple.FullQAPipeline", "ktem.reasoning.simple.FullDecomposeQAPipeline", "ktem.reasoning.react.ReactAgentPipeline", "ktem.reasoning.rewoo.RewooAgentPipeline", ]
.env
Этот файл предоставляет еще один способ настройки ваших моделей и учетных данных.
Альтернативно вы можете настроить модели через файл .env
, указав информацию, необходимую для подключения к LLM. Этот файл находится в папке приложения. Если вы его не видите, вы можете его создать.
На данный момент поддерживаются следующие провайдеры:
Использование сервера, совместимого с ollama
OpenAI:
Использование GGUF
с llama-cpp-python
Вы можете найти и загрузить LLM для локального запуска из Hugging Face Hub. На данный момент поддерживаются следующие форматы моделей:
Установите ollama и запустите приложение.
Вытащите свою модель, например:
оллама тянет ламу3.1:8b Оллама вытащить nomic-embed-text
Установите названия моделей в веб-интерфейсе и сделайте их по умолчанию:
ГГУФ
Вам следует выбрать модель, размер которой меньше памяти вашего устройства и должен оставить около 2 ГБ. Например, если у вас всего 16 ГБ ОЗУ, из которых доступно 12 ГБ, то вам следует выбрать модель, занимающую максимум 10 ГБ ОЗУ. Более крупные модели, как правило, дают более качественную генерацию, но требуют больше времени на обработку.
Вот некоторые рекомендации и их размер в памяти:
Qwen1.5-1.8B-Chat-GGUF: около 2 ГБ
Добавьте новую модель LlamaCpp с указанным именем модели в веб-интерфейсе.
ОпенАИ
В файле .env
установите переменную OPENAI_API_KEY
с вашим ключом API OpenAI, чтобы разрешить доступ к моделям OpenAI. Существуют и другие переменные, которые можно изменить, пожалуйста, редактируйте их в соответствии с вашим случаем. В противном случае параметр по умолчанию должен работать для большинства людей.
OPENAI_API_BASE=https://api.openai.com/v1 OPENAI_API_KEY=<ваш ключ OpenAI API здесь>OPENAI_CHAT_MODEL=gpt-3.5-turbo OPENAI_EMBEDDINGS_MODEL=text-embedding-ada-002
Azure OpenAI
Для моделей OpenAI через платформу Azure вам необходимо предоставить конечную точку Azure и ключ API. Вам также может потребоваться указать имя вашей разработки для модели чата и модели внедрения в зависимости от того, как вы настроили разработку Azure.
AZURE_OPENAI_ENDPOINT= AZURE_OPENAI_API_KEY= OPENAI_API_VERSION=2024-02-15-предварительный просмотр AZURE_OPENAI_CHAT_DEPLOYMENT=gpt-35-турбо AZURE_OPENAI_EMBEDDINGS_DEPLOYMENT=text-embedding-ada-002
Локальные модели
Проверьте реализацию конвейера по умолчанию здесь. Вы можете быстро настроить работу конвейера контроля качества по умолчанию.
Добавьте новую реализацию .py
в libs/ktem/ktem/reasoning/
а затем включите ее в flowssettings
чтобы включить ее в пользовательском интерфейсе.
Проверьте пример реализации в libs/ktem/ktem/index/file/graph
(подробнее инструкция WIP).
Поскольку наш проект активно развивается, мы очень ценим ваши отзывы и вклад. Чтобы начать, ознакомьтесь с нашим Руководством для участников. Спасибо всем нашим участникам!