แชร์ผ่าน


การจัดทําดัชนีและค้นหาข้อความแบบเต็มใน CosmosDB ใน Fabric

Cosmos DB in Fabric นําเสนอคุณสมบัติการค้นหาข้อความแบบเต็มที่มีประสิทธิภาพตามที่พร้อมใช้งานโดยทั่วไป คุณลักษณะนี้ถูกออกแบบมาเพื่อปรับปรุงความสามารถในการค้นหาแบบเนทีฟของแอปของคุณโดยไม่จําเป็นต้องมีบริการค้นหาภายนอกสําหรับการค้นหาข้อความแบบเต็มพื้นฐาน

Cosmos DB in Fabric นําเสนอการจัดทําดัชนีข้อความและการค้นหาเต็มรูปแบบซึ่งออกแบบมาเพื่อเพิ่มประสิทธิภาพปริมาณงานการค้นหาและการดึงข้อมูลของคุณ คุณลักษณะนี้รวมถึงเทคนิคการประมวลผลข้อความขั้นสูงเช่นการทําให้เป็นสาเหตุให้หยุดการเอาคําออกและโทเค็นการเปิดใช้งานการค้นหาข้อความที่มีประสิทธิภาพและมีประสิทธิภาพผ่านดัชนีข้อความเฉพาะ การค้นหาข้อความแบบเต็มยังรวมถึง การให้คะแนนข้อความแบบเต็ม ด้วยฟังก์ชันที่ประเมินความเกี่ยวข้องของเอกสารไปยังคิวรีค้นหาที่ระบุ BM25 หรือ Best Matching 25 พิจารณาปัจจัยต่างๆ เช่น ความถี่ของคําศัพท์ ความถี่ของเอกสารผกผัน และความยาวของเอกสารในคะแนนและจัดอันดับเอกสาร การดําเนินการนี้จะช่วยให้แน่ใจว่าเอกสารที่เกี่ยวข้องมากที่สุดจะปรากฏที่ด้านบนของผลลัพธ์การค้นหา ปรับปรุงความถูกต้องและประโยชน์ในการค้นหาข้อความ

การค้นหาข้อความแบบเต็มเหมาะสําหรับสถานการณ์ต่าง ๆ รวมถึง:

  • อีคอมเมิร์ซ: ค้นหาผลิตภัณฑ์อย่างรวดเร็วตามคําอธิบาย บทวิจารณ์ และแอตทริบิวต์ข้อความอื่นๆ

  • การจัดการเนื้อหา: ค้นหาบทความ บล็อก และเอกสารอย่างมีประสิทธิภาพ

  • การสนับสนุนลูกค้า: ดึงตั๋วการสนับสนุน คําถามที่พบบ่อย และบทความฐานความรู้ที่เกี่ยวข้อง

  • เนื้อหาของผู้ใช้: วิเคราะห์และค้นหาเนื้อหาที่ผู้ใช้สร้างขึ้น เช่น โพสต์และความคิดเห็น

  • RAG สําหรับ chatbots: ปรับปรุงการตอบสนองของแชทบอทโดยการดึงข้อมูลที่เกี่ยวข้องจาก corpora ข้อความขนาดใหญ่ ปรับปรุงความถูกต้องและความเกี่ยวข้องของคําตอบ

  • แอป AI แบบหลายตัวแทน: ช่วยให้เจ้าหน้าที่ AI หลายรายสามารถค้นหาและวิเคราะห์ข้อมูลข้อความจํานวนมากและให้ข้อมูลเชิงลึกที่ครอบคลุมและแยกแยะความแตกต่างได้

  1. กําหนดค่าคอนเทนเนอร์ด้วยนโยบายข้อความแบบเต็มและดัชนีข้อความแบบเต็ม

  2. แทรกข้อมูลของคุณด้วยคุณสมบัติของข้อความ

  3. เรียกใช้คิวรีกับข้อมูลโดยใช้ฟังก์ชันระบบค้นหาข้อความแบบเต็ม

เมื่อต้องการใช้ความสามารถในการค้นหาข้อความแบบเต็ม คุณควรกําหนดนโยบายสองนโยบายก่อน:

  • นโยบายข้อความแบบเต็มระดับคอนเทนเนอร์ที่กําหนดเส้นทางที่ประกอบด้วยข้อความสําหรับฟังก์ชันระบบคิวรีข้อความแบบเต็มใหม่

  • ดัชนีข้อความแบบเต็มที่เพิ่มลงในนโยบายการทําดัชนีที่เปิดใช้งานการค้นหาที่มีประสิทธิภาพ

