使用LangChain、Amazon Bedrock Titan文本和嵌入技术,以及OpenSearch向量引擎进行RAG
这个示例代码库提供了一个使用RAG(检索增强生成)方法的示例代码,该方法依赖于Amazon Bedrock的Titan Embeddings Generation 1 (G1)大型语言模型(LLM)来创建文本嵌入,这些嵌入将存储在支持向量引擎的Amazon OpenSearch中,以协助提示工程任务,从而获得LLM更准确的响应。
在成功将嵌入加载到OpenSearch后,我们将使用LangChain开始查询我们的LLM。我们将提出问题,并检索相似的嵌入以获得更准确的提示。
您可以使用--bedrock-model-id
参数,无缝选择Amazon Bedrock中可用的基础模型之一,默认为Anthropic Claude v2,也可以替换为任何其他模型提供商的任何其他模型,以选择您最佳性能的基础模型。
Anthropic:
- Claude v2
python ./ask-bedrock-with-rag.py --ask "AI将如何改变我们的日常生活?"
- Claude v1.3
python ./ask-bedrock-with-rag.py --bedrock-model-id anthropic.claude-v1 --ask "AI将如何改变我们的日常生活?"
- Claude Instance v1.2
python ./ask-bedrock-with-rag.py --bedrock-model-id anthropic.claude-instant-v1 --ask "AI将如何改变我们的日常生活?"
AI21 Labs:
- Jurassic-2 Ultra
python ./ask-bedrock-with-rag.py --bedrock-model-id ai21.j2-ultra-v1 --ask "AI将如何改变我们的日常生活?"
- Jurassic-2 Mid
python ./ask-bedrock-with-rag.py --bedrock-model-id ai21.j2-mid-v1 --ask "AI将如何改变我们的日常生活?"
前提条件
-
这在Python 3.11.4上进行了测试
-
建议在干净的环境中工作,使用
virtualenv
或任何其他虚拟环境管理器。pip install virtualenv python -m virtualenv venv source ./venv/bin/activate
-
安装依赖项
pip install -r requirements.txt
-
安装terraform以创建OpenSearch集群
brew tap hashicorp/tap brew install hashicorp/tap/terraform
-
转到模型访问页面并启用您想要使用的基础模型。
使用此示例代码的步骤
-
首先,我们将使用Terraform启动一个OpenSearch集群。
cd ./terraform terraform init terraform apply -auto-approve
此集群配置仅用于测试目的,因为其端点是公开的,以简化此示例代码的使用。
-
现在我们有了一个支持向量引擎的运行中的OpenSearch集群,我们将开始上传将帮助我们进行提示工程的数据。对于这个示例,我们将使用来自Hugging Face的embedding-training-data中的gooaq_pairs数据源,我们将下载它,并调用Titan嵌入来获取文本嵌入,然后将其存储在OpenSearch中以备后续步骤使用。
python load-data-to-opensearch.py --recreate 1 --early-stop 1
可选参数:
--recreate
用于在OpenSearch中重新创建索引--early-stop
只将100个嵌入文档加载到OpenSearch中--index
使用与默认rag不同的索引--region
如果您不使用默认的us-east-1
-
现在我们已经将嵌入文本存入了OpenSearch集群,我们可以开始使用RAG查询Amazon Bedrock中的Titan文本LLM模型
python ask-bedrock-with-rag.py --ask "在这里输入您的问题"
可选参数:
--index
使用与默认rag不同的索引--region
如果您不使用默认的us-east-1--bedrock-model-id
选择不同于Anthropic's Claude v2的模型
清理
cd ./terraform
terraform destroy # 当提示确认时,输入yes,然后按回车。
贡献
有关更多信息,请参阅CONTRIBUTING。
许可
这个库是根据MIT-0许可证授权的。请参阅LICENSE文件。