Примечание
Команда Canopy больше не поддерживает этот репозиторий. Спасибо за вашу поддержку и энтузиазм в отношении проекта! Если вы ищете высококачественное управляемое Rag Solution с постоянными обновлениями и улучшениями, пожалуйста, ознакомьтесь с помощником Pinecone.
Canopy -это структура с открытым исходным кодом из поиска с открытым исходным кодом (RAG) и контекстного двигателя, созданная в верхней части базы данных Vector Pinecone. Canopy позволяет быстро и легко экспериментировать и создавать приложения с помощью Rag. Начните общаться с вашими документами или текстовыми данными с несколькими простыми командами.
Canopy приобретает тяжелую работу для создания тряпичных приложений: от подключения и внедрения ваших текстовых данных до управления истории чата, оптимизации запросов, поиска контекста (включая быстрое инженер) и дополненное поколение.
Canopy предоставляет настраиваемый встроенный сервер, поэтому вы можете легко развернуть приложение чата с тряпкой в существующий пользовательский интерфейс или интерфейс. Или вы можете создать свое собственное, пользовательское тряпичное приложение, используя библиотеку навес.
Canopy позволяет оценить ваш Rag Workflow с помощью инструмента чата на основе CLI. С помощью простой команды в CLI навес вы можете интерактивно общаться с вашими текстовыми данными и сравнить RAG с без rag Workflles бок о бок.
Проверьте наш пост в блоге, чтобы узнать больше, или увидеть здесь быстрое руководство.