คุณสามารถเรียกใช้คิวรีการค้นหาข้อความแบบเต็มได้โดยไม่มีนโยบายเหล่านี้ แต่ไม่ได้ใช้ดัชนีข้อความแบบเต็มและสามารถใช้หน่วยคําขอเพิ่มเติม (RUs) ได้ หากไม่มีนโยบายนี้ การค้นหาข้อความแบบเต็มอาจใช้เวลานานในการดําเนินการ ขอแนะนําให้กําหนดคอนเทนเนอร์ข้อความแบบเต็มและนโยบายดัชนี

นโยบายข้อความแบบเต็ม

สําหรับคุณสมบัติข้อความทั้งหมดที่คุณต้องการกําหนดค่าสําหรับการค้นหาข้อความแบบเต็ม คุณต้องประกาศทั้งคุณสมบัติ path ด้วยข้อความและ language ของข้อความ นโยบายข้อความแบบเต็มอย่างง่ายอาจเป็น:

{
  "defaultLanguage": "en-US",
  "fullTextPaths": [
    {
      "path": "/text",
      "language": "en-US"
    }
  ]
}

การกําหนดเส้นทางข้อความหลายรายการสามารถทําได้อย่างง่ายดายโดยการเพิ่มองค์ประกอบอื่นใน fullTextPolicy อาร์เรย์:

{
  "defaultLanguage": "en-US",
  "fullTextPaths": [
    {
      "path": "/text1",
      "language": "en-US"
    },
    {
      "path": "/text2",
      "language": "en-US"
    }
  ]
}

Important

อักขระตัวแทนการ์ด (*, []) ยังไม่รองรับในนโยบายข้อความแบบเต็มหรือดัชนีข้อความแบบเต็มในขณะนี้

สําหรับข้อมูลเพิ่มเติมและตัวอย่างของการตั้งค่านโยบายข้อความแบบเต็ม ให้ดูตัวอย่างนโยบายการทําดัชนีข้อความแบบเต็ม

รองรับหลายภาษา

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

Note

การสนับสนุนหลายภาษาอยู่ในช่วงตัวอย่างในช่วงต้น ประสิทธิภาพและคุณภาพของการค้นหาอาจแตกต่างจากการค้นหาข้อความทั้งหมดในภาษาอังกฤษ ตัวอย่างเช่น การลบ stopword จะพร้อมใช้งานสําหรับภาษาอังกฤษ (en-us) เท่านั้นในขณะนี้ ฟังก์ชันการทํางานอาจมีการเปลี่ยนแปลงผ่านวิวัฒนาการของการแสดงตัวอย่าง

สําหรับข้อมูลเพิ่มเติมเกี่ยวกับข้อจํากัดที่เกี่ยวข้องกับการสนับสนุนหลายภาษา โปรดดู ข้อจํากัดของข้อความแบบเต็มของ Cosmos DB

ดัชนีข้อความแบบเต็ม

การดําเนินการค้นหาข้อความแบบเต็มควรใช้ดัชนีข้อความแบบเต็ม ดัชนีข้อความแบบเต็มสามารถกําหนดได้อย่างง่ายดายใน Cosmos DB ใด ๆ ในนโยบายดัชนี Fabric สําหรับแต่ละตัวอย่างที่นี่:

{
  "indexingMode": "consistent",
  "automatic": true,
  "includedPaths": [
    {
      "path": "/*"
    }
  ],
  "excludedPaths": [
    {
      "path": "/\"_etag\"/?"
    },
  ],
  "fullTextIndexes": [
    {
      "path": "/text"
    }
  ]
}

เช่นเดียวกับนโยบายข้อความแบบเต็ม ดัชนีข้อความแบบเต็มสามารถกําหนดได้ในหลายเส้นทาง:

{
  "indexingMode": "consistent",
  "automatic": true,
  "includedPaths": [
    {
      "path": "/*"
    }
  ],
  "excludedPaths": [
    {
      "path": "/\"_etag\"/?"
    },
  ],
  "fullTextIndexes": [
    {
      "path": "/text"
    },
    {
      "path": "/text2"
    }
  ]
}

คิวรีการค้นหาข้อความแบบเต็ม

