此儲存庫包含一個實際範例,介紹如何使用 GenAI AWS 服務建置能夠回答與您的私人文件相關的問題的問答應用程式。
之前,我使用 Azure OpenAI GPT-4 和 Pinecone 建立了一個問答應用程式(您可以在此處找到它) 。
在此存儲庫中,我將建立完全相同的應用程序,但僅使用 AWS 服務(+ UI 的 Streamlit)。
更準確地說,該應用程式具有以下架構:
它使用以下技術:
該存儲庫包含以下應用程式:
Streamlit
應用程序,允許我們使用可用的 AWS Bedrock LLM 模型之一查詢儲存在 AWS Kendra 中的資料。私人文件儲存在 s3 儲存桶中。
Kendra Index 配置為使用 s3 連接器。 Index 每 N 分鐘檢查 s3 儲存桶中是否有新內容。如果在儲存桶中發現新內容,它會自動解析並儲存到 Kendra 資料庫中。
當用戶透過Streamlit
應用程式執行查詢時,該應用程式將執行以下步驟:
如果您不想使用Streamlit
應用程序,而是更喜歡逐步執行設定 RAG 模式的說明,那麼您有一個 Jupyter 筆記本 ( /notebooks/rag-with-langchain.ipynb
) 可以準確地允許您執行此操作。
Streamlit
應用程式大量使用LangChain
函式庫來實作 RAG 模式。如果您不想使用任何第三方函式庫並僅使用boto3
函式庫設定 RAG 模式,您可以使用第二個 Jupyter 筆記本 ( /notebooks/rag-with-only-boto3.ipynb
) 來執行此操作。
在/infra
資料夾中,您將找到一系列 Terraform 文件,這些文件將建立應用程式正常運作所需的所有 AWS 服務。
這些 Terraform 檔案將建立以下資源:
在嘗試運行該應用程式之前,您應該了解一些先決條件。
在「模型存取」部分,您可以概述您可以訪問哪些法學碩士,哪些不能訪問。
要充分使用此應用程序,您必須有權利存取每個 AWS Bedrock 第三方 LLM 。
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
以使其與最新的基岩變更相容。boto3
和botocore3
輪檔案。與 Bedrock 相容的boto3
終於公開了。