ปลั๊กอินฐานข้อมูลเวกเตอร์สำหรับเครื่องยนต์ Unreal 5
ปลั๊กอินนี้เพิ่มประเภทฐานข้อมูลเวกเตอร์ที่เรียบง่ายให้กับ Unreal Engine 5 ออกแบบโดยคำนึงถึงพิมพ์เขียว
คำเตือน: ทำงานอยู่ระหว่างดำเนินการ
นี่ยังอยู่ในสภาพแรกดังนั้นอย่าแปลกใจถ้าคุณประสบปัญหา ฉันกำลังทำปลั๊กอินนี้สำหรับตัวเองสำหรับโครงการบางอย่าง แต่ฉันคิดว่ามันคงจะดีที่จะแบ่งปัน หากคุณลองใช้ปัญหาและสัมผัสกับปัญหาอย่าลังเลที่จะเปิดปัญหาใหม่ด้วยข้อมูลบันทึกใด ๆ ที่อาจเป็นประโยชน์
การติดตั้ง
repo นี้รวมถึงโครงการทั้งหมด (UE 5.4) ฉันใช้เพื่อทดสอบและพัฒนาปลั๊กอินนี้ คุณ ไม่ จำเป็นต้องโคลนโครงการทั้งหมดนี้ ในการติดตั้งปลั๊กอินให้ทำตามขั้นตอนเหล่านี้:
- ดาวน์โหลดโฟลเดอร์ปลั๊กอิน/vectorSearch และวางไว้ในโฟลเดอร์ปลั๊กอินของโครงการของคุณ (สร้างสิ่งนี้หากไม่มีอยู่)
- ณ เวลานี้คุณสามารถพยายามเปิดโครงการ มีโอกาสที่จะได้ผลอยู่แล้ว
- คลิกขวาที่ไฟล์. Uproject ของคุณแล้วคลิก 'สร้างไฟล์ Project Visual Studio'
- เปิดโซลูชันโครงการ (ไฟล์. sln) และสร้างโครงการตรวจสอบให้แน่ใจว่าไม่มีข้อผิดพลาดในการรวบรวม
- หากคุณพบปัญหาการรวบรวมใด ๆ โปรดโพสต์บันทึกการสร้างในแท็บปัญหา
- เปิดโครงการของคุณและค้นหา 'ฐานข้อมูลเวกเตอร์' ในกราฟพิมพ์เขียวเพื่อดูฟังก์ชั่นที่มีอยู่
คู่มือการติดตั้งนี้จะถือว่าคุณมีโครงการ C ++ เนื่องจากฉันไม่สามารถทดสอบการรวบรวมปลั๊กอินนี้ในโครงการพิมพ์เขียว หากคุณมีโครงการพิมพ์เขียวคุณสามารถสร้างโครงการ C ++ ที่ว่างเปล่าได้อย่างรวดเร็วและทำการรวบรวมที่นั่นฉันเชื่อว่าการคัดลอก/วางจากโครงการนั้นจะทำงานได้
มันทำงานอย่างไร?
- การใช้โหนด 'สร้างฐานข้อมูลเวกเตอร์ใหม่' คุณสามารถเริ่มต้นฐานข้อมูลเวกเตอร์ใหม่แล้วบันทึกการอ้างอิงเป็นตัวแปร
- การใช้วัตถุนี้เป็นเป้าหมายคุณสามารถใช้โหนด 'เพิ่มรายการไปยัง Vector Database' เพื่อเพิ่มรายการ (และเวกเตอร์ที่สอดคล้องกัน- อาร์เรย์ของลอย) ของประเภทข้อมูลใด ๆ (ปลั๊กอินปัจจุบันรองรับสตริงวัตถุและโครงสร้าง- โครงสร้างสามารถมีประเภทตัวแปรส่วนใหญ่
- ในการดึงรายการจากฐานข้อมูลคุณสามารถใช้โหนด 'Get Top N Matches' สิ่งเหล่านี้ใช้ในวัตถุฐานข้อมูลเวกเตอร์เวกเตอร์ (อาร์เรย์ของลอย) และค่า 'n' (จำนวนการจับคู่ที่จะส่งคืน) จากนั้นโหนดเหล่านี้จะคำนวณรายการ N ด้านบนในฐานข้อมูลโดยใช้ระยะทางเวกเตอร์แต่ละรายการจากเวกเตอร์อินพุต
- 'Get Top N Struct Matches' มีเอาท์พุทไวด์การ์ดเพื่อให้โครงสร้างของคุณกลับมาจากการเชื่อมต่อตัวแปรตัวแปรหรือโครงสร้างตัวเบรกเกอร์ออกจากแต่ละลูปจากนั้นเชื่อมต่ออินพุตแต่ละลูปแต่ละอินพุตกับ 'Get Top N Struct Matches
- นอกจากนี้ยังมี 'รับรายละเอียด Top N Matches' ซึ่งจะส่งคืน struct ที่มีเวกเตอร์ที่พบในแต่ละรายการระยะทางและวัตถุ wrapper จากที่ซึ่งค่าของมันจะได้รับจากฟังก์ชั่นบริสุทธิ์ที่ให้มา (ยกเว้น structs ซึ่งมีฟังก์ชั่นที่ไม่บริสุทธิ์
- ฟังก์ชั่น 'Get Top N Matches' ทั้งหมดจะพิจารณารายการฐานข้อมูลเวกเตอร์ที่มีเวกเตอร์ที่ตรงกับขนาดของเวกเตอร์อินพุตและกับประเภทรายการที่ตรงกับประเภทโหนด นี่เป็นเพราะฐานข้อมูลเวกเตอร์เป็นประเภทข้อมูลผู้ไม่เชื่อเรื่องพระเจ้า- คุณสามารถใส่หมายเลขหรือการรวมกันของสตริงวัตถุหรือโครงสร้างลงในฐานข้อมูล (พร้อมเวกเตอร์ที่มีขนาดที่แตกต่างกันเช่นกันหากคุณต้องการ) และมันจะทำงานได้ มีการลงโทษเล็กน้อยในการทำเช่นนี้ซึ่งฟังก์ชั่น getter ยังคงต้องทำซ้ำ ทุก รายการในอาร์เรย์โดยไม่คำนึงว่าคุณต้องการพิจารณาพวกเขาหรือไม่
- ในการลบรายการออกจากฐานข้อมูลคุณสามารถใช้โหนด 'ลบรายการจากฐานข้อมูลเวกเตอร์' ซึ่งใช้ในเวกเตอร์อินพุตและลบการจับคู่ใด ๆ หาก BremoveAlloccurences ถูกตั้งค่าเป็นจริง จากนั้นรายการใด ๆ ที่มีเวกเตอร์ที่ตรงกันจะถูกลบออก นอกจากนี้ยังมีอินพุตลอยตัว 'removalRange' ซึ่งหากตั้งค่าเป็นสิ่งที่เหนือกว่า 0 จะลบการจับคู่ใด ๆ ภายใน (หรือที่) ที่กำหนดระยะห่างจากเวกเตอร์อินพุต
- นอกจากนี้ยังมีโหนดบริสุทธิ์ที่จะได้รับจำนวนรายการในฐานข้อมูล (รวมถึงโหนด Getter ที่แยกต่างหากสำหรับการนับจำนวนรายการสตริงการนับจำนวนรายการและจำนวนรายการที่เป็นโครงสร้าง)
สร้างเวกเตอร์
ขณะนี้ปลั๊กอินนี้มีฟังก์ชั่นพิมพ์พิมพ์ใหญ่ 'สร้าง OpenAI EMBEDDING' ที่ใช้ในการป้อนข้อมูลสตริงเช่นเดียวกับโครงสร้างที่มีจุดสิ้นสุด API รุ่นและคีย์ API และทำให้การร้องขอ API ไปยังจุดสิ้นสุดที่ระบุ