การค้นหาข้อความแบบเต็มและการดําเนินการให้คะแนนจะดําเนินการโดยใช้ฟังก์ชันระบบต่อไปนี้ใน Cosmos DB ในภาษาคิวรี Fabric:

  • FULLTEXTCONTAINS: แสดง true ถ้ามีสตริงที่ระบุอยู่ในคุณสมบัติที่ระบุของเอกสาร ฟังก์ชันนี้มีประโยชน์ในส่วน WHERE คําสั่งเมื่อคุณต้องการตรวจสอบให้แน่ใจว่ามีคําสําคัญที่เฉพาะเจาะจงรวมอยู่ในเอกสารที่คิวรีของคุณส่งกลับ

  • FULLTEXTCONTAINSALL: ส่งคืน true หากสตริงที่กําหนด ทั้งหมด อยู่ในคุณสมบัติที่ระบุของเอกสาร ฟังก์ชันนี้มีประโยชน์ในส่วน WHERE คําสั่งเมื่อคุณต้องการตรวจสอบให้แน่ใจว่าคําสําคัญหลายคํารวมอยู่ในเอกสารที่คิวรีของคุณส่งกลับ

  • FULLTEXTCONTAINSANY: ส่งคืน true หากสตริง ใด ๆ ที่กําหนดมีอยู่ในคุณสมบัติที่ระบุของเอกสาร ฟังก์ชันนี้มีประโยชน์ในส่วน WHERE คําสั่งเมื่อคุณต้องการตรวจสอบให้แน่ใจว่าคําสําคัญอย่างน้อยหนึ่งคําถูกรวมอยู่ในเอกสารที่คิวรีของคุณส่งกลับ

  • FULLTEXTSCORE: ใช้ฟังก์ชันนี้ในส่วน ORDER BY RANK คําสั่งเพื่อส่งคืนเอกสารที่เรียงลําดับโดยคะแนนข้อความเต็มวางเอกสารที่เกี่ยวข้องมากที่สุด (การให้คะแนนสูงสุด) ที่ด้านบนและเอกสารที่เกี่ยวข้องน้อยที่สุด (การให้คะแนนต่ําสุด) ที่ด้านล่าง

นี่คือตัวอย่างบางส่วนของแต่ละฟังก์ชันที่ใช้งานอยู่

FULLTEXTCONTAINS

ในตัวอย่างนี้ เราต้องการรับผลลัพธ์ 10 รายการแรกที่มีวลี "จักรยานสีแดง" อยู่ในคุณสมบัติc.text

SELECT TOP 10
  *
FROM
  container c
WHERE
  FULLTEXTCONTAINS(c.text, "red bicycle")

FULLTEXTCONTAINSALL

ในตัวอย่างนี้ เราต้องการรับผลลัพธ์ 10 รายการแรกซึ่งมีคําสําคัญ "สีแดง" และ "จักรยาน" อยู่ในคุณสมบัติ c.textแต่ไม่จําเป็นต้องรวมกัน

SELECT TOP 10 *
FROM c
WHERE FULLTEXTCONTAINSALL(c.text, "red", "bicycle")

FULLTEXTCONTAINSANY

ในตัวอย่างนี้ เราต้องการรับผลลัพธ์ 10 รายการแรกที่คําสําคัญ "สีแดง" และ "จักรยาน" หรือ "สเก็ตบอร์ด" อยู่ในคุณสมบัติc.text

SELECT TOP 10
  *
FROM
  container c
WHERE
  FULLTEXTCONTAINS(c.text, "red") AND 
  FULLTEXTCONTAINSANY(c.text, "bicycle", "skateboard")

FULLTEXTSCORE

ในตัวอย่างนี้ เราต้องการรับผลลัพธ์ 10 รายการแรกที่มี "ภูเขา" และ "จักรยาน" รวมอยู่ และเรียงลําดับตามความเกี่ยวข้อง นั่นคือเอกสารที่มีเงื่อนไขเหล่านี้มักจะปรากฏสูงกว่าในรายการ

SELECT TOP 10
  *
FROM
  container c
ORDER BY RANK
  FULLTEXTSCORE(c.text, "bicycle", "mountain")

Important

FULLTEXTSCORE สามารถใช้ในส่วน ORDER BY RANK คําสั่งเท่านั้น และยังไม่ได้คาดการณ์ใน SELECT คําสั่ง หรือ ใน WHERE ส่วนคําสั่ง

การค้นหาแบบไม่พร่ามวสามารถปรับปรุงความยืดหยุ่นในการพิมพ์ผิดและการเปลี่ยนแปลงข้อความ คุณสามารถระบุ "ระยะทาง" ที่อนุญาต (จํานวนการแก้ไข) ระหว่างคําค้นหาและข้อความเอกสาร เพื่อให้ถือว่าใกล้เคียงกับรายการที่ตรงกัน ระยะห่างสูงสุดที่สามารถระบุได้คือ 2 (แก้ไขสองรายการ)

Note

การค้นหาแบบไม่ลับอยู่ในตัวอย่างก่อนเวลา ประสิทธิภาพ คุณภาพ และฟังก์ชันการทํางานอาจเปลี่ยนแปลงไปตามวิวัฒนาการของการแสดงตัวอย่าง

SELECT TOP 10
  *
FROM
  container c
WHERE
  FULLTEXTCONTAINS(c.text, {"term": "red", "distance":1}, {"term": "bicycle", "distance":2})