ขับเคลื่อนการค้นหาประสาทด้วยตัวเชื่อมต่อ AI/ML ใน Amazon OpenSearch Service | อเมซอนเว็บเซอร์วิส

ขับเคลื่อนการค้นหาประสาทด้วยตัวเชื่อมต่อ AI/ML ใน Amazon OpenSearch Service | อเมซอนเว็บเซอร์วิส

โหนดต้นทาง: 3068091

ด้วยการเปิดตัวฟีเจอร์การค้นหาแบบนิวรัลสำหรับ บริการ Amazon OpenSearch ใน OpenSearch 2.9 ขณะนี้การผสานรวมกับโมเดล AI/ML เพื่อขับเคลื่อนการค้นหาความหมายและกรณีการใช้งานอื่นๆ เป็นเรื่องง่าย OpenSearch Service รองรับทั้งการค้นหาคำศัพท์และเวกเตอร์นับตั้งแต่เปิดตัวฟีเจอร์ k-nearest Neighbor (k-NN) ในปี 2020 อย่างไรก็ตาม การกำหนดค่าการค้นหาเชิงความหมายจำเป็นต้องสร้างเฟรมเวิร์กเพื่อรวมโมเดลการเรียนรู้ของเครื่อง (ML) เพื่อนำเข้าและค้นหา คุณลักษณะการค้นหาแบบนิวรัลช่วยอำนวยความสะดวกในการแปลงข้อความเป็นเวกเตอร์ในระหว่างการนำเข้าและการค้นหา เมื่อคุณใช้การสืบค้นแบบนิวรัลระหว่างการค้นหา การสืบค้นจะถูกแปลเป็นการฝังเวกเตอร์ และใช้ k-NN เพื่อส่งคืนการฝังเวกเตอร์ที่ใกล้ที่สุดจากคลังข้อมูล

หากต้องการใช้การค้นหาแบบนิวรัล คุณต้องตั้งค่าโมเดล ML เราขอแนะนำให้กำหนดค่าตัวเชื่อมต่อ AI/ML กับบริการ AWS AI และ ML (เช่น อเมซอน SageMaker or อเมซอน เบดร็อค) หรือทางเลือกอื่นของบุคคลที่สาม ตั้งแต่เวอร์ชัน 2.9 บน OpenSearch Service ตัวเชื่อมต่อ AI/ML จะผสานรวมกับการค้นหาแบบนิวรัล เพื่อลดความซับซ้อนและดำเนินการการแปลคลังข้อมูลและการสืบค้นของคุณเป็นการฝังเวกเตอร์ ดังนั้นจึงช่วยขจัดความซับซ้อนของการไฮเดรชั่นและการค้นหาเวกเตอร์ได้มาก

ในโพสต์นี้ เราจะสาธิตวิธีกำหนดค่าตัวเชื่อมต่อ AI/ML ให้กับโมเดลภายนอกผ่านคอนโซล OpenSearch Service

ภาพรวมโซลูชัน

โดยเฉพาะ โพสต์นี้จะแนะนำคุณตลอดขั้นตอนการเชื่อมต่อกับโมเดลใน SageMaker จากนั้นเราจะแนะนำคุณตลอดการใช้ตัวเชื่อมต่อเพื่อกำหนดค่าการค้นหาเชิงความหมายบน OpenSearch Service เป็นตัวอย่างกรณีการใช้งานที่รองรับผ่านการเชื่อมต่อกับโมเดล ML ขณะนี้การผสานรวม Amazon Bedrock และ SageMaker ได้รับการสนับสนุนบน UI คอนโซล OpenSearch Service และรายการการผสานรวมจากบุคคลที่หนึ่งและบุคคลที่สามที่รองรับ UI จะยังคงเพิ่มขึ้นต่อไป

สำหรับโมเดลใดๆ ที่ไม่รองรับผ่าน UI คุณสามารถตั้งค่าโดยใช้ API ที่มีอยู่และ พิมพ์เขียว ML. สำหรับข้อมูลเพิ่มเติม โปรดดูที่ ข้อมูลเบื้องต้นเกี่ยวกับโมเดล OpenSearch. คุณสามารถค้นหาพิมพ์เขียวสำหรับตัวเชื่อมต่อแต่ละตัวได้ใน พื้นที่เก็บข้อมูล ML Commons GitHub.

