ที่เก็บนี้เป็นโฮสต์ตัวอย่างโค้ดที่รองรับ RE: InForce 2024 รหัสพูดคุยกับ ID เซสชัน DAP341 รหัสในที่เก็บนี้เป็นเรื่องง่ายที่จะปรับให้เหมาะสมสำหรับการอ่านในระหว่างเซสชันและไม่ได้มีไว้สำหรับใช้ในการตั้งค่าการผลิต
วัตถุประสงค์ของรหัสในพื้นที่เก็บข้อมูลนี้คือการแสดงให้เห็นถึงแกนกลางที่ใช้งานได้ของ chatbot Generation Augmented Generation (RAG) ในขณะที่เน้นการพิจารณาการป้องกันข้อมูลบางอย่างที่เกี่ยวข้องกับเวิร์กโหลด AI ทั่วไปโดยทั่วไป
หากคุณต้องการปรับใช้เคสใช้สไตล์ Rag Chatbot กับ AWS ในการผลิตให้พิจารณาหนึ่งในตัวเลือกต่อไปนี้:
ที่เก็บนี้มีชุดของ "สคริปต์" Python ที่สามารถดำเนินการเพื่อแสดงชุดของความคิด สคริปต์มีหมายเลขเพราะเมื่อดำเนินการตามลำดับพวกเขาบอกเล่าเรื่องราวเกี่ยวกับวิธีการทำงานของ RAG chatbot และวิธีการป้องกันข้อมูลภายในเวิร์กโหลดที่ใช้ Genai อย่างไรก็ตามสคริปต์ทั้งหมดเป็นแบบสแตนด์อโลนและ idempotent และไม่จำเป็นต้องเรียกใช้ตามลำดับ
สคริปต์ Python ที่ให้ไว้ที่นี่จำเป็นต้องได้รับการแก้ไขก่อนที่จะทำงาน สคริปต์จะถูกเก็บไว้ที่นี่ตามที่แสดงในการนำเสนอ Inforce เพื่อความสอดคล้อง อินสแตนซ์ที่คุณต้องอัปเดตสคริปต์จะมีคำอธิบายประกอบด้วย #UPDATE_TO_RUN_YOURSELF
ทรัพยากร AWS ที่จำเป็นในการเรียกใช้สคริปต์ตัวอย่าง Python เช่นดัชนี Amazon Kendra ข้อมูลตัวอย่าง ฯลฯ สามารถ ให้บริการโดยผู้ใช้ของที่เก็บนี้ แต่ด้านล่างเป็นคำแนะนำสำหรับวิธี การ สร้างทรัพยากรเหล่านี้
ทรัพยากร AWS หลักที่จำเป็นต้องสร้างและอ้างอิงก่อนที่สคริปต์ Python จะทำงานคือดัชนี Amazon Kendra และแหล่งข้อมูล Kendra ที่มาพร้อมกับข้อมูลเกี่ยวกับถัง Amazon S3 โปรดทราบว่าดัชนี Amazon Kendra มีค่าใช้จ่ายที่ไม่มีสิทธิ์และควรใช้ความระมัดระวังเพื่อทำความเข้าใจค่าใช้จ่ายเหล่านั้นก่อนที่คุณจะปรับใช้โซลูชันนี้
รหัสที่ให้ไว้ในที่เก็บนี้มีวัตถุประสงค์เพื่อเสริมการปรับใช้ของตัวสร้างแอปพลิเคชัน AI Generative บน AWS หากคุณปรับใช้ตัวสร้างแอปพลิเคชัน AI Generative บน AWS และดำเนินการปรับใช้การปรับใช้กรณี "ข้อความ" ด้วยตัวเลือก "RAG" ที่เปิดใช้งานดัชนี Kendra สามารถสร้างขึ้นได้ตามที่แสดงในส่วนต่อไปนี้:
ปรับใช้ตัวสร้างแอปพลิเคชัน AI Generative บนโซลูชัน AWS ตามคู่มือการปรับใช้
เนื่องจากเกี่ยวข้องกับการปกป้องข้อมูลให้พิจารณาการปรับใช้โซลูชันด้วยการเปิดใช้งานตัวเลือก VPC ซึ่งจะช่วยลดปริมาณการใช้งานที่ไหลผ่านอินเทอร์เน็ตสาธารณะโดยใช้ประโยชน์จากจุดสิ้นสุดของ VPC
หลังจากปรับใช้แดชบอร์ดการปรับใช้แล้วคุณจะสามารถปรับใช้เคสการใช้งานได้
เมื่อปรับใช้เคสใช้งานให้เลือกตัวเลือก text ในส่วน Select knowledge base เลือก yes สำหรับตัวเลือก RAG เลือก Kendra เป็นฐานความรู้และหากคุณยังไม่มีดัชนี Kendra ให้เลือก no ถึง "คุณมีดัชนี Kendra ที่มีอยู่หรือไม่" เพื่อให้มีสิ่งหนึ่งที่สร้างขึ้นสำหรับคุณ ค่าเริ่มต้นอื่น ๆ ทั้งหมดนั้นใช้ได้ แต่ปรับถ้า/ตามความจำเป็นเพื่อให้เหมาะกับความต้องการของคุณ
เมื่อมีการปรับใช้แอปพลิเคชันแอปพลิเคชัน AI ของคุณแล้วคุณจะมีดัชนี Amazon Kendra ตอนนี้คุณต้องเพิ่มแหล่งข้อมูล Kendra ลงในดัชนีนั้น ก่อนอื่นให้สร้างหรือใช้ถัง Amazon S3 ที่มีอยู่เพื่อจัดเก็บข้อมูล อัปโหลดเนื้อหาของไดเรกทอรี data เช่นเดียวกับ src/kendra-acl.json ในที่เก็บนี้ไปยังถัง S3 นั้นเพื่อให้โครงสร้างผลลัพธ์เป็นแบบนี้:
engineering/rootrunner3k-techspecs.txt
wiki/ecorobopotato.txt
kendra-acl.json
นำทางไปยังดัชนี Amazon Kendra ของคุณในคอนโซลการจัดการ AWS และเลือกตัวเลือก Add Data Sources เลือกตัวเลือก Amazon S3 connector ตั้งชื่อแหล่งข้อมูล สร้างบทบาท IAM หรือใช้บทบาทที่มีอยู่ตามที่ต้องการ ใน Configure sync settings ให้ป้อนที่ตั้งของถัง S3 ของคุณตั้งค่าไฟล์ kendra-acl.json ในการตั้ง Access control list configuration file location กำหนดค่าขยาย Additional configuration และเพิ่ม engineering และ marketing เป็นคำนำหน้าที่จะจัดทำดัชนี ค่าเริ่มต้นอื่น ๆ ทั้งหมดเพียงพอที่จะสร้างและปรับใช้แหล่งข้อมูล Kendra ของคุณ เมื่อสร้างแหล่งข้อมูลแล้วคุณต้องเริ่มต้นการดำเนินการ sync แหล่งข้อมูลอย่างน้อยหนึ่งครั้งและรอให้การซิงค์นั้นเสร็จสมบูรณ์ก่อนที่จะเรียกใช้สคริปต์ Python ใด ๆ
ก่อนที่คุณจะโทรหารุ่นอเมซอนได้คุณจะต้องเปิดใช้งานการเข้าถึงแบบจำลอง พื้นที่เก็บข้อมูลนี้ใช้ Claude 3 Sonnet ดังนั้นอย่างน้อยรุ่นนี้จะต้องเปิดใช้งาน
ในการเรียกใช้ไฟล์ Python CloudWatch โดยเฉพาะคุณต้องเปิดใช้งานการบันทึกการเรียกร้องการเรียกร้องของ Amazon Bedrock โดยเฉพาะกับปลายทางของ Logs Amazon CloudWatch
เป็นส่วนหนึ่งของกระบวนการนี้คุณจะสร้างกลุ่มบันทึก CloudWatch ซึ่งจะต้องได้รับการอัปเดตในสคริปต์ Python ที่มาพร้อมกัน
ในการเรียกใช้สคริปต์ Python ที่เกี่ยวข้องกับ Bedrock Guardrails คุณต้องสร้าง Bedrock Guardrail ในการทำเช่นนั้นโดยใช้คอนโซลการจัดการ AWS นำทางไปยังบริการ BETROCK ของ Amazon และเลือกส่วน Guardrails เลือก Create guardrail ตั้งชื่อและตั้งค่าด้วยค่าเริ่มต้นหรือตัวเลือกที่คุณต้องการ อย่างไรก็ตามตรวจสอบให้แน่ใจว่าในส่วน Add sensitive information filters คุณเพิ่มประเภท Address PII และเลือก Mask เป็นพฤติกรรมของรั้ว สิ่งนี้ทำให้มั่นใจได้ว่ารั้วของคุณจะทำซ้ำพฤติกรรมที่มีวัตถุประสงค์เพื่อแสดงให้เห็นในสคริปต์ Python ในโครงการนี้
ไฟล์ Markdown รูปภาพและไฟล์รหัส Python ในไดเรกทอรี src มีวัตถุประสงค์เพื่อดูและดำเนินการในลำดับที่ระบุโดยรูปแบบการกำหนดหมายเลขของพวกเขา ดังนี้เป็นคำอธิบายสำหรับแต่ละไฟล์เพื่อช่วยแนะนำผู้อ่านผ่านความตั้งใจของงานนำเสนอที่มาพร้อมกับตัวอย่างรหัสเหล่านี้
ให้ประเด็นหลักของตัวอย่างโค้ดเหล่านี้ซึ่งแสดงให้คุณเห็นรหัส Python ที่ง่ายมากซึ่งสามารถอ่านได้และแสดงให้เห็นว่า RAG ทำงานอย่างไรในระดับพื้นฐานในขณะเดียวกันก็เน้นการพิจารณาการป้องกันข้อมูลสำหรับเวิร์กโหลด Genai ในวงกว้างมากขึ้น
รูปภาพที่ใช้ในการแนะนำผลิตภัณฑ์และองค์กรที่เราใช้ข้อมูล ข้อมูลเป็นเรื่องไร้สาระโดยเจตนาเพื่อให้ LLMS จะไม่ได้รับข้อมูลการฝึกอบรมใด ๆ ที่เกี่ยวข้องกับผลิตภัณฑ์หรือองค์กรที่คิดนี้โดยไม่ได้ตั้งใจ อย่างไรก็ตามเนื่องจากพื้นที่เก็บข้อมูลที่มาพร้อมกับนี้เป็นโอเพ่นซอร์สจึงเป็นไปได้ที่ LLM อาจใช้ที่เก็บนี้เป็นแหล่งข้อมูลการฝึกอบรมซึ่งในที่สุดอาจทำลายสมมติฐานนี้!
เพียงแสดงเนื้อหาของถัง Amazon S3 ที่เราตั้งค่าซึ่งมีข้อมูลต้นฉบับของเรา นอกจากนี้ยังเน้นประเภทการเข้ารหัสสำหรับข้อมูลนี้ใน S3 เพื่อเน้นความสำคัญของการเข้ารหัสข้อมูลที่เหลือ
พิมพ์ข้อมูลพื้นฐานบางอย่างเกี่ยวกับดัชนี Amazon Kendra ของเราเพื่อแนะนำแนวคิดของ Kendra และวิธีการค้นหาความหมายกับแหล่งข้อมูลของเรา
แสดงให้เห็นถึงการเรียกใช้ API retrieve อย่างง่ายกับดัชนี Kendra ของเราซึ่งดึงบริบทตามคำถามที่เราถาม
โทรหาอเมซอนบดและถามคำถามที่ไม่เกี่ยวข้องกับข้อมูลที่เป็นกรรมสิทธิ์ของเรา สิ่งนี้มีวัตถุประสงค์เพื่อแสดงให้เห็นว่า LLM สามารถตอบคำถามมากมายเกี่ยวกับสิ่งต่าง ๆ ที่เปิดเผยต่อสาธารณชนได้อย่างไรเนื่องจาก LLM มักได้รับการฝึกฝนจากข้อมูลจำนวนมากที่ถูกคัดลอกมาจากอินเทอร์เน็ตเปิด
โทรหาข้อเท็จจริงและถามคำถามเกี่ยวกับข้อมูลที่เป็นกรรมสิทธิ์ของเรา แสดงให้เห็นว่า LLM ไม่สามารถตอบคำถามเกี่ยวกับข้อมูลที่เป็นกรรมสิทธิ์ได้อย่างไรและไม่ได้เป็นส่วนหนึ่งของชุดข้อมูลการฝึกอบรม
การโทรครั้งแรก Kendra เพื่อดึงบริบทที่เกี่ยวข้องจากข้อมูลที่เป็นกรรมสิทธิ์ของเราจากนั้นใช้บริบทนั้นเมื่อเรียก LLM ในอเมซอน รูปแบบนี้เรียกว่า Generation Augmented Retrieval หรือ Rag
เพิ่มในรายการควบคุมการเข้าถึงในการโทรไปยัง Amazon Kendra เนื่องจากกลุ่ม "การตลาด" ของเราไม่ได้รับอนุญาตให้เข้าถึงเอกสารข้อกำหนดทางเทคนิคจาก Kendra คำตอบของเราจึงไม่รวมถึงรายละเอียดเกี่ยวกับเนื้อหาที่การตลาดไม่ได้รับอนุญาตให้ดู สิ่งนี้แสดงให้เห็นว่าเราสามารถบรรลุการอนุญาตระดับเอกสารได้อย่างไรเมื่อใช้วิธีการใช้ RAG เป็นที่น่าสังเกตว่าหากคุณใช้ข้อมูลที่เป็นกรรมสิทธิ์ของคุณเพื่อทำการปรับแต่งหรือการฝึกอบรมล่วงหน้าอย่างต่อเนื่องเพื่อปรับแต่ง LLM คุณจะสูญเสียความสามารถในการได้รับอนุญาตอย่างละเอียดในระดับเอกสาร ผู้ใช้ของคุณสามารถเข้าถึงโมเดลที่กำหนดเองหรือไม่
ดำเนินการค้นหา RAG ที่มีที่อยู่เฉพาะ แต่บางทีเราไม่ต้องการที่อยู่หรือเนื้อหา PII หรือเนื้อหาที่ละเอียดอ่อน/อันตรายอื่น ๆ ที่จะรวมอยู่ใน Chatbot ของเรา ...
เพียงแค่แสดงคุณลักษณะบางอย่างของเราของ bedrock bedrock ของอเมซอนที่ถูกกำหนดไว้ซึ่งเราจะใช้ในขั้นตอนต่อไปนี้ โดยเฉพาะเราจะเห็นว่า Guardrail ของเรา redacts ประเภทข้อมูลที่อยู่
ดำเนินการโทรตามผ้าขี้ริ้วเดียวกันกับ 09_rag_address.py แต่เพิ่มลงในข้อเท็จจริงที่เป็นส่วนหนึ่งของการโทรไปที่ข้อเท็จจริง สิ่งนี้จะทำให้ข้อมูลที่อยู่ที่เฉพาะเจาะจง PII จากการตอบกลับ
แสดงรายการ 3 อินสแตนซ์เมฆล่าสุดของการเรียกใช้ข้อเท็จจริง นี่เป็นการแสดงให้เห็นว่า CloudTrail สามารถใช้เพื่อตรวจสอบการใช้งานของบริการอเมซอนได้อย่างไร บริการ AWS อื่น ๆ ยังสร้างเหตุการณ์ CloudTrail และข้อมูลนี้สามารถใช้ในการตรวจสอบและปกป้องทรัพยากร AWS ของคุณ
แสดงรายการบันทึกการเรียกใช้แบบจำลอง CloudWatch ล่าสุด 3 รายการ สิ่งนี้แสดงให้เห็นว่าข้อมูลของคุณสามารถรวมอยู่ในบันทึกการเรียกร้องของ Model Watchwatch ได้อย่างไร ดังนั้นหากคุณเปิดใช้งานบันทึกการเรียกใช้แบบจำลองคุณต้องปกป้องพวกเขาด้วยการดูแลในระดับเดียวกับที่คุณปกป้องแหล่งข้อมูลเอง
หลังจากเรียกใช้สคริปต์ Python คุณจะได้รับคำแนะนำผ่านตัวอย่างบางส่วนที่แสดงให้เห็นถึงการพิจารณาการป้องกันข้อมูลสำหรับปริมาณงาน AI ที่เกิดขึ้น กุญแจสำคัญบางอย่างคือ:
พื้นฐานการปกป้องข้อมูลยังคงใช้
Generative AI แนะนำข้อควรพิจารณาใหม่ ๆ
ดูข้อมูลเพิ่มเติม
ห้องสมุดนี้ได้รับใบอนุญาตภายใต้ใบอนุญาต MIT-0 ดูไฟล์ใบอนุญาต