PrivateGPT: ChatGPT, но приватный и совместимый
18 мая 2023 г.Конфиденциальность является главной задачей при обсуждении инструментов, подобных ChatGPT, с профессионалами.
* Конфиденциальность данных: * Запрос и передача данных на внешние серверы может поставить под угрозу конфиденциальность данных. * Конфиденциальная информация, передаваемая через Интернет, может быть подвергнута несанкционированному доступу. * Безопасность данных: * Отправка данных на внешние серверы увеличивает риск несанкционированного доступа. * Хранение конфиденциальной информации за пределами контролируемой пользователем среды может быть проблематичным. * Соответствие нормативным требованиям: * Требования соответствия для обработки и хранения данных зависят от отрасли и региона. * Использование ChatGPT может вызвать опасения по поводу соблюдения этих правил. * Контроль над данными: * Пользователи имеют ограниченный контроль над тем, как их данные обрабатываются и хранятся в ChatGPT. * Обеспечение соответствия политикам обработки данных или организационным требованиям может потребовать времени и усилий. * Юридические и этические соображения: * К использованию языковых моделей могут применяться юридические и этические соображения, относящиеся к конкретной юрисдикции. * Для определенных моделей ИИ может потребоваться согласие пользователя или соблюдение правил взаимодействия или принятия решений.
2 мая 2023 г. Иван Мартинес показал, как модели и инструменты с открытым исходным кодом, такие как @LangChainAI, обеспечивают 100% локальное выполнение, гарантируя, что ваши данные никогда не покинут вашу среду.
* Позволяет локально выполнять языковые модели, сохраняя данные в среде пользователя. * Повышает конфиденциальность, безопасность и контроль данных, снижая риски соответствия, связанные с традиционными инструментами, подобными ChatGPT.
privateGPT позволяет взаимодействовать с языковыми моделями (такими как LLM, что означает «большие языковые модели») без подключения к Интернету.
С помощью privateGPT вы можете работать со своими документами, задавая вопросы и получая ответы, используя возможности этих языковых моделей.
Одной из важнейших особенностей, подчеркнутых в заявлении, является аспект конфиденциальности.
privateGPT гарантирует, что никакие ваши данные не покинут среду, в которой они выполняются.
Это означает, что все взаимодействия, в том числе прием документов и ответы на вопросы, происходят в среде выполнения без передачи данных через Интернет.
Этот акцент на конфиденциальность направлен на защиту вашей конфиденциальной информации и сохранение конфиденциальности.
Подводя итог, privateGPT позволяет использовать языковые модели в автономном режиме, позволяя вам взаимодействовать с вашими документами, задавая вопросы и получая ответы. Он подчеркивает конфиденциальность данных, гарантируя, что ваши данные остаются в вашей среде выполнения и не передаются через Интернет.
Системные требования:
- Версия Python
- Чтобы использовать это программное обеспечение, у вас должен быть установлен Python 3.10 или более поздней версии. Более ранние версии Python не будут компилироваться
- Компилятор C++
- Если вы столкнулись с ошибкой при сборке колеса в процессе
pip install
, вам может потребоваться установить на свой компьютер компилятор C++. - Для Windows 10/11
- Чтобы установить компилятор C++ в Windows 10/11, выполните следующие действия.
- Установите Visual Studio 2022.
- Убедитесь, что выбраны следующие компоненты:
- Разработка универсальной платформы Windows
- Инструменты C++ CMake для Windows
- Загрузите установщик MinGW с веб-сайта MinGW.
- Запустите программу установки и выберите компонент "gcc".
Настройка среды
Чтобы настроить среду и запустить предоставленный код, выполните следующие действия:
Шаг 1. Установите требования
Убедитесь, что в вашей системе установлены Python и pip. Затем откройте терминал или командную строку и перейдите в каталог проекта. Выполните следующую команду, чтобы установить необходимые зависимости:
pip install -r requirements.txt
Эта команда автоматически установит все необходимые пакеты и библиотеки для запуска кода.
Шаг 2. Загрузите модели
Далее вам нужно загрузить две модели, необходимые для кода. Это модели LLM (модель, совместимая с GPT4All-J) и модель Embedding. Следуйте приведенным ниже инструкциям, чтобы загрузить и поместить их в каталог по вашему выбору:
Модель LLM: Загрузите модель LLM, совместимую с GPT4All-J. Модель по умолчанию называется «ggml-gpt4all-j-v1.3-groovy.bin». Если вы предпочитаете другую модель, совместимую с GPT4All-J, вы можете загрузить ее из надежного источника. После загрузки поместите файл модели в папку по вашему выбору.
Модель внедрения: Загрузите модель встраивания, совместимую с кодом. Модель по умолчанию называется «ggml-model-q4_0.bin». Если вы предпочитаете другую совместимую модель Embeddings, загрузите ее и сохраните в том же каталоге, что и модель LLM.
Шаг 3. Переименуйте и отредактируйте файл конфигурации
В каталоге проекта найдите файл с именем «example.env». Переименуйте этот файл в ".env" (с точкой в начале). Этот файл содержит переменные конфигурации, которые необходимо установить соответствующим образом.
Откройте файл ".env" в текстовом редакторе и измените следующие переменные в соответствии с вашими настройками:
- MODEL_TYPE: задайте для этой переменной значение "LlamaCpp" или "GPT4All" в зависимости от типа модели, которую вы хотите использовать.
- PERSIST_DIRECTORY: укажите папку, в которой вы хотите сохранить свой векторный магазин. Укажите абсолютный путь к нужному каталогу.
- LLAMA_EMBEDDINGS_MODEL: задайте для этой переменной абсолютный путь к двоичному файлу модели встраивания, поддерживаемому LlamaCpp. Обязательно укажите полный путь, включая имя файла и расширение.
- MODEL_PATH: задайте для этой переменной путь к модели LLM, поддерживаемой GPT4All или LlamaCpp. Снова укажите полный путь, включая имя файла и расширение.
- MODEL_N_CTX: укажите максимальное количество токенов как для встраивания, так и для моделей LLM. Это определяет длину входного текста, который могут обрабатывать модели. Установите соответствующее значение в соответствии с вашими требованиями.
Примечание. При указании пути к модели встраивания LLAMA в переменной LLAMA_EMBEDDINGS_MODEL обязательно укажите абсолютный путь. Ярлыки домашнего каталога, такие как «~/path/to/model» или «$HOME/path/to/model», не будут работать.
Сохраните файл ".env" после внесения необходимых изменений.
Шаг 4. Запустите код
После того как вы выполнили описанные выше шаги, вы готовы запустить код с вашими индивидуальными настройками среды. Выполните код удобным для вас способом, например, запустив скрипт или используя интегрированную среду разработки (IDE).
Убедитесь, что ваш код считывает переменные среды из файла ".env" в начале выполнения. Это обеспечит использование правильных путей и настроек модели.
Загрузка собственного набора данных
Чтобы загрузить собственный набор данных в локальный векторный магазин с помощью предоставленного кода, следуйте приведенным ниже инструкциям:
Шаг 1. Подготовьте набор данных
Соберите все документы, которые вы хотите загрузить в vectorstore. Поддерживаемые форматы файлов: .txt, .pdf и .csv. Убедитесь, что ваши документы правильно отформатированы и содержат соответствующие текстовые данные.
Шаг 2. Организуйте свои файлы
Создайте каталог с именем "source_documents" в том же каталоге, что и файлы кода. В этом каталоге будут храниться все ваши файлы набора данных. Поместите все файлы .txt, .pdf или .csv в каталог "source_documents".
Шаг 3. Запустите команду загрузки
Откройте терминал или командную строку и перейдите в каталог, в котором находятся файлы кода. Используйте следующую команду для запуска процесса загрузки:
python ingest.py
Эта команда инициирует процесс загрузки и обработки файлов набора данных. В зависимости от размера ваших документов, процесс может занять некоторое время. Пожалуйста, наберитесь терпения и дайте команде завершить выполнение.
Шаг 4. Дождитесь завершения
В процессе загрузки будет создана папка с именем "db" в том же каталоге, что и файлы кода. Эта папка будет содержать локальное векторное хранилище, где хранятся вложения ваших загруженных документов. Время, затрачиваемое на процесс загрузки, зависит от размера ваших документов и вычислительной мощности вашей системы.
Во время загрузки никакие данные не покидают вашу локальную среду. Загрузка выполняется полностью на вашем компьютере, и вы можете выполнять ее даже без подключения к Интернету.
Шаг 5. Используйте загруженные данные
После завершения загрузки вы можете начать использовать загруженные данные для различных задач, таких как поиск по сходству или анализ текста. Локальное векторное хранилище содержит накопленные вложения всех загруженных документов, что позволяет эффективно выполнять операции с набором данных.
Примечание. Если вы хотите начать с пустой базы данных и удалить все ранее загруженные данные, просто удалите папку "db" перед повторным запуском команды загрузки.
Локальный запрос ваших документов
Чтобы задать вопросы к своим документам локально, выполните следующие действия:
- Выполните команду:
python privateGPT.py
- Введите запрос при появлении запроса и нажмите Enter. Подождите, пока скрипт обработает запрос и сгенерирует ответ (примерно 20–30 секунд).
- Сценарий отобразит сгенерированный ответ и четыре источника контекста, использованные в ваших документах. Вы можете задать дополнительные вопросы, не запуская сценарий повторно.
- Чтобы выйти из скрипта, введите "exit" при запросе запроса.
Примечание. Сценарий работает в автономном режиме, и никакие данные не покидают вашу локальную среду.
Как это работает?
Этот процесс включает в себя выбор подходящих локальных моделей и использование возможностей LangChain. Таким образом, вы можете выполнять весь конвейер в своей собственной среде без каких-либо данных, сохраняя при этом разумную производительность.
Во-первых, скрипт "ingest.py" использует инструменты LangChain для анализа документа и создания вложений (представлений) текста.
Это делается локально с помощью LlamaCppEmbeddings. Полученные встраивания затем сохраняются в локальной векторной базе данных с использованием хранилища векторов Chroma.
Затем сценарий "privateGPT.py" использует модель местного языка (LLM) на основе GPT4All-J или LlamaCpp. Эта модель используется для понимания вопросов и получения ответов.
Чтобы предоставить контекст для ответов, сценарий извлекает соответствующую информацию из локальной базы данных векторов. Это достигается путем выполнения поиска по сходству, который помогает найти соответствующий фрагмент контекста в сохраненных документах.
Кроме того, стоит отметить, что оболочка GPT4All-J была введена в LangChain версии 0.0.162, упрощая интеграцию GPT4All-J в структуру LangChain.
В целом, этот подход позволяет запускать весь процесс локально, без совместного использования данных, и достигать удовлетворительной производительности за счет использования локальных моделей и возможностей LangChain.
Вот ссылка на репозиторий: https://github.com/imartinez/privateGPT
:::информация Также опубликовано здесь.
:::
Оригинал