Этот репозиторий содержит практический пример создания приложения вопросов и ответов, способного отвечать на вопросы, связанные с вашими личными документами, с использованием сервисов GenAI AWS.
Ранее я создал приложение вопросов и ответов, используя Azure OpenAI GPT-4 и Pinecone (вы можете найти его здесь) .
В этом репозитории я создам точно такое же приложение, но используя только сервисы AWS (+ Streamlit для пользовательского интерфейса).
Если быть точнее, приложение имеет следующую архитектуру:
И он использует следующие технологии:
Этот репозиторий содержит следующее приложение:
Streamlit
, которое позволяет нам запрашивать данные, хранящиеся в AWS Kendra, с использованием одной из доступных моделей AWS Bedrock LLM.Личные документы хранятся в корзине s3.
Индекс Кендры настроен на использование соединителя s3. Индекс проверяет корзину s3 каждые N минут на наличие нового контента. Если в корзине обнаруживается новый контент, он автоматически анализируется и сохраняется в базе данных Kendra.
Когда пользователь запускает запрос через приложение Streamlit
, приложение выполняет следующие шаги:
Если вместо использования приложения Streamlit
вы предпочитаете пошагово выполнять инструкции по настройке паттерна RAG, у вас есть блокнот Jupyter ( /notebooks/rag-with-langchain.ipynb
), который точно позволит вам это сделать.
Приложение Streamlit
активно использует библиотеку LangChain
для реализации шаблона RAG. Если вы предпочитаете не использовать какие-либо сторонние библиотеки и настраивать шаблон RAG исключительно с помощью библиотеки boto3
, у вас есть второй блокнот Jupyter ( /notebooks/rag-with-only-boto3.ipynb
), который позволит вам это сделать. .
В папке /infra
вы найдете ряд файлов Terraform, которые создадут все сервисы AWS, необходимые для правильного функционирования приложения.
Эти файлы Terraform создадут следующие ресурсы:
Есть несколько предварительных условий, о которых вам следует знать, прежде чем пытаться запустить приложение.
В разделе «Доступ к модели» у вас есть обзор того, к каким LLM у вас есть доступ, а к каким нет.
Чтобы в полной мере использовать это приложение, у вас должен быть доступ ко всем сторонним программам LLM AWS Bedrock .
boto3
настроен на получение учетных данных AWS из профиля default
файла конфигурации AWS на вашем локальном компьютере. Для обзора нескольких подходов к настройке учетных данных boto3
перейдите по следующей ссылке:
Прежде чем пытаться запустить приложение, прочтите разделы «Инфраструктура AWS» и «Предварительные требования» .
В репозитории есть файл .env
, содержащий переменные среды, необходимые приложению для успешной работы:
KENDRA_INDEX='<kendra-index>'
AWS_BEDROCK_REGION='<bedrock-region>'
AWS_KENDRA_REGION='<region-where-kendra-index-is-deployed>'
Измените значения соответствующим образом.
pip install -r requirements.txt
Когда вы устанавливаете Streamlit
, также устанавливается инструмент командной строки (CLI). Целью этого инструмента является запуск приложений Streamlit
.
Чтобы запустить приложение, просто выполните следующую команду:
streamlit run app.py
В этом репозитории есть
Dockerfile
на случай, если вы предпочитаете запускать приложение в контейнере.
docker build -t aws-rag-app .
docker run -p 5050:5050
-e KENDRA_INDEX="<kendra-index>"
-e AWS_BEDROCK_REGION="<bedrock-region>"
-e AWS_KENDRA_REGION="<region-where-kendra-index-is-deploy>"
-e AWS_ACCESS_KEY_ID="<aws-access-key>"
-e AWS_SECRET_ACCESS_KEY="<aws-secret-access-key>"
aws-rag-app
app.py
, чтобы он был совместим с последними изменениями Bedrock.boto3
и botocore3
. boto3
, совместимый с Bedrock, наконец-то стал общедоступным.