เบื้องต้น

ก่อนที่จะเชื่อมต่อโมเดลผ่านคอนโซล OpenSearch Service ให้สร้างโดเมน OpenSearch Service แผนที่ AWS Identity และการจัดการการเข้าถึง (IAM) บทบาทตามชื่อ LambdaInvokeOpenSearchMLCommonsRole ในฐานะบทบาทแบ็กเอนด์ใน ml_full_access บทบาทโดยใช้ปลั๊กอินความปลอดภัยบน OpenSearch Dashboards ดังที่แสดงในวิดีโอต่อไปนี้ เวิร์กโฟลว์การรวม OpenSearch Service ได้รับการกรอกไว้ล่วงหน้าเพื่อใช้ LambdaInvokeOpenSearchMLCommonsRole บทบาท IAM ตามค่าเริ่มต้นเพื่อสร้างตัวเชื่อมต่อระหว่างโดเมน OpenSearch Service และโมเดลที่ใช้งานบน SageMaker หากคุณใช้บทบาท IAM ที่กำหนดเองในการรวมคอนโซล OpenSearch Service ตรวจสอบให้แน่ใจว่าบทบาทที่กำหนดเองได้รับการแมปเป็นบทบาทแบ็กเอนด์ด้วย ml_full_access สิทธิ์ก่อนที่จะปรับใช้เทมเพลต

ปรับใช้โมเดลโดยใช้ AWS CloudFormation

วิดีโอต่อไปนี้สาธิตขั้นตอนในการใช้คอนโซล OpenSearch Service เพื่อปรับใช้โมเดลภายในไม่กี่นาทีบน Amazon SageMaker และสร้าง ID โมเดลผ่านตัวเชื่อมต่อ AI ขั้นตอนแรกคือการเลือก integrations ในบานหน้าต่างนำทางบนคอนโซล OpenSearch Service AWS ซึ่งกำหนดเส้นทางไปยังรายการการผสานรวมที่มีอยู่ การผสานรวมได้รับการตั้งค่าผ่าน UI ซึ่งจะแจ้งให้คุณป้อนข้อมูลที่จำเป็น

ในการตั้งค่าการรวม คุณจะต้องระบุตำแหน่งข้อมูลโดเมน OpenSearch Service และระบุชื่อโมเดลเพื่อระบุการเชื่อมต่อโมเดลโดยไม่ซ้ำกัน ตามค่าเริ่มต้น เทมเพลตจะปรับใช้โมเดลตัวแปลงประโยค Hugging Face djl://ai.djl.huggingface.pytorch/sentence-transformers/all-MiniLM-L6-v2.

เมื่อคุณเลือก สร้างกองคุณถูกส่งไปยัง การก่อตัวของ AWS Cloud คอนโซล เทมเพลต CloudFormation ปรับใช้สถาปัตยกรรมที่มีรายละเอียดในไดอะแกรมต่อไปนี้

สแต็ก CloudFormation สร้างไฟล์ AWS แลมบ์ดา แอปพลิเคชันที่ปรับใช้โมเดลจาก บริการจัดเก็บข้อมูลอย่างง่ายของ Amazon (Amazon S3) สร้างตัวเชื่อมต่อ และสร้าง ID โมเดลในเอาต์พุต จากนั้นคุณสามารถใช้รหัสโมเดลนี้เพื่อสร้างดัชนีความหมายได้

หากโมเดล all-MiniLM-L6-v2 เริ่มต้นไม่ตอบสนองวัตถุประสงค์ของคุณ คุณสามารถปรับใช้โมเดลการฝังข้อความใดๆ ที่คุณเลือกบนโฮสต์โมเดลที่เลือก (SageMaker หรือ Amazon Bedrock) โดยการจัดเตรียมอาร์ติแฟกต์โมเดลของคุณเป็นอ็อบเจ็กต์ S3 ที่สามารถเข้าถึงได้ หรือคุณสามารถเลือกรายการใดรายการหนึ่งต่อไปนี้ แบบจำลองภาษาที่ได้รับการฝึกอบรมล่วงหน้า และปรับใช้กับ SageMaker หากต้องการคำแนะนำในการตั้งค่าตำแหน่งข้อมูลและโมเดลของคุณ โปรดดูที่ อิมเมจของ Amazon SageMaker ที่มีจำหน่าย.

