ПРОЧИТАЙТЕ ЭТО НА АНГЛИЙСКОМ ЯЗЫКЕ
LangChain-Chatchat (ранее Langchain-ChatGLM)
Основанный на больших языковых моделях, таких как ChatGLM, и платформах приложений, таких как Langchain, это проект приложения RAG и агента с открытым исходным кодом, который можно развертывать в автономном режиме.
Обзор
Введение в функцию
Обзор функций версии 0.3.x
Поддерживаемые структуры и модели вывода моделей
Начинайте быстро
установка и развертывание pip
Установка исходного кода и развертывание/развертывание разработки
Развертывание докера
Основные этапы проекта
Связаться с нами
?️ Приложение вопросов и ответов, основанное на местной базе знаний, реализованное с использованием идей langchain. Цель состоит в том, чтобы создать решение для вопросов и ответов в базе знаний, которое совместимо с китайскими сценариями и моделями с открытым исходным кодом и может работать в автономном режиме.
? На основе проекта document.ai компании GanymedeNil и запроса на включение ChatGLM-6B, созданного Алексом Чжанджи, было создано приложение вопросов и ответов для местной базы знаний, которое можно реализовать с использованием моделей с открытым исходным кодом на протяжении всего процесса. В последней версии этого проекта такие платформы, как Xinference и Ollama, можно использовать для доступа к таким моделям, как GLM-4-Chat, Qwen2-Instruct, Llama3 и т. д., полагаясь на структуру langchain для поддержки сервисов вызовов через API, предоставляемые на основе на FastAPI или с помощью WebUI на основе Streamlit.
✅ Этот проект поддерживает основные LLM с открытым исходным кодом, модели внедрения и векторные базы данных на рынке, а также может реализовать автономное частное развертывание всех моделей с открытым исходным кодом . В то же время этот проект также поддерживает вызов OpenAI GPT API и в будущем продолжит расширять доступ к различным моделям и API моделей.
⛓️Принцип реализации данного проекта показан на рисунке ниже. Процесс включает загрузку файлов -> чтение текста -> сегментацию текста -> векторизацию текста -> векторизацию вопроса -> сопоставление top k
в текстовом векторе, наиболее похожего на вектор. вектор вопроса top k
-> Соответствующий текст добавляется в prompt
в виде контекста и вопроса -> Отправляется в LLM
для генерации ответа.
? Принцип ознакомительного видео
С точки зрения обработки документов процесс реализации выглядит следующим образом:
? Этот проект не предполагает тонкую настройку или процессы обучения, но тонкую настройку или обучение можно использовать для оптимизации эффекта от этого проекта.
? Код, используемый в версии 0.3.0
образа AutoDL, обновлен до версии v0.3.0
этого проекта.
? Образ Docker будет обновлен в ближайшем будущем.
?? Если вы хотите внести свой вклад в этот проект, посетите руководство по разработке, чтобы получить дополнительную информацию о разработке и развертывании.
Функция | 0.2.х | 0.3.х |
---|---|---|
Доступ к модели | Локальный: фастчат Онлайн: XXXModelWorker | Локально: model_provider, поддерживает большинство основных платформ загрузки моделей. Онлайн: oneapi. Доступ ко всем моделям совместим с openai sdk. |
Агент | ❌Нестабильный | ✅Оптимизирован для ChatGLM3 и Qwen, возможности агента значительно улучшены. |
LLM разговор | ✅ | ✅ |
Разговор в базе знаний | ✅ | ✅ |
разговор в поисковой системе | ✅ | ✅ |
файловый разговор | ✅Только векторный поиск | ✅Объединена с функцией File RAG, поддерживающей несколько методов поиска, таких как BM25+KNN. |
Диалог базы данных | ❌ | ✅ |
Мультимодальный диалог с картинками | ❌ | ✅ Рекомендуется использовать qwen-vl-chat |
Литературный диалог ARXIV | ❌ | ✅ |
Беседа с Вольфрамом | ❌ | ✅ |
Винсентианская картина | ❌ | ✅ |
Управление местной базой знаний | ✅ | ✅ |
ВЕБУИ | ✅ | ✅Улучшенная поддержка нескольких сеансов, индивидуальные системные подсказки... |
Основные функции версии 0.3.x реализуются Агентом, но пользователи также могут вручную выполнять вызовы инструментов:
Режим работы | Реализованные функции | Применимые сценарии |
---|---|---|
Установите флажок «Включить агент» и выберите несколько инструментов. | Автоматический вызов инструмента от LLM | Используйте модели с возможностями агента, такие как ChatGLM3/Qwen или онлайн-API. |
Установите флажок «Включить агент» и выберите один инструмент. | LLM анализирует только параметры инструмента | Используемый модельный агент имеет средние возможности и не умеет хорошо выбирать инструменты. Я хочу выбирать функции вручную. |
Снимите флажок «Включить агент» и выберите один инструмент. | Не используя функцию Агента, вручную заполните параметры для вызова инструмента. | Используемая модель не имеет возможностей агента. |
Снимите флажок с любого инструмента и загрузите изображение. | Диалог в картинках | Используйте мультимодальные модели, такие как qwen-vl-chat. |
Для получения дополнительных функций и обновлений ознакомьтесь с реальным развертыванием.
Этот проект уже поддерживает последние модели больших языков с открытым исходным кодом и модели внедрения, которые широко распространены на рынке, такие как GLM-4-Chat и Qwen2-Instruct. Эти модели требуют, чтобы пользователи самостоятельно запускали среду развертывания модели и получали доступ к проекту, изменяя файл. информация о конфигурации. Этот проект. Поддерживаемые платформы развертывания локальной модели:
Структура развертывания модели | Ксинференс | Локальный AI | Оллама | Фастчат |
---|---|---|---|---|
Согласование интерфейса API OpenAI | ✅ | ✅ | ✅ | ✅ |
Ускорение механизмов вывода | GPTQ, GGML, vLLM, TensorRT, mlx | GPTQ, GGML, vLLM, TensorRT | ГГУФ, ГГМЛ | vLLM |
Тип модели доступа | LLM, встраивание, изменение ранга, преобразование текста в изображение, видение, аудио | LLM, встраивание, изменение ранга, преобразование текста в изображение, видение, аудио | LLM, преобразование текста в изображение, видение | Магистр права, видение |
Вызов функции | ✅ | ✅ | ✅ | / |
Дополнительная поддержка платформ (ЦП, Metal) | ✅ | ✅ | ✅ | ✅ |
гетерогенный | ✅ | ✅ | / | / |
кластер | ✅ | ✅ | / | / |
Ссылка на оперативный документ | Документация | Документация LocalAI | Документация Олламы | Документация по Фастчату |
Доступные модели | Xinference уже поддерживает модели | LocalAI уже поддерживает модели | Оллама уже поддерживает модели | FastChat уже поддерживает модели |
В дополнение к вышеупомянутой платформе загрузки локальной модели, проект также обеспечивает поддержку доступа платформы One API к онлайн-API, включая OpenAI ChatGPT, Azure OpenAI API, Anthropic Claude, Zhipu Qingyan, Baichuan и другие часто используемые онлайн-API. использовать.
Примечание
О загрузке локальных моделей Xinference: встроенные модели Xinference будут загружены автоматически. Если вы хотите загрузить локально загруженную модель, вы можете выполнить streamlit run xinference_manager.py
в каталоге инструментов проекта/model_loaders после запуска службы Xinference. Подсказки на странице: Просто укажите модель, чтобы установить локальный путь.
? Что касается программного обеспечения, этот проект поддерживает использование в среде Python 3.8-3.11 и был протестирован в операционных системах Windows, macOS и Linux.
? Что касается аппаратного обеспечения, поскольку версия 0.3.0 была изменена для поддержки доступа к различным платформам развертывания моделей, ее можно использовать в различных аппаратных условиях, таких как ЦП, графический процессор, NPU, MPS и т. д.
Начиная с версии 0.3.0, Langchain-Chachat предоставляет метод установки в виде библиотеки Python. Для конкретной установки выполните:
pip install langchain-chatchat -U
Важный
Чтобы гарантировать, что используемая библиотека Python является последней версией, рекомендуется использовать официальный исходный код Pypi или исходный код Tsinghua.
Примечание
Поскольку платформа развертывания модели Xinference требует дополнительной установки соответствующей библиотеки зависимостей Python при подключении к Langchain-Chachat, рекомендуется использовать следующий метод установки при использовании ее с платформой Xinference:
pip install "langchain-chatchat[xinference]" -U
Начиная с версии 0.3.0, Langchain-Chatchat больше не загружает модели напрямую на основе введенного пользователем пути к локальной модели. Типы задействованных моделей включают LLM, внедрение, переранжирование и мультимодальные модели, которые будут поддерживаться в будущем. и т. д. были изменены на «Поддерживает доступ к основным платформам вывода моделей, широко доступным на рынке, таким как Xinference, Ollama, LocalAI, FastChat, One API и т. д.».
Поэтому убедитесь, что перед запуском проекта Langchain-Chachat сначала запустите структуру вывода модели и загрузите необходимую модель.
Здесь мы возьмем Xinference в качестве примера. Обратитесь к документации Xinference для развертывания платформы и загрузки модели.
Предупреждение
Чтобы избежать конфликтов зависимостей, поместите Langchain-Chachat и платформы развертывания моделей, такие как Xinference, в различные виртуальные среды Python, такие как conda, venv, virtualenv и т. д.
Начиная с версии 0.3.1, Langchain-Chachat использует для конфигурации локальные файлы yaml
. Пользователи могут напрямую просматривать и изменять содержимое, а сервер будет автоматически обновляться без перезапуска.
Установите корневой каталог, в котором Chatchat хранит файлы конфигурации и файлы данных (необязательно).
# в Linux или Macosexport CHATCHAT_ROOT=/path/to/chatchat_data # в Windowsset CHATCHAT_ROOT=/path/to/chatchat_data
Если эта переменная среды не установлена, автоматически будет использоваться текущий каталог.
Выполнить инициализацию
инициализация чата
Эта команда делает следующее:
Создайте все необходимые каталоги данных
Копирование образцов содержимого базы знаний
Создать файл конфигурации yaml
по умолчанию
Изменить файл конфигурации
Настройте модель (model_settings.yaml)
Вам необходимо выполнить настройку доступа к модели в соответствии с платформой вывода модели, выбранной на шаге 2. Платформа вывода модели и загрузить модель и загруженную модель. Подробности см. в комментариях в model_settings.yaml
. В основном измените следующее содержимое:
# Имя LLM по умолчанию DEFAULT_LLM_MODEL: qwen1.5-chat # Имя встраивания по умолчанию DEFAULT_EMBEDDING_MODEL: bge-large-zh-v1.5 # Измените ключи `llm_model, action_model` в `LLM_MODEL_CONFIG` на соответствующую модель LLM# Измените информация о соответствующей платформе модели в `MODEL_PLATFORMS`
Настройте путь к базе знаний (basic_settings.yaml) (необязательно)
База знаний по умолчанию находится по адресу CHATCHAT_ROOT/data/knowledge_base
. Если вы хотите разместить базу знаний в другом месте или подключиться к существующей базе знаний, вы можете изменить соответствующий каталог здесь.
# Путь хранения базы знаний по умолчанию KB_ROOT_PATH: D:chatchat-testdataknowledge_base # Путь хранения базы данных по умолчанию. Если вы используете sqlite, вы можете изменить DB_ROOT_PATH напрямую; если вы используете другие базы данных, измените SQLALCHEMY_DATABASE_URI напрямую; DB_ROOT_PATH: D:chatchat-testdataknowledge_baseinfo.db # URI подключения к базе данных базы знаний SQLALCHEMY_DATABASE_URI: sqlite:///D:chatchat-testdataknowledge_baseinfo.db
Настройте базу знаний (kb_settings.yaml) (необязательно)
База знаний FAISS
используется по умолчанию. Если вы хотите подключиться к другим типам баз знаний, вы можете изменить DEFAULT_VS_TYPE
и kbs_config
.
Предупреждение
Перед инициализацией базы знаний убедитесь, что структура вывода модели и соответствующая модель embedding
запущены, а настройка доступа к модели завершена в соответствии с шагом 3 выше.
чат КБ -r
Дополнительные функции см. в chatchat kb --help
Появится следующий журнал, указывающий на успех:
----------------------------------------------------------------------------------------------------
知识库名称 :samples
知识库类型 :faiss
向量模型: :bge-large-zh-v1.5
知识库路径 :/root/anaconda3/envs/chatchat/lib/python3.11/site-packages/chatchat/data/knowledge_base/samples
文件总数量 :47
入库文件数 :42
知识条目数 :740
用时 :0:02:29.701002
----------------------------------------------------------------------------------------------------
总计用时 :0:02:33.414425
Примечание
Часто задаваемые вопросы об инициализации базы знаний
Эта проблема часто возникает во вновь создаваемых виртуальных средах и может быть подтверждена следующими причинами:
from unstructured.partition.auto import partition
Если оператор завис и не может быть выполнен, вы можете выполнить следующую команду:
pip uninstall python-magic-bin# проверьте версию удаленного пакета pip install 'python-magic-bin=={version}'
Затем следуйте инструкциям в этом разделе, чтобы заново создать базу знаний.
начало чата -a
Когда появится следующий интерфейс, запуск успешен:
Предупреждение
Поскольку адрес прослушивания DEFAULT_BIND_HOST
по умолчанию, настроенный в чате, — 127.0.0.1, доступ к нему через другие IP-адреса невозможен.
Если вам нужен доступ через IP-адрес машины (например, в системе Linux), вам необходимо изменить адрес прослушивания на 0.0.0.0 в basic_settings.yaml
.
Для настройки диалога с базой данных перейдите сюда для получения инструкций по настройке диалога с базой данных.
Пожалуйста, обратитесь к руководству по разработке для установки и развертывания исходного кода.
Docker Pull Chatimage/chatchat: 0.3.1.3-93e2c87-20240829 docker pull ccr.ccs.tencentyun.com/langchain-chatchat/chatchat:0.3.1.3-93e2c87-20240829 # Домашнее зеркало
Важный
Настоятельно рекомендуется: используйте развертывание docker-compose, подробности см. в README_docker.
Структура 0.3.x сильно изменилась, и настоятельно рекомендуется выполнить повторное развертывание в соответствии с документацией. Следующее руководство не гарантирует 100% совместимости и успеха. Не забудьте заранее создать резервную копию важных данных!
Сначала выполните действия по安装部署
, чтобы настроить операционную среду и изменить файл конфигурации.
Скопируйте каталог Knowledge_base проекта 0.2.x в настроенный каталог DATA
.
2023年4月
.: выпущен Langchain-ChatGLM 0.1.0
, поддерживающий вопросы и ответы местной базы знаний на основе модели ChatGLM-6B.
2023年8月
.: Langchain-ChatGLM
был переименован в Langchain-Chatchat
, выпущена версия 0.2.0
, использующая fastchat
в качестве решения для загрузки моделей и поддерживающая больше моделей и баз данных.
2023年10月
: выпущена версия Langchain-Chatchat 0.2.5
, запустившая контент Агента, а проект с открытым исходным кодом занял третье место на хакатоне, проводимом Founder Park & Zhipu AI & Zilliz
.
2023年12月
.: проект с открытым исходным кодом Langchain-Chatchat
получил более 20 тысяч звезд.
2024年6月
.: выпущен Langchain-Chatchat 0.3.0
, в котором представлена новая структура проекта.
? Давайте с нетерпением ждем будущей истории в чате...
Код этого проекта соответствует протоколу Apache-2.0.
? Проект Langchain-Chachat Коммуникационная группа WeChat Если вы также заинтересованы в этом проекте, вы можете присоединиться к групповому чату для участия в обсуждении и обмене мнениями.
? Официальный публичный аккаунт проекта Langchain-Chachat. Добро пожаловать, отсканируйте QR-код, чтобы подписаться.
Если этот проект полезен для вашего исследования, пожалуйста, укажите нас:
@software{langchain_chatchat, title = {{langchain-chatchat}}, author = {Liu, Qian and Song, Jinke, and Huang, Zhiguo, and Zhang, Yuxuan, and glide-the, and liunux4odoo}, year = 2024, journal = {GitHub repository}, publisher = {GitHub}, howpublished = {url{https://github.com/chatchat-space/Langchain-Chatchat}} }