สํารวจความท้าทายในการดึงข้อมูล - ขนาดและความแม่นยํา
การสร้างเสริมการดึงข้อมูล (RAG) ขึ้นอยู่กับการดึงข้อความที่ถูกต้องจากข้อมูลของคุณก่อนที่โมเดลจะตอบ ปัญหาสองประการจะปรากฏขึ้นเมื่อเนื้อหาของคุณเติบโตขึ้น: ขนาดและความถูกต้อง การปรับขนาด เป็นเรื่องเกี่ยวกับขนาดข้อมูลและรูปแบบการเข้าถึงของคุณที่เพิ่มขึ้น และผลลัพธ์ที่กลับมาเร็วเพียงใด ความถูกต้อง อยู่ที่ว่าผลลัพธ์เหล่านั้นตอบคําถามได้จริงหรือไม่ หากการดึงข้อมูลช้าหรือหลุดจากเป้าหมาย ประสบการณ์จะประสบปัญหาโดยไม่คํานึงถึงความแข็งแกร่งของโมเดล
Scale
ใน RAG ทุกคําถามของผู้ใช้จะทริกเกอร์การค้นหาเพื่อนบ้านที่ใกล้ที่สุดผ่านเวกเตอร์ เมื่อมีการเพิ่มแถวมากขึ้นและผู้ใช้จํานวนมากขึ้นสืบค้นข้อมูลในคราวเดียว
เก็บการดึงข้อมูลภายใน Azure Database for PostgreSQL และตัดสินใจว่าจะค้นหาและจัดอันดับผลลัพธ์ในฐานข้อมูลอย่างไร เริ่มต้นด้วย pgvector การค้นหาความคล้ายคลึงกันของเวกเตอร์ เมื่อชุดข้อมูลเพิ่มขึ้น ให้ใช้ดัชนีโดยประมาณเพื่อไม่ให้คิวรีเปรียบเทียบกับทุกแถว เพื่อปรับปรุงประสิทธิภาพ ให้ pgvector มีตัวเลือกดัชนี เช่น IVFFlat หรือ HNSW. สําหรับชุดข้อมูลขนาดใหญ่มาก ให้พิจารณาDiskANNผ่านpg_diskannส่วนขยาย ซึ่งออกแบบมาเพื่อการเรียกคืนสูง QPS (การสืบค้นต่อวินาที) สูง และเวลาแฝงต่ําในขนาดใหญ่
ความถูกต้อง
การสืบค้นแบบด่วนจะไม่ช่วยหากพวกเขาส่งคืนข้อความผิด การขาดแถวที่เกี่ยวข้องหรือจัดอันดับได้ไม่ดีจะบังคับให้โมเดลคาดเดา
ถือว่า ความถูกต้องเป็น ข้อกังวลสองขั้นตอนในฐานข้อมูล ขั้นแรก ให้สร้าง ผู้สมัครที่ดี โดยใช้ pgvector ฟังก์ชันระยะทางที่ตรงกับการฝังของคุณและดัชนีที่ปรับสมดุลการเรียกคืนและเวลาแฝงสําหรับขนาดของคุณ ประการที่สอง ปรับปรุงการสั่งซื้อเมื่อจําเป็น คุณสามารถจัดอันดับผลลัพธ์ใหม่ได้โดยตรงใน SQL โดยใช้ตัวดําเนินการเชิงความหมายใน azure_ai ส่วนขยาย เช่น azure_ai.rank สําหรับการจัดอันดับความเกี่ยวข้องตาม LLM
นอกจากนี้ยังมีตัวเร่งโซลูชัน Semantic Ranker สําหรับ Azure Database for PostgreSQL หากคุณต้องการตัวอย่างไปป์ไลน์แบบเต็มที่สร้างขึ้นจากรูปแบบนี้ ทั้งสองวิธีได้รับการออกแบบมาให้ทํางานกับ PostgreSQL เป็นระดับข้อมูลเดียว
เมื่อความสัมพันธ์ช่วยได้
บางโดเมนได้รับประโยชน์จากการสร้างแบบจําลองว่าสิ่งต่าง ๆ เชื่อมต่อกันอย่างไร ขั้นตอนกราฟสามารถปรับปรุงการดึงข้อมูลได้โดยใช้ความสัมพันธ์และสัญญาณความโดดเด่น คิวรีกราฟพร้อมใช้งานใน Azure Database for PostgreSQL ผ่านส่วนขยาย Apache AGE GraphRAG เป็นแนวทางการวิจัยของ Microsoft ที่รวมการค้นหาเวกเตอร์เข้ากับการสืบค้นกราฟเพื่อปรับปรุง ความแม่นยําในการดึงข้อมูล โดยจะดึงกราฟความรู้จากข้อมูลของคุณและใช้โครงสร้างนั้นเพื่อจัดหาบริบทที่ดีขึ้นให้กับโมเดลภาษาขนาดใหญ่
วัดและตรวจสอบ
คุณต้องสร้างกลยุทธ์การตรวจสอบที่รวบรวมเมตริกหลักและให้ข้อมูลเชิงลึกเกี่ยวกับประสิทธิภาพของคิวรี
สร้างพื้นฐานของประสิทธิภาพการสืบค้น RAG ของคุณโดยใช้:
- ที่เก็บคิวรี - บันทึกข้อความคิวรี รันไทม์ และสถิติการรอ เพื่อให้คุณสามารถดูคิวรีและแนวโน้มยอดนิยมเมื่อเวลาผ่านไป
- ข้อมูลเชิงลึกด้านประสิทธิภาพการสืบค้น - แสดงภาพข้อมูลการจัดเก็บการสืบค้นสําหรับเซิร์ฟเวอร์ที่ยืดหยุ่นเพื่อเน้นการสืบค้นที่ทํางานเป็นเวลานานและใช้ทรัพยากรจํานวนมาก
- เมตริกและเวิร์กบุ๊ก Azure Monitor - แผนภูมิระดับเซิร์ฟเวอร์และแดชบอร์ดสําหรับเวลาแฝง การเชื่อมต่อ CPU, IO และอื่นๆ
เครื่องมือเหล่านี้ช่วยคุณระบุคอขวดและส่วนที่ต้องปรับปรุงในไปป์ไลน์ RAG ของคุณ คุกกี้เหล่านี้ช่วยให้คุณตัดสินใจเกี่ยวกับประสิทธิภาพ (มาตราส่วน) แต่คุณต้องการกลยุทธ์อื่นๆ เพื่อให้มั่นใจถึง ความถูกต้องในการดึงข้อมูล
ความแม่นยําในการวัด:
แม้ว่าการวัด ความแม่นยํา จะไม่ตรงไปตรงมาเท่ากับการวัด มาตราส่วน แต่คุณสามารถใช้บทเรียนบางส่วนจากบทความศูนย์ สถาปัตยกรรม ในขั้นตอนการประเมินได้
- คําขอบันทึกและเมตริก - สําหรับทุกคําถาม ให้บันทึกข้อความคําถาม แถวที่ดึงมาจาก PostgreSQL พร้อมอันดับและระยะทาง บริบทที่แน่นอนที่ส่งไปยังโมเดล และคําตอบสุดท้ายของโมเดล
-
คํานวณสัญญาณ - ในโค้ดแอปพลิเคชันของคุณ ให้คํานวณสัญญาณง่ายๆ สามสัญญาณ:
- ความเกี่ยวข้องและการใช้งาน - วัดว่าวลีสําคัญของคําตอบปรากฏในข้อความที่ดึงมามากน้อยเพียงใด และความถี่ในการอ้างถึงหรือสะท้อนข้อความเหล่านั้น
- ความเป็นพื้นฐาน - ตรวจสอบว่าการอ้างสิทธิ์แต่ละรายการในคําตอบรองรับแถวที่ดึงมาอย่างน้อยหนึ่งแถว
- ความสมบูรณ์ - ตรวจสอบว่าส่วนหลักของคําถามครอบคลุมอยู่ในคําตอบด้วยข้อความสนับสนุนจากแถวที่ดึงมา
-
แนะนําการเปลี่ยนแปลงด้วยคะแนน - ใช้คะแนนเพื่อเป็นแนวทางในการเปลี่ยนแปลง จากนั้นเรียกใช้ชุดทดสอบขนาดเล็กเดิมอีกครั้ง:
- หากคําตอบพลาดส่วนของคําถาม ให้เพิ่ม k หรือปรับการแบ่งส่วน
- หากแถวด้านขวาไม่ปรากฏขึ้น ให้เพิ่ม
IVFFlatโพรบหรือpgvectorเพิ่มDiskANNl_value_isการตั้งค่าเพื่อให้การค้นหาพิจารณาเพื่อนบ้านมากขึ้น - หากการสั่งซื้อเป็นปัญหา ให้เพิ่มการผ่านการจัดอันดับใหม่ใน SQL โดยใช้โซลูชันการจัดอันดับความหมายสําหรับฐานข้อมูล Azure สําหรับ PostgreSQL
- เมื่อความสัมพันธ์มีความสําคัญ ให้เพิ่มขั้นตอนกราฟสั้น ๆ ด้วย Apache AGE ก่อนขั้นตอนเวกเตอร์สุดท้าย
- ติดตามแนวโน้มเมื่อเวลาผ่านไป - ตรวจสอบเพื่อยืนยันว่า ความแม่นยํา ดีขึ้น ไม่ใช่แค่ความเร็ว
เมื่อแอปพลิเคชันของคุณเติบโตขึ้น ให้ประเมินประสิทธิภาพของแอปพลิเคชันใหม่และปรับไปป์ไลน์ RAG ของคุณตามต้องการ สิ่งสําคัญคือต้องตรวจสอบทั้งความเร็วและความแม่นยําในการดึงข้อมูลเมื่อเวลาผ่านไป
ประเด็นสำคัญ
สําหรับเส้นทาง Postgres RAG คุณจะเก็บการดึงข้อมูลไว้ในฐานข้อมูล เริ่มต้นด้วย pgvectorและย้ายไปยังดัชนีที่เหมาะสมเมื่อชุดข้อมูลและการรับส่งข้อมูลเพิ่มขึ้น เพิ่ม Semantic Ranking pass ใน SQL หากจําเป็นต้องจัดลําดับให้แน่นขึ้น นํา GraphRAG มาเพิ่มขั้นตอนกราฟสั้น ๆ เมื่อความสัมพันธ์มีความหมาย ประเมินอย่างสม่ําเสมอและตรวจสอบในการผลิตเพื่อให้ระบบทํางานได้รวดเร็วและถูกต้องตามข้อมูลและการใช้งานที่เปลี่ยนแปลงไป