พื้นที่เก็บข้อมูลนี้มีตัวอย่างเชิงปฏิบัติเกี่ยวกับวิธีการสร้างแอปถามตอบที่สามารถตอบคำถามที่เกี่ยวข้องกับเอกสารส่วนตัวของคุณโดยใช้บริการ GenAI AWS
ก่อนหน้านี้ ฉันสร้างแอปถามตอบโดยใช้ Azure OpenAI GPT-4 และ Pinecone (คุณสามารถดูได้ที่นี่)
ในพื้นที่เก็บข้อมูลนี้ ฉันจะสร้างแอปเดียวกันทุกประการ แต่ใช้บริการของ AWS เท่านั้น (+ Streamlit สำหรับ UI)
เพื่อให้แม่นยำยิ่งขึ้น แอปนี้มีสถาปัตยกรรมดังต่อไปนี้:
และใช้เทคโนโลยีดังต่อไปนี้:
พื้นที่เก็บข้อมูลนี้มีแอปต่อไปนี้:
Streamlit
ซึ่งช่วยให้เราสามารถสืบค้นข้อมูลที่จัดเก็บไว้ใน AWS Kendra โดยใช้หนึ่งในโมเดล AWS Bedrock LLM ที่พร้อมใช้งานเอกสารส่วนตัวถูกจัดเก็บไว้ในบัคเก็ต s3
Kendra Index ได้รับการกำหนดค่าให้ใช้ตัวเชื่อมต่อ s3 Index จะตรวจสอบบัคเก็ต 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 ก็เผยแพร่สู่สาธารณะแล้ว