SageMaker เป็นบริการที่มีการจัดการเต็มรูปแบบซึ่งรวบรวมชุดเครื่องมือที่หลากหลายเพื่อเปิดใช้งาน ML ประสิทธิภาพสูงและราคาประหยัดสำหรับทุกกรณีการใช้งาน โดยมอบคุณประโยชน์ที่สำคัญ เช่น การตรวจสอบโมเดล โฮสติ้งแบบไร้เซิร์ฟเวอร์ และระบบอัตโนมัติของเวิร์กโฟลว์สำหรับการฝึกอบรมและการปรับใช้อย่างต่อเนื่อง SageMaker ช่วยให้คุณสามารถโฮสต์และจัดการวงจรชีวิตของโมเดลการฝังข้อความ และใช้โมเดลเหล่านี้เพื่อขับเคลื่อนคำค้นหาเชิงความหมายใน OpenSearch Service เมื่อเชื่อมต่อแล้ว SageMaker จะโฮสต์โมเดลของคุณ และใช้ OpenSearch Service เพื่อสืบค้นตามผลการอนุมานจาก SageMaker

ดูโมเดลที่ปรับใช้ผ่าน OpenSearch Dashboards

หากต้องการตรวจสอบว่าเทมเพลต CloudFormation ปรับใช้โมเดลบนโดเมน OpenSearch Service และรับ ID โมเดลได้สำเร็จ คุณสามารถใช้ ML Commons REST GET API ผ่าน OpenSearch Dashboards Dev Tools

ขณะนี้ GET _plugins REST API มี API เพิ่มเติมเพื่อดูสถานะของโมเดลด้วย คำสั่งต่อไปนี้ช่วยให้คุณเห็นสถานะของโมเดลระยะไกล:

GET _plugins/_ml/models/<modelid>

ดังที่แสดงในภาพหน้าจอต่อไปนี้ DEPLOYED สถานะในการตอบกลับบ่งชี้ว่าโมเดลถูกปรับใช้บนคลัสเตอร์ OpenSearch Service เรียบร้อยแล้ว

หรือคุณสามารถดูโมเดลที่ใช้งานบนโดเมน OpenSearch Service ของคุณโดยใช้ เครื่องเรียนรู้ หน้าแดชบอร์ด OpenSearch

หน้านี้แสดงรายการข้อมูลโมเดลและสถานะของโมเดลทั้งหมดที่ปรับใช้

สร้างไปป์ไลน์ประสาทโดยใช้รหัสโมเดล

เมื่อสถานะของโมเดลแสดงเป็นอย่างใดอย่างหนึ่ง DEPLOYED ในเครื่องมือ Dev หรือสีเขียวและ การตอบสนอง ใน OpenSearch Dashboards คุณสามารถใช้รหัสโมเดลเพื่อสร้างไปป์ไลน์การนำเข้าประสาทของคุณได้ ไปป์ไลน์การนำเข้าต่อไปนี้ทำงานในเครื่องมือนักพัฒนา OpenSearch Dashboards Dev ของโดเมนของคุณ ตรวจสอบให้แน่ใจว่าคุณแทนที่รหัสโมเดลด้วยรหัสเฉพาะที่สร้างขึ้นสำหรับโมเดลที่ใช้งานบนโดเมนของคุณ

PUT _ingest/pipeline/neural-pipeline
{
  "description": "Semantic Search for retail product catalog ",
  "processors" : [
    {
      "text_embedding": {
        "model_id": "sfG4zosBIsICJFsINo3X",
        "field_map": {
           "description": "desc_v",
           "name": "name_v"
        }
      }
    }
  ]
}

สร้างดัชนีการค้นหาความหมายโดยใช้ไปป์ไลน์ประสาทเป็นไปป์ไลน์เริ่มต้น

