- เป็นบทความที่นำเสนอขั้นตอนการสร้าง แอปพลิเคชัน RAG บน SQL โดยใช้ชุดข้อมูล Harry Potter ที่ถูกอัปโหลดอย่างผิดกฎหมายบน Kaggle แต่ถูกลบไปแล้ว
- Azure SQL และ Microsoft Fabric SQL DB รองรับ การค้นหาเวกเตอร์แบบเนทีฟ และสามารถจัดการ Vector Store ได้ด้วย
langchain-sqlserver
- วางโฟลว์ตั้งแต่โหลดจาก Azure Blob Storage, แบ่งข้อความเป็นชังก์, สร้าง Azure OpenAI embeddings แล้ว จัดเก็บเวกเตอร์ลงใน SQL
- ใช้การค้นหาความคล้ายคลึงของเวกเตอร์และตัวกรองเมทาดาทาเพื่อสร้าง ระบบถาม-ตอบที่แม่นยำ
- ขยายต่อจาก Vector Store เดิมไปสู่ฟีเจอร์ สร้างแฟนฟิกชัน บน GPT4o ได้อีกด้วย
- ลิงก์ Archive.is
การรองรับเวกเตอร์แบบเนทีฟของ Azure SQL และการผสานรวมกับ LangChain
- Azure SQL และ Microsoft Fabric SQL DB เปิดพรีวิวสาธารณะของ ฟังก์ชันค้นหาเวกเตอร์แบบเนทีฟ
- มีการเผยแพร่แพ็กเกจ
langchain-sqlserver ทำให้สามารถจัดการ SQL Server เป็น LangChain Vector Store ได้
- มีให้ติดตั้งและมีตัวอย่างโค้ดผ่านที่เก็บบน PyPI และ GitHub
- เมื่อรวม Azure SQL DB, LangChain และ LLM เข้าด้วยกัน ก็สามารถ เพิ่มความสามารถ Generative AI ได้ด้วยโค้ดเพียงไม่กี่บรรทัด
การจัดเตรียมชุดข้อมูลตัวอย่าง
- ใช้ชุดข้อมูลข้อความจาก Harry Potter ทั้ง 7 เล่มที่มีบน Kaggle
- มีไฟล์
.txt ทั้งหมด 7 ไฟล์
- ในเดโมใช้เพียงเล่ม 1 Harry Potter and the Sorcerer’s Stone
- ใช้ชุดข้อมูลที่ผู้คนคุ้นเคยเพื่อสร้าง ตัวอย่างที่เข้าใจง่าย
ขั้นตอนการสร้างแอปพลิเคชันตัวอย่าง
1. ติดตั้งแพ็กเกจ langchain-sqlserver
- ติดตั้งแพ็กเกจสำหรับการผสานรวมด้วยคำสั่ง
pip install langchain-sqlserver==0.1.1
- เปิดใช้งานฟังก์ชัน Vector Store บน SQL
2. โหลดข้อมูลจาก Azure Blob Storage และแบ่งเป็นชังก์
- บันทึกไฟล์ข้อความ Harry Potter ลงใน Azure Blob Storage แล้วโหลดออกมา
- ใช้ ความสามารถผสานรวม AzureBlobStorage ของ LangChain
- ใช้
langchain-text-splitter แบ่งข้อความยาวออกเป็นชังก์ขนาดเล็ก
- เพื่อรองรับข้อจำกัดจำนวน input token ของ Azure OpenAI embeddings
3. กำหนด Embeddings และ Chat Completion
- ใช้ Azure OpenAI เพื่อ สร้าง text embeddings สำหรับแต่ละชังก์
- สามารถสลับไปใช้โมเดล embeddings อื่น ๆ ที่ LangChain รองรับได้
- เตรียมการประมวลผลถาม-ตอบผ่านการตั้งค่า Chat Completion
4. เริ่มต้น Vector Store และแทรกเอกสาร
- เริ่มต้น Vector Store พร้อมกับ AzureOpenAI embeddings
- ใช้ฟังก์ชัน
add_documents เพื่อบันทึกเอกสารและ embeddings ลงใน Azure SQL
- สร้างและจัดเก็บเวกเตอร์ได้ด้วยโค้ดไม่มาก
5. ทำการค้นหาความคล้ายคลึง
- ใช้ฟังก์ชัน
similarity_search_with_score เพื่อค้นหาความคล้ายคลึงของเวกเตอร์
- รองรับตัวกรองเมทาดาทา
- สามารถจำกัดขอบเขตการค้นหาตามคุณสมบัติเมทาดาทาเฉพาะได้
Use Case 1: สร้างระบบถาม-ตอบ
- สร้าง ระบบถาม-ตอบเนื้อเรื่อง ด้วย SQL Vector Store และ LangChain
- เมื่อมีคำถามจากผู้ใช้ จะค้นหาเอกสารที่เกี่ยวข้องสูงสุด 10 รายการแล้วสร้างคำตอบ
- สร้าง retriever จาก
vector_store
- ใช้
create_stuff_documents_chain เพื่อประกอบ chain สำหรับถาม-ตอบ
- ใช้
ChatPromptTemplate เพื่อกำหนดรูปแบบคำตอบอย่างมีโครงสร้าง
- เมื่อใช้
create_retrieval_chain จะส่งคืนเอกสารที่ค้นพบพร้อมกันในคีย์ "context"
- รองรับ การแสดงแหล่งที่มา ที่ใช้ในการสร้างคำตอบ
Use Case 2: สร้างแฟนฟิกชัน Harry Potter
- สร้างฟีเจอร์ AI สร้างแฟนฟิกชันใหม่ บนพื้นฐานของ Vector Store
- เมื่อผู้ใช้ป้อนพรอมป์ต์ จะค้นหาย่อหน้าที่เกี่ยวข้อง
- ค้นหาความใกล้เคียงของบริบทจาก embeddings ที่เก็บไว้ใน SQL Vector Store
- รวบรวมย่อหน้าที่ค้นพบเป็นสตริงเดียวเพื่อใช้เป็นคอนเท็กซ์สำหรับอินพุตของโมเดล
- ส่งทั้งคอนเท็กซ์และพรอมป์ต์ของผู้ใช้ไปยังโมเดล GPT4o
- เพื่อสร้างเรื่องราวใหม่ที่สะท้อนองค์ประกอบจากบริบทเดิม
- แสดงผลลัพธ์ที่สร้างขึ้นพร้อมข้อมูลแหล่งที่มาของเวกเตอร์ที่อ้างอิง
สถานการณ์การใช้งานแบบบูรณาการ
- การรวมระบบถาม-ตอบกับฟีเจอร์สร้างแฟนฟิกชันช่วยมอบ ประสบการณ์การอ่านแบบโต้ตอบ
- ใช้ระบบถาม-ตอบเมื่อจำเป็นต้องทำความเข้าใจเนื้อหาในหนังสือ
- สามารถขยายฉากเฉพาะหรือสร้างตอนจบทางเลือกได้
ตัวอย่างโค้ดและทรัพยากร
- มีที่เก็บ GitHub ของโน้ตบุ๊ก LangChain-SQL-RAG
- สามารถส่งคำขอปรับปรุงฟีเจอร์ได้ผ่านพอร์ทัล feedback ของ Azure SQL และ SQL Server
1 ความคิดเห็น
ความคิดเห็นบน Hacker News
เหตุการณ์ครั้งนี้ของ Microsoft ดูเหมือนจะแสดงให้เห็นถึง ความล้มเหลวของกระบวนการ ที่ลึกกว่าแค่ ปัญหาลิขสิทธิ์
ถ้าแม้แต่เอกสารยังไม่ถูกตรวจทาน ก็อดสงสัยไม่ได้ว่าโค้ดใหม่ ๆ ได้รับการรีวิวอย่างเหมาะสมแค่ไหน
อยากถามฝ่ายบริหารว่า ระหว่างความปลอดภัย คุณภาพ และนวัตกรรม AI ซึ่งเป็นสามเสาหลักนั้น จะเลือกอะไร
(Scott Hanselman ผมชอบคุณนะ แต่เรื่องนี้อย่าตอบเองเลย ช่วยส่งต่อให้ฝ่ายผู้นำด้วย)
ตอนนั้นสามารถโพสต์บทความส่วนตัวได้โดยไม่ต้องผ่านขั้นตอนอนุมัติ ทำให้บล็อกเป็นพื้นที่ที่ เป็นธรรมชาติและจริงใจ มากกว่า
เหตุการณ์นี้ดูเหมือนเป็นแค่การตัดสินใจผิดพลาดของใครสักคน และการเอาบทความลงก็ดูเป็นการจัดการที่เหมาะสมแล้ว
แต่สิ่งที่สำคัญกว่าคือ ทีมของผู้เขียนคนนั้นกำลัง ทำให้การละเมิดลิขสิทธิ์เพื่อฝึก AI ดูเป็นเรื่องชอบธรรม อยู่หรือไม่
ดูแล้วคงไม่ใช่แค่ทนายภายในองค์กร แต่คนนอกก็น่าจะเข้ามาตรวจสอบเรื่องนี้ด้วย
โค้ดมีความเสี่ยงก่อปัญหาร้ายแรงจากบั๊ก จึงมี ขั้นตอนรีวิวอย่างเป็นทางการ อยู่แล้ว แต่
เอกสารไม่ได้ส่งผลโดยตรงต่อการทำงานของซอฟต์แวร์ จึงไม่ได้ใช้ความเข้มงวดระดับเดียวกัน
การที่เอกสารไม่ได้รับการตรวจทาน ไม่ได้แปลว่าโค้ดก็ไม่ได้รับการตรวจทาน
ในองค์กรขนาดใหญ่ แต่ละแผนกมี ระดับการตรวจสอบที่ต่างกัน และโค้ดก็มักถูกควบคุมเข้มงวดกว่าเอกสารมาก
แทบจะคัดลอกคำตอบจาก Stack Overflow มาเกือบทั้งดุ้น และตอนที่เจอมันตอนค้นหาข้อความ error
ก็ไม่ได้โกรธเท่าไร แค่ ผิดหวัง
บทความบล็อกของ Microsoft ลิงก์ไปยัง หน้าชุดข้อมูล Harry Potter บน Kaggle
หน้านั้นอ้างว่าเป็น CC0 หรือ สาธารณสมบัติ แต่เห็นได้ชัดว่ามีปัญหาเรื่องลิขสิทธิ์
แถมบทความนั้นออนไลน์มาตั้งแต่เดือนพฤศจิกายน 2024 และที่น่าตกใจก็คือยังไม่ถูกลบออก
พอลองกดใช้ฟังก์ชัน “Report Dataset” เพื่อรายงาน ก็ถูกรีไดเรกต์ไปยัง หน้ารายงานลิขสิทธิ์ของ Google
แต่กลับถูกปฏิเสธด้วยข้อความว่า “หากคุณไม่ใช่เจ้าของลิขสิทธิ์หรือตัวแทน คุณจะรายงานไม่ได้”
เป็นสถานการณ์ที่ ตลกร้ายสุด ๆ ชุดข้อมูลนั้นชัดเจนว่าเป็นของขโมย
ที่จริงคนที่น่าจะต้องรับผิดมากกว่าคือ คนที่อัปโหลดด้วยไลเซนส์ผิด
แต่พอเห็นชื่อ “Harry Potter” ใครก็รู้ว่าไม่น่าใช่สาธารณสมบัติ
ในแง่สามัญสำนึก Microsoft ก็คงเลี่ยงความรับผิดได้ยาก
ในที่สุด Microsoft ก็ลบหน้านั้นออก
แต่ยังมี สำเนาที่เก็บไว้บน archive.is
เป็นตัวอย่างชื่อ “สร้างแอป RAG ใน 5 นาที” โดยใช้ Azure และ GPT
น่าผิดหวังที่คนยังใช้เว็บนั้นอยู่
ภาพ thumbnail ที่สร้างด้วย AI ของบล็อกนั้น (ลิงก์รูปภาพ)
เป็นภาพ Harry ตอนเด็กกับเพื่อนยืนอยู่หน้าโลโก้ Microsoft น่าตกใจมากจริง ๆ
ถ้าเฟรมกว้างกว่านี้หน่อย ก็อาจจะไม่มีส่วนเชื่อมระหว่างตู้รถไฟเลยก็ได้
ผมไม่ชอบ Microsoft ก็จริง แต่การเรียกเหตุการณ์นี้ว่า “คู่มือเถื่อน” ก็ดูเกินไป
นี่เป็นแค่ ตัวอย่างเพื่อการวิจัย ไม่ใช่การรวมเข้าเป็นผลิตภัณฑ์
ปฏิกิริยาที่เกินเลยเรื่องการผูกขาดลิขสิทธิ์และ fair use ก็ดูน่าอายเหมือนกัน
ต่อให้เป็นงานวิจัย ก็มีศักยภาพมากพอที่จะจ่ายค่าตอบแทนอย่างเหมาะสมสำหรับข้อความที่นำมาใช้
บริษัท LLM เชิงพาณิชย์ส่วนใหญ่ก็ทำคล้าย ๆ กัน
เท่ากับว่าบริษัทออกคู่มือบนบล็อกทางการให้ทำสิ่งที่ถ้าเป็นคนทั่วไปทำจะผิดกฎหมาย
Anthropic ก็เคยมีกรณียอมความคดีละเมิดลิขสิทธิ์เป็นเงิน 1.5 พันล้านดอลลาร์
ผมเองก็ไม่ชอบระบบลิขสิทธิ์ปัจจุบัน แต่จะยอมให้มี คนละมาตรฐานระหว่างบริษัทกับปัจเจกชน ไม่ได้
นี่ไม่ใช่คู่มือเถื่อน แต่เป็นบทความที่อธิบายแค่ว่า จะนำชุดข้อมูลเข้า SQL อย่างไร
ถ้าจะโทษ ใครที่ควรรับผิดก็คือ Kaggle หรือ Shubham Maindola ผู้เป็นคนอัปโหลดมากกว่า
คำอธิบายแหล่งที่มาของข้อมูลที่ว่า “แปลง Harry Potter ฉบับ e-book เป็น txt” ฟังดูหลอนมาก
ทั้งที่เป็นแบบนั้น คะแนนบน Kaggle ยังได้ถึง 10.0 ก็น่าตกใจ
บทความนี้ถูกโพสต์ในปี 2024 และ Kaggle ก็ยังโฮสต์ข้อมูลอยู่
เลยอดสงสัยไม่ได้ว่าทำไมฝั่ง Rowling ยังไม่ลงมือทำอะไร
ยอดดาวน์โหลดบน Kaggle มีราว 10,000 ครั้ง เลยอาจยังไม่เป็นที่จับตา
แต่เรื่องนี้ชัดเจนว่าข้ามเส้นไปแล้ว
ก่อนหน้านี้ก็เคยมีกรณี การลอกผลงานที่เกี่ยวกับ AI ของ Microsoft
ตอนนั้นก็มีเสียงวิจารณ์ว่ากระบวนการตรวจสอบภายในแทบไม่มีเลย
เธรดที่เกี่ยวข้อง: “Microsoft morged my diagram”
แต่ตอนนี้เมื่อมีโมเดลเชิงพาณิชย์เกิดขึ้น สถานการณ์ก็เปลี่ยนไปอย่างสิ้นเชิง
ก่อนหน้านี้ก็เคยมีการเผยแพร่ชุดข้อมูลอย่าง Books3 ที่รวมหนังสือลิขสิทธิ์หลายแสนเล่ม
หน้านี้ถูกลบไปแล้ว แต่ยังมี สำเนาในเว็บอาร์ไคฟ์ เหลืออยู่
น่ากังวลที่ คนที่ขาดจริยธรรม กำลังเป็นผู้สร้างเทคโนโลยีอนาคต
ถ้าคนที่ผ่านกระบวนการคัดเลือกอันเข้มงวดขนาดนั้นยังตัดสินใจแบบนี้ได้
ก็อดสงสัยไม่ได้ว่าการตัดสินใจที่สำคัญจริง ๆ จะอันตรายแค่ไหน
แต่นั่นก็ไม่ใช่ข้ออ้างให้พ้นผิดได้
ตอนนี้เหมือนเราอยู่ในโลกที่ ทรัพย์สินทางปัญญาไร้ความหมายไปแล้ว
เลยมีคนแซวว่าอยากหาคนลงทุนใน “สตาร์ตอัปนิยายที่ AI พ่น Harry Potter ออกมาตรง ๆ”
จนถึงตอนนี้ สิ่งที่ AI ทำได้ดีสม่ำเสมอที่สุดก็คือเรื่องตลก
พร้อมเสียดสีว่าความคล้ายกับผลิตภัณฑ์เดิมนั้น “เป็นเรื่องบังเอิญล้วน ๆ”
ถ้าเป็นคนธรรมดาทำ ก็ยังเสี่ยงหมดตัวและติดคุกเหมือนเดิม
จากทิศทางของ Microsoft ในตอนนี้ เหตุการณ์แบบนี้ไม่ได้น่าแปลกใจเลย
Microsoft ในปี 2026 ให้ความรู้สึกราวกับว่า กฎหมายลิขสิทธิ์และทรัพย์สินทางปัญญาใช้บังคับไม่ได้อีกต่อไป