Canopy реализует полный рабочий процесс Rag, чтобы предотвратить галлюцинации и увеличить ваш LLM своими собственными текстовыми данными.
Навес имеет два потока: создание базы знаний и чат. В потоке создания базы знаний пользователи загружают свои документы и превращают их в значимые представления, хранящиеся в векторной базе данных Pinecone. В потоке чата входящие запросы и история чата оптимизированы для получения наиболее важных документов, база знаний запрашивается, и для ответа LLM генерируется значимый контекст.
ChatEngine формулирует соответствующие запросы для ContextEngine , а затем использует LLM для создания знающего ответа.ContextEngine использует базовую KnowledgeBase для получения наиболее важных документов, а затем формулирует когерентный текстовый контекст, который будет использоваться в качестве подсказки для LLM.Более подробную информацию об использовании основной библиотеки можно найти в документации библиотеки
Сервер Canopy - это веб -сервис, который завершает библиотеку Canopy Core и обнаруживает ее как API REST. Сервер строится на вершине Fastapi, Uvicorn и стрелобрю и может быть легко развернут в производстве. Сервер также поставляется со встроенным пользовательским интерфейсом Swagger для легкого тестирования и документации. После того, как вы запустите сервер, вы можете получить доступ к UI Swagger по адресу http://host:port/docs (по умолчанию: http://localhost:8000/docs )
CLI CANOPY - встроенный инструмент разработки, который позволяет пользователям быстро настраивать собственный сервер CANOPY и проверить его конфигурацию.
С всего лишь тремя командами CLI вы можете создать новый сервер Canopy, загрузить в него свои документы, а затем взаимодействовать с чат-ботом, используя встроенное приложение чата непосредственно с терминала. Встроенный чат-бот также обеспечивает сравнение реакций с трями с нативным чат-ботом LLM.
python3 -m venv canopy-env
source canopy-env/bin/activateБольше информации о виртуальных средах можно найти здесь
pip install canopy-sdk| Имя | Описание |
|---|---|
grpc | Чтобы разблокировать некоторые улучшения производительности, работая с версией GRPC Pinecone Client |
torch | Чтобы включить встраивания, предоставленные трансформаторами предложений |
transformers | Если вы используете AntyScale LLMS, рекомендуется использовать токенизатор LLamaTokenizer , который требует трансформаторов в качестве зависимости |
cohere | Использовать переосмысление Cohere или/и Cohere LLM |
qdrant | Использовать Qdrant в качестве альтернативной базы знаний |
export PINECONE_API_KEY= " <PINECONE_API_KEY> "
export OPENAI_API_KEY= " <OPENAI_API_KEY> "
export INDEX_NAME= " <INDEX_NAME> "| Имя | Описание | Как это получить? |
|---|---|---|
PINECONE_API_KEY | Ключ API для Pinecone. Используется для аутентификации в службах PineCone для создания индексов и для вставки, удаления и поиска данных | Зарегистрируйтесь или войдите в свою учетную запись Pinecone в консоли. Вы можете получить доступ к своему клавишу API из разделения «Ключи API» на боковой панели панели панели панели |
OPENAI_API_KEY | API -ключ для Openai. Используется для аутентификации в услуги OpenAI для внедрения и API чата | Вы можете найти свой ключ API OpenAI здесь. Вам может потребоваться войти в систему или зарегистрироваться в Seportai Services |
INDEX_NAME | Название навеса индекса PineCone в основе работы с | Вы можете выбрать любое имя, пока оно следует за ограничениями Pinecone |
CANOPY_CONFIG_FILE | Путь файла конфигурации YAML, который будет использоваться сервером Canopy. | Необязательно - если не предоставлено, будет использована конфигурация по умолчанию |
Эти дополнительные переменные среды используются для аутентификации в другие поддерживаемые службы для внедрения и LLMS. Если вы настроите навес для использования любого из этих поставщиков - вам нужно будет установить соответствующие переменные среды.
| Имя | Описание | Как это получить? |
|---|---|---|
ANYSCALE_API_KEY | API -ключ для AnlyScale. Используется для аутентификации в любые конечные точки для LLMS с открытым исходным кодом | Вы можете зарегистрировать AnyScale конечные точки и найти свой ключ API здесь |
CO_API_KEY | API -ключ для cohere. Используется для аутентификации для сочетания услуг для внедрения | Вы можете найти больше информации о регистрации, чтобы связаться здесь |
JINA_API_KEY | API -ключ для Джины Ай. Используется для аутентификации в услуги Jinaai для внедрения и чата API | Вы можете найти свой ключ API OpenAI здесь. Вам может потребоваться войти в систему или зарегистрироваться в Seportai Services |
AZURE_OPENAI_ENDOINT | URL -адрес Azure Openai конечной точки, которую вы развернули. | Вы можете найти это на портале Azure Openai под _keys и конечными точками |
AZURE_OPENAI_API_KEY | Ключ API для использования для ваших моделей Azure OpenAI. | Вы можете найти это на портале Azure Openai под _keys и конечными точками |
OCTOAI_API_KEY | API -ключ для Octoai. Используется для аутентификации для LLM с открытым исходным кодом, обслуживаемым в Octoai | Вы можете подписаться на Octoai и найти свой ключ API здесь |
canopyВывод должен быть похож на это:
Canopy: Ready
Usage: canopy [OPTIONS] COMMAND [ARGS]...
# rest of the help message В этом QuickStart мы покажем вам, как использовать навес , чтобы создать простую систему ответов на вопрос с использованием RAG (извлечение дополненного поколения).
В качестве единовременной настройки, навес необходимо создать новый индекс Pinecone, который настроен на работу с навесом, просто запустите:
canopy new И следуйте инструкциям CLI. Индекс, который будет создан, будет иметь префикс- canopy--<INDEX_NAME> .
Вам нужно сделать этот процесс только один раз для каждого индекса навеса, который вы хотите создать.
Чтобы узнать больше об индексах Pinecone и о том, как их управлять, обратитесь к следующему руководству: Понимание индексов
Вы можете загрузить данные в свой индекс навеса, используя команду:
canopy upsert /path/to/data_directory
# or
canopy upsert /path/to/data_directory/file.parquet
# or
canopy upsert /path/to/data_directory/file.jsonl
# or
canopy upsert /path/to/directory_of_txt_files/
# ... Canopy поддерживает файлы в форматах jsonl , parquet и csv . Кроме того, вы можете загрузить файлы данных с открытым текстом в формате .txt . В этом случае каждый файл будет рассматриваться как один документ. Идентификатор документа будет именем файла, и источником будет полный путь файла.
Примечание . Поля документа используются в потоке RAG и должны соответствовать следующей схеме:
+----------+--------------+--------------+---------------+
| id(str) | text(str) | source | metadata |
| | | Optional[str] | Optional[dict] |
| ----------+--------------+--------------+--------------- |
| " id1 " | " some text " | " some source " | { " key " : " val " } |
+----------+--------------+--------------+---------------+
# id - unique identifier for the document
#
# text - the text of the document, in utf-8 encoding.
#
# source - the source of the document, can be any string, or null.
# ** this will be used as a reference in the generated context. **
#
# metadata - optional metadata for the document, for filtering or additional context.
# Dict[str, Union[str, int, float, List[str]]]В этом ноутбуке показано, как вы создаете набор данных в этом формате, следуйте инструкциям в CLI при загрузке данных.
Кончик
Если вы хотите разделить свои данные на пространства имен, вы можете использовать опцию --namespace или переменную среды INDEX_NAMESPACE .
Сервер Canopy обнаруживает функциональность Canopy через API REST. А именно, он позволяет загружать документы, получать соответствующие документы для данного запроса и общаться с вашими данными. Сервер разоблачает конечную точку /chat.completion , которая может быть легко интегрирована с любым приложением чата. Чтобы запустить сервер, запустите:
canopy startТеперь вам следует вызвать со следующим стандартным сообщением Uvicorn:
...
INFO: Uvicorn running on http://0.0.0.0:8000 (Press CTRL+C to quit)
Вот и все! Теперь вы можете начать использовать сервер Canopy с любым приложением чата, которое поддерживает конечную точку /chat.completion .
Команда начала навеса будет держать терминал занятым (рекомендуемое использование). Если вы хотите запустить сервер в фоновом режиме, вы можете использовать следующую команду -
nohup canopy start &
Чтобы остановить сервер, просто нажмите CTRL+C в терминале, где вы его запустили.
CLI's CLI поставляется со встроенным приложением для чата, которое позволяет интерактивно общаться с вашими текстовыми данными и сравнивать RAG с без RAG Workflows
В новом окне терминала установите необходимые переменные среды, затем запустите:
canopy chatЭто откроет интерфейс чата в вашем терминале. Вы можете задать вопросы, и чат-бот с тряпкой попытается ответить на них, используя загруженные вами данные.
Чтобы сравнить ответ чата с тряпкой и без него. Используйте флаг --no-rag
Примечание . Этот метод в данный момент поддерживается только с OpenAI.
canopy chat --no-ragЭто откроет аналогичное окно интерфейса чата, но будет показывать как тряпичные, так и не RAG-ответы бок о бок.
Спасибо, что рассмотрели вклад в навес! Пожалуйста, смотрите наши рекомендации для получения дополнительной информации.
Если у вас уже есть приложение http://host:port/v1 которое использует API OpenAI, вы можете перенести его на куполо
from openai import OpenAI
client = OpenAI ( base_url = "http://localhost:8000/v1" )Если вы хотите использовать определенное пространство имен индекса для чата, вы можете просто добавить пространство имен в конечную точку API:
from openai import OpenAI
client = OpenAI ( base_url = "http://localhost:8000/v1/my-namespace" ) Canopy использует Fastapi в качестве веб -структуры и Uvicorn в качестве сервера ASGI.
Для использования навеса в производстве рекомендуется использовать изображение Docker на Canopy, доступное в пакетах GitHub для ваших производственных потребностей.
Для руководства по развертыванию навеса на платформе Google Cloud (GCP) см. Пример, приведенный в документации по развертыванию в документацию GCP.
В качестве альтернативы, вы можете использовать оружие в качестве производственного уровня WSGI, более подробную информацию здесь.
Установите желаемые переменные Entrionment PORT и WORKER_COUNT и запустите сервер с:
gunicorn canopy_server.app:app --worker-class uvicorn.workers.UvicornWorker --bind 0.0.0.0: $PORT --workers $WORKER_COUNT Важный
Сервер взаимодействует с такими услугами, как Pinecone и Openai, используя ваши собственные учетные данные аутентификации. При развертывании сервера на общедоступном поставщике веб -хостинга рекомендуется включить механизм аутентификации, чтобы ваш сервер принимал запросы только от аутентифицированных пользователей.