ตอนนี้คุณสามารถกำหนดการแมปดัชนีของคุณด้วยไปป์ไลน์เริ่มต้นที่กำหนดค่าให้ใช้ไปป์ไลน์ประสาทใหม่ที่คุณสร้างในขั้นตอนก่อนหน้า ตรวจสอบให้แน่ใจว่าฟิลด์เวกเตอร์ได้รับการประกาศเป็น knn_vector และมิติข้อมูลมีความเหมาะสมกับโมเดลที่ใช้งานบน SageMaker หากคุณคงการกำหนดค่าเริ่มต้นเพื่อปรับใช้โมเดล all-MiniLM-L6-v2 บน SageMaker ให้คงการตั้งค่าต่อไปนี้ตามเดิม และเรียกใช้คำสั่งในเครื่องมือ Dev

PUT semantic_demostore
{
  "settings": {
    "index.knn": true,  
    "default_pipeline": "neural-pipeline",
    "number_of_shards": 1,
    "number_of_replicas": 1
  },
  "mappings": {
    "properties": {
      "desc_v": {
        "type": "knn_vector",
        "dimension": 384,
        "method": {
          "name": "hnsw",
          "engine": "nmslib",
          "space_type": "cosinesimil"
        }
      },
      "name_v": {
        "type": "knn_vector",
        "dimension": 384,
        "method": {
          "name": "hnsw",
          "engine": "nmslib",
          "space_type": "cosinesimil"
        }
      },
      "description": {
        "type": "text" 
      },
      "name": {
        "type": "text" 
      } 
    }
  }
}

นำเข้าเอกสารตัวอย่างเพื่อสร้างเวกเตอร์

สำหรับการสาธิตนี้ คุณสามารถนำเข้าไฟล์ ตัวอย่างแค็ตตาล็อกผลิตภัณฑ์สาธิตร้านค้าปลีก ไปที่ใหม่ semantic_demostore ดัชนี. แทนที่ชื่อผู้ใช้ รหัสผ่าน และตำแหน่งข้อมูลโดเมนด้วยข้อมูลโดเมนของคุณ และนำเข้าข้อมูลดิบลงใน OpenSearch Service:

curl -XPOST -u 'username:password' 'https://domain-end-point/_bulk' --data-binary @semantic_demostore.json -H 'Content-Type: application/json'

ตรวจสอบดัชนี semantic_demostore ใหม่

เมื่อคุณได้นำเข้าชุดข้อมูลของคุณไปยังโดเมน OpenSearch Service แล้ว ให้ตรวจสอบว่าเวกเตอร์ที่จำเป็นถูกสร้างขึ้นหรือไม่โดยใช้การค้นหาแบบง่ายๆ เพื่อดึงข้อมูลทุกช่อง ตรวจสอบว่าฟิลด์ที่กำหนดเป็น knn_vectors มีเวกเตอร์ที่ต้องการ

เปรียบเทียบการค้นหาคำศัพท์และการค้นหาความหมายที่ขับเคลื่อนโดยการค้นหาแบบนิวรัลโดยใช้เครื่องมือเปรียบเทียบผลลัพธ์การค้นหา

พื้นที่ เปรียบเทียบเครื่องมือผลการค้นหา บน OpenSearch Dashboards พร้อมใช้งานสำหรับปริมาณงานการผลิต คุณสามารถนำทางไปยัง เปรียบเทียบผลการค้นหา หน้าและเปรียบเทียบผลลัพธ์การค้นหาระหว่างการค้นหาคำศัพท์และการค้นหาแบบประสาทที่กำหนดค่าให้ใช้รหัสโมเดลที่สร้างขึ้นก่อนหน้านี้

ทำความสะอาด

คุณสามารถลบทรัพยากรที่คุณสร้างได้โดยทำตามคำแนะนำในโพสต์นี้โดยการลบสแตก CloudFormation การดำเนินการนี้จะลบทรัพยากร Lambda และบัคเก็ต S3 ที่มีโมเดลที่ใช้งานกับ SageMaker ทำตามขั้นตอนต่อไปนี้:

  1. บนคอนโซล AWS CloudFormation ให้ไปที่หน้ารายละเอียดสแต็กของคุณ
  2. Choose ลบ.

  1. Choose ลบ เพื่อยืนยัน.

