Este repositorio de muestra proporciona un código de muestra para utilizar el método RAG (generación aumentada de recuperación) que se transmite en Amazon Bedrock Titan Embeddings Generation 1 (G1) LLM (modelo de lenguaje grande), para crear incrustaciones de texto que se almacenarán en Amazon OpenSearch con soporte de motor vectorial para ayudar con la tarea de ingeniería rápida para obtener una respuesta más precisa de los LLM.
Después de cargar con éxito las incrustaciones en OpenSearch, comenzaremos a consultar nuestro LLM utilizando LangChain. Haremos preguntas y recuperaremos incrustaciones similares para obtener una respuesta más precisa.
Puede utilizar el parámetro --bedrock-model-id
para elegir sin problemas uno de los modelos de base disponibles en Amazon Bedrock, que de forma predeterminada es Anthropic Claude v2 y se puede reemplazar por cualquier otro modelo de cualquier otro proveedor de modelos para elegir su base de mejor rendimiento. modelo.
Antrópico:
python ./ask-bedrock-with-rag.py --ask "How will AI will change our every day life?"
python ./ask-bedrock-with-rag.py --bedrock-model-id anthropic.claude-v1 --ask "How will AI will change our every day life?"
python ./ask-bedrock-with-rag.py --bedrock-model-id anthropic.claude-instant-v1 --ask "How will AI will change our every day life?"
Laboratorios AI21:
python ./ask-bedrock-with-rag.py --bedrock-model-id ai21.j2-ultra-v1 --ask "How will AI will change our every day life?"
python ./ask-bedrock-with-rag.py --bedrock-model-id ai21.j2-mid-v1 --ask "How will AI will change our every day life?"
Esto fue probado en Python 3.11.4
Se recomienda trabajar en un entorno limpio, utilizar virtualenv
o cualquier otro administrador de entorno virtual.
pip install virtualenv
python -m virtualenv venv
source ./venv/bin/activate
Requisitos de instalación pip install -r requirements.txt
Instale terraform para crear el clúster OpenSearch
brew tap hashicorp/tap
brew install hashicorp/tap/terraform
Vaya a la página Acceso al modelo y habilite los modelos básicos que desee utilizar.
En el primer paso, lanzaremos un clúster de OpenSearch usando Terraform.
cd ./terraform
terraform init
terraform apply -auto-approve
Esta configuración de clúster es solo para propuestas de prueba, ya que su punto final es público para simplificar el uso de este código de muestra.
Ahora que tenemos un clúster OpenSearch en ejecución con soporte de motor vectorial, comenzaremos a cargar nuestros datos que nos ayudarán con la ingeniería rápida. Para este ejemplo, usaremos una fuente de datos de Hugging Face embedding-training-data gooaq_pairs, la descargaremos e invocaremos la incrustación de Titan para obtener una incrustación de texto, que almacenaremos en OpenSearch para los siguientes pasos.
python load-data-to-opensearch.py --recreate 1 --early-stop 1
Argumentos opcionales:
--recreate
para recrear el índice en OpenSearch--early-stop
para cargar solo 100 documentos incrustados en OpenSearch--index
para usar un índice diferente al predeterminado--region
en caso de que no estés usando el valor predeterminado us-east-1
Ahora que hemos incrustado texto en nuestro clúster OpenSearch, podemos comenzar a consultar el texto Titan de nuestro modelo LLM en Amazon Bedrock con RAG.
python ask-bedrock-with-rag.py --ask " your question here "
Argumentos opcionales:
--index
para usar un índice diferente al predeterminado--region
en caso de que no estés usando el valor predeterminado us-east-1--bedrock-model-id
para elegir modelos diferentes a Claude v2 de Anthropic
cd ./terraform
terraform destroy # When prompt for confirmation, type yes, and press enter.
Consulte CONTRIBUCIÓN para obtener más información.
Esta biblioteca tiene la licencia MIT-0. Ver el archivo de LICENCIA.