รหัส Dice.com สำหรับการนำแนวคิดไปใช้ตามที่กล่าวถึงในการพูดคุยต่อไปนี้:
สิ่งนี้ขยายขอบเขตงานก่อนหน้าของฉันใน 'การค้นหาเชิงแนวคิด' ซึ่งสามารถพบได้ที่นี่ - https://github.com/DiceTechJobs/ConceptualSearch (รวมถึงสไลด์และลิงก์วิดีโอ) ในการบรรยายนี้ ฉันนำเสนอวิธีการต่างๆ มากมายในการค้นหาเวกเตอร์ในมาตราส่วนโดยใช้ดัชนีกลับหัว สิ่งนี้ใช้แนวทางในการค้นหาเพื่อนบ้าน k-Nearest โดยประมาณ ซึ่งรวมถึง:
และอธิบายว่าแนวคิดเหล่านี้สามารถนำไปใช้และสืบค้นอย่างมีประสิทธิภาพภายในดัชนีกลับหัวได้อย่างไร
อัปเดต: หลังจากพูดคุยกับ Trey Grainger และ Erik Hatcher จาก LucidWorks พวกเขาแนะนำให้ใช้ความถี่ของเทอมแทนเพย์โหลดสำหรับโซลูชันที่ฉันฝังน้ำหนักเทอมลงในดัชนี และใช้ฟังก์ชันความคล้ายคลึงกันของการรับรู้เพย์โหลดพิเศษ (ซึ่งก็ไม่จำเป็นเช่นกัน) เพย์โหลดต้องเสียค่าปรับด้านประสิทธิภาพอย่างมาก ความท้าทายในเรื่องนี้คือน้ำหนักติดลบ ฉันคิดว่ามันเป็นไปไม่ได้ที่จะเข้ารหัสความถี่เชิงลบ แต่สามารถแก้ไขได้ด้วยการมีโทเค็นที่แตกต่างกันสำหรับโทเค็นถ่วงน้ำหนักเชิงบวกและลบ และทำการปรับเปลี่ยนที่คล้ายกันในเวลาสืบค้น (โดยที่การเพิ่มค่าลบสามารถทำได้ นำไปใช้ใน Solr ได้ตามความต้องการ)
เอกสาร Lucene: ตัวกรองความถี่คำที่คั่นด้วย Lucene
นอกจากนี้ยังมีการอัปเดตล่าสุดสำหรับ Lucene core ที่ใช้งานได้ที่นี่ และเร็วๆ นี้จะทำให้เข้าสู่การค้นหาแบบยืดหยุ่นในขณะที่เขียน: Block Max WAND สิ่งนี้ทำให้การสืบค้นบูลีนหรือการสืบค้นขนาดใหญ่เร็วขึ้นอย่างมาก โดยที่คุณไม่จำเป็นต้องทราบจำนวนผลลัพธ์ที่แน่นอน แต่เพียงสนใจที่จะได้ผลลัพธ์อันดับสูงสุด N โดยเร็วที่สุด วิธีการทั้งหมดที่ฉันพูดถึงที่นี่สร้างการสืบค้น OR ที่ค่อนข้างใหญ่ ดังนั้นนี่จึงมีความเกี่ยวข้องมาก ฉันได้อ่านด้วยว่าการใช้งานการจับคู่ขั้นต่ำควรในปัจจุบันยังรวมถึงการเพิ่มประสิทธิภาพที่คล้ายกัน ดังนั้นประสิทธิภาพที่ได้รับประเภทเดียวกันนี้อาจได้รับแล้วโดยใช้การตั้งค่า mm ที่เหมาะสม ซึ่งเป็นสิ่งที่ฉันได้ทดลองในโค้ดของฉันแล้ว
เปิดใช้งาน 2018: 'เวกเตอร์ในการค้นหา'
Haystack 2019: 'การค้นหาด้วยเวกเตอร์'
Simon Hughes (หัวหน้านักวิทยาศาสตร์ข้อมูล, Dice.com)