คุณสามารถตรวจสอบความคืบหน้าการลบสแต็กได้บนคอนโซล AWS CloudFormation

โปรดทราบว่าการลบสแตก CloudFormation จะไม่ลบโมเดลที่ใช้งานบนโดเมน SageMaker และตัวเชื่อมต่อ AI/ML ที่สร้างขึ้น เนื่องจากโมเดลเหล่านี้และตัวเชื่อมต่อสามารถเชื่อมโยงกับหลายดัชนีภายในโดเมนได้ หากต้องการลบโมเดลและตัวเชื่อมต่อที่เกี่ยวข้องโดยเฉพาะ ให้ใช้ API โมเดลตามที่แสดงในภาพหน้าจอต่อไปนี้

ประการแรก undeploy โมเดลจากหน่วยความจำโดเมน OpenSearch Service:

POST /_plugins/_ml/models/<model_id>/_undeploy

จากนั้นคุณสามารถลบโมเดลออกจากดัชนีโมเดลได้:

DELETE /_plugins/_ml/models/<model_id>

สุดท้าย ลบตัวเชื่อมต่อออกจากดัชนีตัวเชื่อมต่อ:

DELETE /_plugins/_ml/connectors/<connector_id>

สรุป

ในโพสต์นี้ คุณได้เรียนรู้วิธีปรับใช้โมเดลใน SageMaker สร้างตัวเชื่อมต่อ AI/ML โดยใช้คอนโซล OpenSearch Service และสร้างดัชนีการค้นหาแบบนิวรัล ความสามารถในการกำหนดค่าตัวเชื่อมต่อ AI/ML ใน OpenSearch Service ช่วยลดความยุ่งยากของกระบวนการเวคเตอร์ไฮเดรชั่นโดยทำการผสานรวมกับโมเดลภายนอกแบบเนทิฟ คุณสามารถสร้างดัชนีการค้นหานิวรอลได้ภายในไม่กี่นาทีโดยใช้ไปป์ไลน์การนำเข้าประสาทและการค้นหานิวรัลที่ใช้รหัสโมเดลเพื่อสร้างเวกเตอร์ที่ฝังทันทีระหว่างการนำเข้าและการค้นหา

หากต้องการเรียนรู้เพิ่มเติมเกี่ยวกับตัวเชื่อมต่อ AI/ML โปรดดูที่ ตัวเชื่อมต่อ Amazon OpenSearch Service AI สำหรับบริการ AWS, การผสานรวมเทมเพลต AWS CloudFormation สำหรับการค้นหาความหมายและ การสร้างตัวเชื่อมต่อสำหรับแพลตฟอร์ม ML บุคคลที่สาม.


เกี่ยวกับผู้เขียน

อรุณา โกวินทราชู เป็นสถาปนิกโซลูชันผู้เชี่ยวชาญของ Amazon OpenSearch และเคยทำงานร่วมกับเสิร์ชเอ็นจิ้นเชิงพาณิชย์และโอเพ่นซอร์สมากมาย เธอหลงใหลในการค้นหา ความเกี่ยวข้อง และประสบการณ์ของผู้ใช้ ความเชี่ยวชาญของเธอในการเชื่อมโยงสัญญาณของผู้ใช้ปลายทางกับพฤติกรรมของเครื่องมือค้นหาได้ช่วยให้ลูกค้าจำนวนมากปรับปรุงประสบการณ์การค้นหาของตน

แด็กนีย์ เบราน์ เป็นผู้จัดการผลิตภัณฑ์หลักที่ AWS ซึ่งเน้นเรื่อง OpenSearch

ประทับเวลา:

เพิ่มเติมจาก AWS ข้อมูลขนาดใหญ่

Convoy ใช้ Amazon QuickSight เพื่อช่วยให้ผู้จัดส่งและผู้ให้บริการขนส่งปรับปรุงประสิทธิภาพและประหยัดเงินด้วยการตัดสินใจจากข้อมูล

โหนดต้นทาง: 1895768
ประทับเวลา: ม.ค. 4, 2023