นี่เป็นโปรเจ็กต์ที่ฉันกำลังทำอยู่ ฉันกำลังพยายามรวบรวมรายการคำถามและคำตอบสำหรับการสัมภาษณ์ Generative AI
ฉันใช้ข้อมูลอ้างอิงนี้เป็นฐาน ให้เครดิตพวกเขาในการรวบรวม อย่างไรก็ตาม ฉันใช้เสรีภาพ อย่างมาก ในการแก้ไขคำถาม เช่นเดียวกับคำตอบ พวกเขาเป็นของฉันเองโดยสมบูรณ์
หมายเหตุ: ฉันกำลังพยายามเก็บคำตอบที่ฉันเขียนเองให้น้อยที่สุด เนื่องจากฉันไม่ได้เป็นแหล่งที่มาที่เชื่อถือได้ในหัวข้อนี้ ฉันจะให้ข้อมูลอ้างอิงอย่างสุดความสามารถของฉัน ฉันละเว้นจากการเพิ่มตัวช่วยการมองเห็นใดๆ เพื่อให้ง่ายต่อการอ่านและเพื่อรักษาความซับซ้อนของการบำรุงรักษาให้เหลือน้อยที่สุด แหล่งข้อมูลและข้อมูลอ้างอิงที่ฉันอ้างอิงมีข้อมูลมากมาย ซึ่งส่วนใหญ่มีภาพประกอบ
ฉันวางแผนที่จะขยายสิ่งนี้ไปสู่ Generative AI โดยทั่วไป ไม่ใช่แค่ด้านภาษาเท่านั้น ครอบคลุมทุกอย่างตั้งแต่โมเดลการแพร่กระจายไปจนถึงโมเดลภาษาวิสัยทัศน์ เมื่อผมวางโครงสร้างพื้นฐานลงแล้วและพอใจกับผลลัพธ์เบื้องต้นแล้ว ผมจะพยายามสร้างวิธีการที่มีประสิทธิภาพสำหรับการมีส่วนร่วมในพื้นที่เก็บข้อมูลนี้ จากนั้นผมจะเปิดให้มีส่วนร่วม แต่สำหรับตอนนี้ ผมอยากจะเก็บมันไว้ เรียบง่ายและมุ่งเน้น
สำคัญ:
ฉันคิดว่าอาจจำเป็นต้องชี้แจงว่าคำตอบที่ฉันให้ ไม่ว่าจะเป็นบทความของฉันเองหรือหากฉันกำลังอ้างอิงแหล่งที่มา ไม่ได้อยู่ในรูปแบบหรือรูปแบบใดที่แน่ชัด สิ่งที่ฉันกำลังพยายามทำคือให้คุณเริ่มต้น บนเส้นทางที่ถูกต้อง และให้แนวคิดทั่วไปเกี่ยวกับสิ่งที่คาดหวัง คุณควรอ่านแหล่งข้อมูลทั้งหมดที่ฉันให้ไว้อย่างแน่นอน จากนั้นจึงอ่านบางส่วน หากคุณต้องการให้ที่นี่เป็นจุดแวะพักสุดท้าย ที่นี่เป็นสถานที่ที่ผิดสำหรับคุณ นี่คือจุดเริ่มต้น
นอกจากนี้ หากคุณเพิ่งเริ่มต้น คำแนะนำเดียวของฉันคือ:
หาเอกสารอ่านสบายๆ เพราะมัน ไม่มีวัน จบสิ้น
บทความเกี่ยวกับวิธีการอ่านบทความ: วิธีอ่านบทความ
1. LLM และพื้นฐานการพร้อมท์
2. การดึงข้อมูล Augmented Generation (RAG)
3. กลยุทธ์การแบ่งส่วน
4. การฝังโมเดลสำหรับการดึงข้อมูล
5. การดึงข้อมูลเวกเตอร์ ฐานข้อมูล และดัชนี
6. อัลกอริธึมการค้นหาขั้นสูง
7. การทำงานภายในโมเดลภาษา
ลองพิจารณาชุดข้อมูลที่แต่ละจุดข้อมูลแทนแมว มาดูกันว่าแต่ละรุ่นมีความแตกต่างกันอย่างไร:
มาสร้างคำจำกัดความของ Large Language Model (LLM) จากพื้นฐาน:
อ่านเพิ่มเติม: การรวบรวมข้อมูลทั่วไป
โมเดลภาษาขนาดใหญ่มักได้รับการฝึกฝนในหลายขั้นตอน ขั้นตอนเหล่านี้มักเรียกว่าการฝึกล่วงหน้า การปรับแต่งอย่างละเอียด และการจัดตำแหน่ง
จุดประสงค์ของขั้นตอนนี้คือการเปิดเผยโมเดลเป็น ภาษาทั้งหมด ในลักษณะที่ไม่มีผู้ดูแล ซึ่งมักจะเป็นส่วนที่แพงที่สุดของการฝึกอบรม และต้องใช้การประมวลผลจำนวนมาก การฝึกล่วงหน้ามักทำกับชุดข้อมูล Common Crawl ส่วนเวอร์ชันที่ประมวลผลแล้วของชุดข้อมูล เช่น FineWeb และ RedPajama มักใช้สำหรับการฝึกล่วงหน้า เพื่ออำนวยความสะดวกในการเรียนรู้ประเภทกว้างๆ นี้ มีงานการฝึกอบรมหลายอย่างที่เราสามารถใช้ได้ เช่น Masked Language Modeling (MLM), Next Sentence Prediction (NSP) และอื่นๆ
การสร้างแบบจำลองภาษาหน้ากากมีพื้นฐานมาจากการทดสอบ Cloze โดยเราจะปกปิดคำในประโยค และขอให้แบบจำลองคาดเดา คล้ายกับการเติมคำในข้อสอบเปล่า มันแตกต่างจากการขอให้โมเดลทำนายคำถัดไปในประโยค เนื่องจากโมเดลจะต้องเข้าใจบริบทของประโยค ไม่ใช่แค่ลำดับของคำเท่านั้น
การทำนายประโยคถัดไปเป็นงานที่แบบจำลองได้รับสองประโยค และจะต้องคาดเดาว่าประโยคที่สองอยู่หลังประโยคแรกหรือไม่ แม้จะฟังดูเหมือนง่าย แต่โมเดลก็ต้องเข้าใจบริบทของประโยคแรก และความสัมพันธ์ระหว่างสองประโยค
แหล่งข้อมูลที่ดีเยี่ยมในการเรียนรู้เพิ่มเติมเกี่ยวกับงานเหล่านี้คือรายงานของ BERT
ขั้นตอนนี้ง่ายกว่าการฝึกล่วงหน้ามาก เนื่องจากโมเดลได้เรียนรู้เกี่ยวกับภาษามากมายแล้ว และตอนนี้เราแค่ต้องสอนเกี่ยวกับงานเฉพาะเท่านั้น สิ่งที่เราต้องการสำหรับขั้นตอนนี้คือข้อมูลที่ป้อน (พร้อมท์) และป้ายกำกับ (ตอบกลับ)
ขั้นตอนนี้มักจะเป็นขั้นตอนที่สำคัญและซับซ้อนที่สุด โดยต้องใช้โมเดลรางวัลที่แยกจากกัน การใช้กระบวนทัศน์การเรียนรู้ที่แตกต่างกัน เช่น การเรียนรู้แบบเสริมกำลัง และอื่นๆ
ขั้นตอนนี้มีจุดมุ่งหมายหลักเพื่อปรับการคาดการณ์ของแบบจำลองให้สอดคล้องกับความชอบของมนุษย์ ขั้นตอนนี้มักจะผสมผสานกับขั้นตอนการปรับแต่งอย่างละเอียด การอ่านที่จำเป็นสำหรับขั้นตอนนี้คือรายงาน InstructGPT เอกสารนี้ได้แนะนำแนวคิดของการเรียนรู้แบบเสริมแรงจากผลตอบรับของมนุษย์ (RLHF) ซึ่งใช้การปรับนโยบายให้เหมาะสมที่สุด
วิธีอื่นๆ ในการจัดแนวการคาดการณ์ของแบบจำลองให้สอดคล้องกับความชอบของมนุษย์ ได้แก่:
โทเค็นเป็นหน่วยข้อความที่เล็กที่สุดที่โมเดลสามารถเข้าใจได้ อาจเป็นคำ คำย่อย หรืออักขระก็ได้
Tokenizers มีหน้าที่ในการแปลงข้อความให้เป็นโทเค็น โดยอาจทำได้ง่ายๆ เพียงแยกข้อความตามช่องว่าง หรือซับซ้อนพอๆ กับการใช้โทเค็นคำย่อย การเลือกโทเค็นไนเซอร์อาจส่งผลกระทบอย่างมีนัยสำคัญต่อประสิทธิภาพของโมเดล เนื่องจากอาจส่งผลต่อความสามารถของโมเดลในการทำความเข้าใจบริบทของข้อความ
โทเคนไนเซอร์ทั่วไปบางตัวได้แก่:
แนะนำให้อ่าน(และดู):
นี่เป็นคำถามที่มีเนื้อหามาก แต่ต่อไปนี้เป็นแหล่งข้อมูลบางส่วนสำหรับการสำรวจหัวข้อนี้เพิ่มเติม:
พารามิเตอร์ประกอบด้วย:
พารามิเตอร์แต่ละตัวสามารถปรับได้เพื่อปรับปรุงประสิทธิภาพของโมเดลและคุณภาพของข้อความที่สร้างขึ้น
การอ่านที่แนะนำ:
กลยุทธ์การถอดรหัสจะใช้เพื่อเลือกโทเค็นถัดไปตามลำดับ อาจมีตั้งแต่การถอดรหัสแบบโลภแบบธรรมดาไปจนถึงกลยุทธ์การสุ่มตัวอย่างที่ซับซ้อนมากขึ้น
กลยุทธ์การถอดรหัสทั่วไปบางประการ ได้แก่:
กลยุทธ์การถอดรหัสที่ใหม่กว่า ได้แก่ การถอดรหัสแบบเก็งกำไร (การถอดรหัสแบบช่วยเหลือ) ซึ่งเป็นแนวคิดแบบเสริม ซึ่งเกี่ยวข้องกับการใช้โทเค็นตัวเลือกจากโมเดลที่เล็กกว่า (เร็วกว่า) เพื่อสร้างการตอบสนองจากโมเดลที่ใหญ่กว่าอย่างรวดเร็ว
การอ่านที่แนะนำ:
ในกระบวนการถอดรหัส LLM จะสร้างข้อความทีละโทเค็นโดยอัตโนมัติ มีเกณฑ์การหยุดหลายประการที่สามารถใช้เพื่อกำหนดเวลาที่ควรหยุดสร้างข้อความ เกณฑ์การหยุดทั่วไปบางประการ ได้แก่:
A prompt contains any of the following elements:
Instruction - a specific task or instruction you want the model to perform
Context - external information or additional context that can steer the model to better responses
Input Data - the input or question that we are interested to find a response for
Output Indicator - the type or format of the output.
อ้างอิง: คู่มือวิศวกรรมพร้อมท์
การอ่านที่แนะนำ:
อ้างอิง: คู่มือวิศวกรรมพร้อมท์
การอ่านที่แนะนำ:
การเรียนรู้ในบริบทเป็นกระบวนทัศน์การเรียนรู้ที่ใช้งานง่ายและเข้าใจง่ายในการประมวลผลภาษาธรรมชาติ ครอบคลุมแนวคิดต่างๆ เช่น การเรียนรู้แบบไม่กี่ช็อต อาจเป็นเรื่องง่ายเหมือนกับการให้ตัวอย่างงานที่คุณต้องการให้โมเดลดำเนินการ จากนั้นโมเดลจะเรียนรู้จากตัวอย่างเหล่านั้นและสร้างการตอบกลับตามนั้น
การอ่านที่แนะนำ:
แสดงให้เห็นว่าการเรียนรู้ในบริบทจะเกิดขึ้นได้ก็ต่อเมื่อมีการปรับขนาดแบบจำลองให้มีขนาดที่แน่นอน และเมื่อแบบจำลองได้รับการฝึกฝนในชุดงานที่หลากหลาย การเรียนรู้ในบริบทอาจล้มเหลวได้เมื่อแบบจำลองไม่สามารถทำงานการให้เหตุผลที่ซับซ้อนได้
การอ่านที่แนะนำ:
นี่เป็นคำถามที่กว้างมาก แต่คำถามต่อไปนี้จะช่วยให้คุณมีความเข้าใจพื้นฐานเกี่ยวกับวิธีออกแบบพร้อมท์สำหรับงานเฉพาะ:
อีกทางหนึ่ง ทิศทางการวิจัยที่ใหม่กว่าจะตรวจสอบโดยใช้วิธีอัลกอริธึมในการปรับข้อความแจ้งให้เหมาะสม ซึ่งมีการสำรวจอย่างกว้างขวางในแพ็คเกจ DSPy ซึ่งให้วิธีการในการทำเช่นนี้ งานของพวกเขาก็ได้รับการตีพิมพ์ในบทความนี้ด้วย
ไม่มีคำตอบสำหรับคำถามนี้ ฉันใช้เป็นข้ออ้างในการเชื่อมโยงข้อมูลอ้างอิงนี้:
มีหลายวิธีในการรับ LLM เพื่อสร้างเอาต์พุตที่มีโครงสร้างซึ่งสามารถแยกวิเคราะห์ได้ทุกครั้ง วิธีการทั่วไปขึ้นอยู่กับแนวคิดของการเรียกใช้ฟังก์ชันใน LLM
การอ่านและการดูที่แนะนำ:
The term describes when LLMs produce text that is incorrect, makes no sense, or is unrelated to reality
อ้างอิง: LLM Hallucination—ประเภท สาเหตุ และแนวทางแก้ไข โดย Nexla
การอ่านที่แนะนำ:
แนวคิดของ Chain-of-Thought Prompting เป็นที่ทราบกันดีว่าช่วยเพิ่มความสามารถในการให้เหตุผลใน LLM เทคนิคนี้เกี่ยวข้องกับการแบ่งงานที่ซับซ้อนออกเป็นชุดของงานที่ง่ายกว่า และจัดเตรียมโมเดลด้วยผลลัพธ์ระดับกลางของแต่ละงานเพื่อนำทางไปสู่ผลลัพธ์สุดท้าย
การอ่านที่แนะนำ:
การเรียกข้อมูล Augmented Generation (RAG) เป็นรูปแบบการออกแบบทั่วไปสำหรับการต่อสายดินคำตอบ LLM ตามข้อเท็จจริง เทคนิคนี้เกี่ยวข้องกับการดึงข้อมูลที่เกี่ยวข้องจากฐานความรู้และใช้เป็นแนวทางในการสร้างข้อความโดย LLM
การอ่านที่แนะนำ:
การดึงข้อมูล Augmented Generation (RAG) ประกอบด้วยสององค์ประกอบหลัก:
สัญชาตญาณเบื้องหลัง RAG คือการผสมผสานจุดแข็งของแบบจำลองที่ดึงข้อมูลและแบบจำลองที่อิงตามรุ่น เราสามารถสร้างระบบที่สามารถสร้างข้อความที่มีพื้นฐานมาจากข้อเท็จจริง ซึ่งจะช่วยจำกัดอาการประสาทหลอน
RAG มักเป็นเทคนิคที่ใช้เป็นประจำในการตอบคำถามที่ซับซ้อนโดยอิงจากฐานความรู้ เนื่องจากช่วยให้โมเดลใช้ประโยชน์จากข้อมูลภายนอกเพื่อให้คำตอบที่แม่นยำและให้ข้อมูลมากขึ้น การปรับแต่งแบบจำลองจากข้อมูลที่เป็นกรรมสิทธิ์นั้นเป็นไปไม่ได้เสมอไป และ RAG ก็มีวิธีในการรวมความรู้ภายนอกโดยไม่จำเป็นต้องปรับแต่งอย่างละเอียด
โซลูชันเต็มรูปแบบที่ใช้ RAG เพื่อตอบคำถามที่ซับซ้อนตามฐานความรู้จะเกี่ยวข้องกับขั้นตอนต่อไปนี้:
นี่เป็นคำถามที่มีเนื้อหามาก แต่ต่อไปนี้เป็นแหล่งข้อมูลบางส่วนสำหรับการสำรวจหัวข้อนี้เพิ่มเติม:
การแบ่งข้อความเป็นขั้นตอนในการแบ่งข้อความขนาดใหญ่ออกเป็นส่วนย่อยๆ และจัดการได้ง่ายขึ้น ในบริบทของระบบ RAG การแบ่งส่วนเป็นสิ่งสำคัญเนื่องจากช่วยให้ส่วนประกอบตัวดึงข้อมูลสามารถดึงข้อมูลที่เกี่ยวข้องจากฐานความรู้ได้อย่างมีประสิทธิภาพ ด้วยการแบ่งแบบสอบถามออกเป็นชิ้นเล็กๆ รีทรีฟเวอร์สามารถมุ่งเน้นไปที่การดึงข้อมูลที่เกี่ยวข้องกับแต่ละชิ้น ซึ่งสามารถปรับปรุงความแม่นยำและประสิทธิภาพของกระบวนการดึงข้อมูลได้
ในระหว่างการฝึกโมเดลการฝัง ซึ่งมักใช้เป็นตัวดึงข้อมูล คู่ข้อความเชิงบวกและเชิงลบจะถูกนำมาใช้เพื่อระบุว่าส่วนใดของข้อความสอดคล้องกัน ตัวอย่างได้แก่ ชื่อเรื่อง ส่วนหัว และส่วนหัวย่อยบนหน้า Wikipedia และย่อหน้าที่เกี่ยวข้อง โพสต์ Reddit และความคิดเห็นที่ได้รับการโหวตสูงสุด ฯลฯ
ข้อความค้นหาของผู้ใช้มักจะถูกฝังไว้ และดัชนีจะถูกสอบถาม หากดัชนีมีเอกสารทั้งหมดอยู่ภายในเพื่อสอบถามสำหรับรายการยอดนิยม k ผู้ดึงข้อมูลจะไม่สามารถส่งคืนข้อมูลที่เกี่ยวข้องมากที่สุดได้ เนื่องจากเป็นเอกสารที่จะสอบถาม คงจะใหญ่เกินจะเข้าใจ
โดยสรุป เราตัดข้อความเพราะ:
สมมติว่าเรามีหนังสือจำนวน 24 บท รวมทั้งหมด 240 หน้า ซึ่งหมายความว่าแต่ละบทมี 10 หน้า และแต่ละหน้ามี 3 ย่อหน้า สมมติว่าแต่ละย่อหน้ามี 5 ประโยค และแต่ละประโยคมี 10 คำ โดยรวมแล้วเรามี: 10 * 5 * 3 * 10 = 1,500 คำต่อบท นอกจากนี้เรายังมี 1,500 * 24 = 36,000 คำในหนังสือทั้งเล่ม เพื่อความเรียบง่าย tokenizer ของเราคือ tokenizer ของ white space และแต่ละคำก็คือ token
เรารู้ว่าอย่างน้อยที่สุด เรามีโมเดลการฝังที่สามารถฝังโทเค็นได้ 8192 รายการ:
ทั้งหมดนี้เพื่อแสดงให้เห็นว่าไม่มีวิธีที่ตายตัวในการแบ่งข้อความเป็นก้อน และวิธีที่ดีที่สุดในการแบ่งข้อความเป็นก้อนคือการทดลองและดูว่าอะไรทำงานได้ดีที่สุดสำหรับกรณีการใช้งานของคุณ
แหล่งข้อมูลที่เชื่อถือได้ในหัวข้อนี้คือสมุดบันทึกที่ยอดเยี่ยมและวิดีโอประกอบโดย Greg Kamradt ซึ่งอธิบายระดับต่างๆ ของการแยกข้อความ
สมุดบันทึกยังกล่าวถึงวิธีต่างๆ ในการประเมินและแสดงภาพระดับต่างๆ ของการแยกข้อความ และวิธีการใช้งานในระบบการดึงข้อมูล
การดูที่แนะนำ:
การฝังเวกเตอร์คือการแมปความหมายเชิงข้อความลงในปริภูมิ N มิติ โดยที่เวกเตอร์แทนข้อความ ภายในปริภูมิเวกเตอร์ ข้อความที่คล้ายกันจะแสดงด้วยเวกเตอร์ที่คล้ายกัน
การอ่านที่แนะนำ:
โมเดลภาษาที่ฝังไว้คือโมเดลภาษาที่ได้รับการฝึกเพื่อวัตถุประสงค์ในการทำข้อความเวกเตอร์ ซึ่งมักจะเป็นอนุพันธ์ของ BERT และได้รับการฝึกเกี่ยวกับคลังข้อความขนาดใหญ่เพื่อเรียนรู้ความหมายของข้อความ อย่างไรก็ตาม แนวโน้มล่าสุดยังแสดงให้เห็นว่าเป็นไปได้ที่จะใช้โมเดลภาษาที่ใหญ่กว่ามาก เพื่อจุดประสงค์นี้ เช่น มิสทรัลหรือลามะ
การอ่านและการดูที่แนะนำ:
โมเดลการฝังมักใช้เป็นตัวดึงข้อมูล เพื่อใช้ความสามารถในการดึงข้อมูล ความคล้ายคลึงกันของข้อความเชิงความหมายถูกใช้ โดยที่เวกเตอร์ที่สร้างโดยโมเดลจะถูกวัดในความคล้ายคลึงกันโดยใช้หน่วยเมตริก เช่น ดอทโปรดัค ความคล้ายคลึงของโคไซน์ เป็นต้น
การอ่านที่แนะนำ:
โมเดลการฝังได้รับการฝึกฝนด้วยการสูญเสียเชิงเปรียบเทียบ ตั้งแต่การสูญเสียเชิงเปรียบเทียบอย่างง่ายและไปจนถึงฟังก์ชันการสูญเสียที่ซับซ้อนมากขึ้น เช่น InfoNCE และการสูญเสียการจัดอันดับเชิงลบหลายรายการ กระบวนการที่เรียกว่าการขุดแบบลบอย่างหนักก็ใช้ในระหว่างการฝึกอบรมเช่นกัน
การอ่านที่แนะนำ:
การเรียนรู้แบบตรงกันข้ามเป็นเทคนิคที่ใช้ในการฝึกโมเดลการฝัง ซึ่งเกี่ยวข้องกับการเรียนรู้ที่จะแยกความแตกต่างระหว่างคู่ข้อความเชิงบวกและเชิงลบ แบบจำลองนี้ได้รับการฝึกฝนเพื่อเพิ่มความคล้ายคลึงกันระหว่างคู่ค่าบวก และลดความคล้ายคลึงกันระหว่างคู่ค่าลบ
การอ่านที่แนะนำ:
Cross-encoders และ Bi-encoders เป็นโมเดลสองประเภทที่ใช้สำหรับงานดึงข้อความ ข้อแตกต่างที่สำคัญระหว่างทั้งสองคือวิธีเข้ารหัสแบบสอบถามและเอกสาร
การจัดอันดับใหม่มักจะเป็นตัวเข้ารหัสข้าม โดยเข้ารหัสแบบสอบถามและเอกสารเข้าด้วยกัน และคำนวณความคล้ายคลึงกันระหว่างทั้งสอง ซึ่งช่วยให้พวกเขาสามารถจับภาพการโต้ตอบระหว่างแบบสอบถามและเอกสาร และให้ผลลัพธ์ที่ดีกว่าตัวเข้ารหัสแบบคู่โดยมีต้นทุนความซับซ้อนในการคำนวณที่สูงกว่ามาก
โดยทั่วไปโมเดลการฝังข้อความจะเป็นตัวเข้ารหัสแบบคู่ โดยจะเข้ารหัสแบบสอบถามและเอกสารแยกกัน และคำนวณความคล้ายคลึงกันระหว่างการฝังทั้งสองแบบ ซึ่งช่วยให้มีประสิทธิภาพในการคำนวณมากกว่าตัวเข้ารหัสข้าม แต่ไม่สามารถจับภาพการโต้ตอบที่ชัดเจนระหว่างแบบสอบถามและเอกสารได้
การแสดงความหนาแน่นของเวกเตอร์เดี่ยวมักเป็นเรื่องปกติในโมเดลการฝังข้อความ ซึ่งมักสร้างขึ้นโดยการรวมการฝังตามบริบทหลังจากการส่งต่อจากโมเดล เทคนิคการรวมกลุ่มประกอบด้วยการรวมค่าเฉลี่ย การรวมสูงสุด และการรวมโทเค็น CLS สัญชาตญาณเบื้องหลังการแสดงเวกเตอร์หนาแน่นเดี่ยวคือ ง่ายต่อการนำไปใช้และสามารถนำไปใช้งานได้หลากหลาย เช่นเดียวกับการจัดทำดัชนีและการเรียกค้นที่ง่ายดาย การแสดงที่หนาแน่นยังสามารถจับความหมายของข้อความได้ และมักใช้ในการจัดอันดับขั้นที่สอง
การแสดงเวกเตอร์หนาแน่นหลายตัวได้แสดงให้เห็นว่าให้ผลลัพธ์ที่เหนือกว่ากับการแสดงเวกเตอร์หนาแน่นของเวกเตอร์เดี่ยว ซึ่งสร้างขึ้นโดยการข้ามขั้นตอนการรวมกลุ่มและใช้การฝังตามบริบทในรูปแบบของเมทริกซ์ จากนั้นแบบสอบถามและการฝังเอกสารจะถูกนำมาใช้เพื่อคำนวณความคล้ายคลึงกันระหว่าง สอง โมเดลเช่น ColBERT ได้แสดงให้เห็นว่าให้ผลลัพธ์ที่เหนือกว่ากับการแสดงความหนาแน่นของเวกเตอร์เดี่ยว ตัวดำเนินการเช่น MaxSim ใช้ในการคำนวณความคล้ายคลึงกันระหว่างแบบสอบถามและการฝังเอกสาร สัญชาตญาณเบื้องหลังการแสดงเวกเตอร์หนาแน่นหลายตัวคือ พวกเขาสามารถจับข้อมูลเพิ่มเติมเกี่ยวกับข้อความ และสร้างผลลัพธ์ได้ดีกว่าการแสดงเวกเตอร์หนาแน่นหลายเวกเตอร์ โมเดลอย่าง ColBERT ยังเสนอความสามารถในการคำนวณการฝังเอกสารล่วงหน้า ช่วยให้ดึงข้อมูลได้อย่างมีประสิทธิภาพมาก การแสดงที่หนาแน่นยังสามารถจับความหมายของข้อความได้ และมักใช้ในการจัดอันดับขั้นที่สอง
การอ่านที่แนะนำ:
การแสดงข้อความแบบกระจัดกระจายเป็นรูปแบบที่เก่าแก่ที่สุดของแบบจำลองพื้นที่เวกเตอร์ในการดึงข้อมูล โดยทั่วไปจะขึ้นอยู่กับอนุพันธ์และอัลกอริธึม TF-IDF เช่น BM25 และยังคงเป็นพื้นฐานสำหรับระบบดึงข้อความ ความกระจัดกระจายของพวกเขาเกิดจากการที่มิติของการฝังมักจะสอดคล้องกับขนาดของคำศัพท์ สัญชาตญาณเบื้องหลังการแสดงแบบกระจัดกระจายก็คือ สิ่งเหล่านี้สามารถอธิบายได้ มีประสิทธิภาพในการคำนวณ ใช้งานง่าย และมีประสิทธิภาพอย่างยิ่งในการจัดทำดัชนีและดึงข้อมูล การแสดงแบบกระจัดกระจายยังเน้นไปที่ความคล้ายคลึงของคำศัพท์ และมักใช้ในการจัดอันดับระยะแรก
การอ่านที่แนะนำ:
การฝังข้อความแบบกระจัดกระจายทำให้สามารถใช้ดัชนีกลับหัวได้ในระหว่างการดึงข้อมูล
การอ่านที่แนะนำ:
ตัวชี้วัดสำหรับการเปรียบเทียบประสิทธิภาพของแบบจำลองการฝังประกอบด้วย:
การอ่านและการดูที่แนะนำ:
การเลือกแบบจำลองการฝังอาจเป็นปัจจัยสำคัญต่อประสิทธิภาพของระบบการดึงข้อมูลของคุณ และควรพิจารณาอย่างรอบคอบเมื่อเลือกแบบจำลอง เป็นกระบวนการกว้างๆ ที่เกี่ยวข้องกับการทดลอง และแหล่งข้อมูลต่อไปนี้จะช่วยให้คุณมีข้อมูลในการตัดสินใจ:
การดูที่แนะนำ:
ฐานข้อมูลเวกเตอร์เป็นฐานข้อมูลที่ได้รับการปรับให้เหมาะสมสำหรับการจัดเก็บและการสืบค้นข้อมูลเวกเตอร์ ช่วยให้สามารถจัดเก็บและดึงข้อมูลการฝังเวกเตอร์ได้อย่างมีประสิทธิภาพ และมักใช้ในแอปพลิเคชันที่ต้องการการค้นหาความคล้ายคลึงทางความหมาย ฐานข้อมูลเวกเตอร์เป็นกระบวนทัศน์ใหม่ที่ถือเป็นส่วนหนึ่งของกลุ่มเทคโนโลยีที่จำเป็นเพื่อให้ทันกับความต้องการของแอปพลิเคชัน GenAI
การดูที่แนะนำ:
ฐานข้อมูลแบบดั้งเดิมได้รับการปรับให้เหมาะสมสำหรับการจัดเก็บและการสืบค้นข้อมูลที่มีโครงสร้าง เช่น ข้อความ ตัวเลข และวันที่ ไม่ได้ออกแบบมาเพื่อจัดการข้อมูลเวกเตอร์อย่างมีประสิทธิภาพ ในทางกลับกัน ฐานข้อมูลเวกเตอร์ได้รับการออกแบบมาโดยเฉพาะเพื่อจัดเก็บและสืบค้นข้อมูลเวกเตอร์ พวกเขาใช้เทคนิคและอัลกอริธึมการจัดทำดัชนีพิเศษเพื่อให้สามารถค้นหาความคล้ายคลึงกันได้อย่างรวดเร็วและแม่นยำ เช่น การหาปริมาณและการรวมกลุ่มของเวกเตอร์
ฐานข้อมูลเวกเตอร์มักจะมีดัชนีของเวกเตอร์ ดัชนีเหล่านี้มีเมทริกซ์ของการฝังเวกเตอร์ ซึ่งมักจะใช้โครงสร้างข้อมูลกราฟเช่นกัน โดยเรียงลำดับในลักษณะที่สามารถสืบค้นได้อย่างมีประสิทธิภาพ เมื่อทำการสืบค้น ข้อความหรือเวกเตอร์ที่ฝังไว้จะถูกจัดเตรียมไว้เป็นอินพุต ในกรณีของข้อความ ข้อความนั้นจะถูกฝังไว้ และฐานข้อมูลเวกเตอร์จะสืบค้นดัชนีที่เหมาะสมเพื่อดึงเวกเตอร์ที่คล้ายกันมากที่สุดโดยอิงจากการวัดระยะทาง โดยปกติแล้ว เวกเตอร์จะถูกเปรียบเทียบโดยใช้หน่วยเมตริก เช่น ความคล้ายคลึงของโคไซน์ ผลคูณดอท หรือระยะทางแบบยุคลิด เวกเตอร์ยังเกี่ยวข้องกับพจนานุกรมของเมตาดาต้าที่อาจมีข้อมูล เช่น ID เอกสาร ชื่อเอกสาร ข้อความที่เกี่ยวข้อง และอื่นๆ
กลยุทธ์การค้นหาในฐานข้อมูลเวกเตอร์ประกอบด้วย:
การอ่านที่แนะนำ:
เมื่อเวกเตอร์ได้รับการจัดทำดัชนีแล้ว พวกมันมักจะถูกรวมกลุ่มเพื่อลดพื้นที่การค้นหา ซึ่งจะทำเพื่อลดจำนวนเวกเตอร์ที่ต้องเปรียบเทียบในระหว่างกระบวนการค้นหา การจัดกลุ่มทำได้โดยการจัดกลุ่มเวกเตอร์ที่คล้ายกันเข้าด้วยกัน จากนั้นจึงจัดทำดัชนีคลัสเตอร์ เมื่อทำการสืบค้น การค้นหาจะดำเนินการในระดับคลัสเตอร์ก่อน จากนั้นจึงดำเนินการในระดับเวกเตอร์ภายในคลัสเตอร์ อัลกอริทึม เช่น K-mean มักใช้สำหรับการจัดกลุ่ม
การอ่านที่แนะนำ:
เห็นได้ชัดว่านี่เป็นคำถามที่โหลดมาก แต่นี่คือแหล่งข้อมูลบางอย่างในการสำรวจหัวข้อนี้เพิ่มเติม:
Vector quantization, also called "block quantization" or "pattern matching quantization" is often used in lossy data compression. It works by encoding values from a multidimensional vector space into a finite set of values from a discrete subspace of lower dimension.
การอ้างอิง: การหาปริมาณเวกเตอร์
One general approach to LSH is to “hash” items several times, in such a way that similar items are more likely to be hashed to the same bucket than dissimilar items are.
การอ้างอิง: การขุดชุดข้อมูลขนาดใหญ่รุ่นที่ 3 บทที่ 3 มาตรา 3.4.1
แนะนำการอ่าน:
In short, PQ is the process of:
- Taking a big, high-dimensional vector,
- Splitting it into equally sized chunks — our subvectors,
- Assigning each of these subvectors to its nearest centroid (also called reproduction/reconstruction values),
- Replacing these centroid values with unique IDs — each ID represents a centroid
การอ้างอิง: ปริมาณผลิตภัณฑ์
แนะนำการอ่าน:
The Inverted File Index (IVF) index consists of search scope reduction through clustering.
ข้อมูลอ้างอิง: ดัชนีไฟล์คว่ำ
แนะนำการอ่าน:
โลกแห่งเล็ก ๆ แห่งการเดินเรือ (HNSW) มักจะถูกพิจารณาว่าเป็นสิ่งที่ล้ำสมัยในการดึงเวกเตอร์มันเป็นอัลกอริทึมที่ใช้กราฟที่สร้างกราฟของเวกเตอร์และใช้เพื่อทำการค้นหาเพื่อนบ้านที่ใกล้ที่สุดโดยประมาณ
แนะนำการอ่าน:
ระยะทางและความคล้ายคลึงกันที่ใช้ในการดึงเวกเตอร์รวมถึง:
การดูที่แนะนำ:
นี่เป็นหัวข้อการวิจัยที่ใช้งานอยู่มากและไม่มีแหล่งที่เชื่อถือได้ แต่นี่คือแหล่งข้อมูลบางอย่างในการสำรวจหัวข้อนี้เพิ่มเติม:
นอกจากนี้ยังเป็นที่น่าสังเกตว่าการค้นหาการดึงข้อมูลและการวิ่งซ้ำนั้นสร้างขึ้นบนรูปแบบและสถาปัตยกรรมที่กำหนดไว้ในสาขาการดึงข้อมูลระบบแนะนำและเครื่องมือค้นหา
สถาปัตยกรรมระบบบางอย่างที่คุณอาจต้องการสำรวจรวมถึง:
การบรรลุการค้นหาที่ดีในระบบขนาดใหญ่นั้นเกี่ยวข้องกับการผสมผสานระหว่างการจัดทำดัชนีการดึงข้อมูลและการจัดอันดับที่มีประสิทธิภาพ กลยุทธ์บางอย่างเพื่อให้บรรลุการค้นหาที่ดีในระบบขนาดใหญ่ ได้แก่ :
คุณอาจสังเกตเห็นว่ากระบวนการทั้งหมดดำเนินการในขั้นตอนของการเพิ่มความซับซ้อนซึ่งเรียกว่าการจัดอันดับแบบแบ่งส่วนหรือการดึงข้อมูลหลายขั้นตอน
แนะนำการอ่าน:
แต่สิ่งที่สำคัญที่สุดในการบรรลุการค้นหาที่ดีในระบบขนาดใหญ่คือการทดลองและทำซ้ำกลยุทธ์การดึงและการจัดอันดับของคุณและเพื่อตรวจสอบและประเมินประสิทธิภาพของระบบอย่างต่อเนื่อง
แนะนำการอ่าน:
การพูดคุยที่แนะนำเกี่ยวกับการปรับปรุงระบบการค้นหาการดึงและ RAG:
การบรรลุการค้นหาอย่างรวดเร็วนั้นเกี่ยวข้องกับการเพิ่มประสิทธิภาพการจัดทำดัชนีและกระบวนการดึงข้อมูลซึ่งใช้ความพยายามทางวิศวกรรมที่ไม่สำคัญต่อไปนี้เป็นตัวอย่างของภูมิทัศน์ปัจจุบันในด้านการค้นหาและการเพิ่มประสิทธิภาพการดึงข้อมูล:
สถานะปัจจุบันของศิลปะในการดึงเวกเตอร์บ่งชี้ว่าการฝังตัวแบบหลายเวกเตอร์ (การโต้ตอบล่าช้า) ทำงานได้ดีกว่าการฝังเวกเตอร์เดี่ยวอย่างไรก็ตามการเพิ่มประสิทธิภาพการดึงข้อมูลของพวกเขาให้เกิดความท้าทายทางวิศวกรรมที่สำคัญ
BM25 is a bag-of-words retrieval function that ranks a set of documents based on the query terms appearing in each document, regardless of their proximity within the document.
อ้างอิง: BM25
โมเดล Reranking เป็นรูปแบบการจำแนกลำดับที่ผ่านการฝึกอบรมให้ใช้การสืบค้นและเอกสารคู่หนึ่ง
แนะนำการอ่านการดูและการดู:
การประเมินระบบ RAG จำเป็นต้องมีการทดลองและประเมินส่วนประกอบแต่ละส่วนของระบบเช่น Retriever, Generator และ Reranker
แนะนำการอ่าน:
หมายเหตุ: จากที่นี่เป็นต้นไปฉันจะละเว้นจากการตอบคำถามให้มากที่สุดเท่าที่จะทำได้และเพียงแค่เชื่อมโยงเอกสารและการอ้างอิงส่วนนี้เป็นหนึ่งในส่วนที่ซับซ้อนมากขึ้นดังนั้นจึงต้องใช้การอ่านและความเข้าใจมากมาย
เพื่อให้เข้าใจถึงความสนใจคุณจะต้องคุ้นเคยกับสถาปัตยกรรมหม้อแปลงและสถาปัตยกรรมรุ่นก่อน นี่คือแหล่งข้อมูลบางอย่างที่จะเริ่มต้น:
คอขวดหลักของการใส่ใจในตนเองคือความซับซ้อนกำลังสองที่เกี่ยวกับความยาวลำดับ เพื่อให้เข้าใจถึงข้อเสียของการตั้งใจด้วยตนเองคุณจะต้องทำความคุ้นเคยกับตัวคุณเองด้วยทางเลือกความสนใจต่อไปนี้จะช่วยให้คุณเริ่มต้นได้:
มีหลายวิธีในการเข้ารหัสข้อมูลตำแหน่งใน LLM วิธีที่พบบ่อยที่สุดคือการใช้การเข้ารหัสตำแหน่งไซน์ทัลที่เรียกว่าการเข้ารหัสตำแหน่งสัมบูรณ์ วิธีอื่น ๆ รวมถึงการเข้ารหัสตำแหน่งสัมพัทธ์และวิธีการใหม่ ๆ เช่นการฝังตำแหน่งโรตารี่ นี่คือแหล่งข้อมูลบางอย่างที่จะเริ่มต้น:
เพื่อให้เข้าใจแคช KV คุณจะต้องคุ้นเคยกับสถาปัตยกรรมหม้อแปลงและข้อ จำกัด
แนะนำการอ่าน:
การผสมผสานของผู้เชี่ยวชาญเป็นสถาปัตยกรรมประเภทหนึ่งใน LLM เพื่อทำความเข้าใจว่ามันทำงานอย่างไรคุณควรผ่านทรัพยากรต่อไปนี้ซึ่งครอบคลุมโมเดล MOE ที่โดดเด่นที่สุด: