นั่งลงกับระบบ RAG แบบแบนที่ทำงานใน production มาเป็นปีแล้วลองถามคำถามสี่ข้อ "ทำไมถึงพูดแบบนั้น?" โมเดลตอบกลับมาอย่างมั่นใจเกี่ยวกับวันต่ออายุสัญญาของลูกค้า แต่เส้นทางย้อนกลับไปยังแหล่งที่มาของข้อกำหนดนั้นไม่มีอยู่จริง "ยืนยันข้อมูลนี้อีกครั้ง — แหล่งที่มาเปลี่ยนไปแล้ว" สัญญาถูกแก้ไขเมื่อสัปดาห์ที่แล้ว ข้อเท็จจริงทุกอย่างที่ได้มาจากสัญญานั้นน่าสงสัย คุณไม่สามารถค้นหามันได้เพราะระบบไม่รู้ว่ามันมาจากเอกสารไหน "ตัดสินใจระหว่างข้อเท็จจริงที่ขัดแย้งกันสองข้อนี้" ข้อหนึ่งบอกว่า Alex ทำงานที่ Google อีกข้อบอกว่าทำงานที่ Stripe ไม่มีข้อใดมีคะแนนความเชื่อมั่นหรือเวลาประทับของแหล่งที่มา ความใหม่ของการเขียนไม่เกี่ยวข้องกับความใหม่ของหลักฐาน "ระบุที่มาของภาพหลอนนี้" โมเดลบอกว่าประชุมวันพฤหัสบดี แต่ไม่มีการประชุมวันพฤหัสบดี คุณไม่สามารถบอกได้ว่า LLM สร้างวันที่ขึ้นมาเองหรือว่าข้อมูลที่ไม่ดีในหน่วยความจำทำให้เข้าใจผิด
ความล้มเหลวทั้งสี่นี้มีสาเหตุเดียวกัน พวกมันต่างก็ขาดคอลัมน์ข้อมูล ไม่ว่าจะเป็นตัวระบุแหล่งที่มา เวลาประทับที่บันทึกข้อมูล คะแนนความเชื่อมั่น หรือบันทึกการอ้างอิงที่ตอบกลับ แต่ละอย่างใช้พื้นที่เพียงไม่กี่ไบต์ตอนเขียนข้อมูล แต่ราคาของการไม่มีมันนั้นไร้ขอบเขต ทุกข้อความไม่สามารถตรวจสอบได้ ทุกความขัดแย้งไม่สามารถแก้ไขได้ ทุกภาพหลอนไม่สามารถ追溯ได้
จาก 19 ระบบที่พบรูปแบบที่สอดคล้องกัน ระบบที่แข็งแกร่งที่สุดปฏิบัติต่อที่มาของข้อมูล (provenance) เหมือนกับที่ศาลปฏิบัติต่อหลักฐาน — ทุกข้อความต้องมาพร้อมกับห่วงโซ่การ custody ที่ไม่ขาดตอน มิฉะนั้นจะไม่ถูกนำเข้ามาเลย ระบบที่อ่อนแอที่สุดไม่มีที่มาของข้อมูลเลย และต้องจ่ายค่าเสียหายทุกครั้งที่มีอะไรผิดพลาดใน production บทความนี้จะพาไปดูหกระดับของ provenance ที่คลังข้อมูลได้เผยให้เห็น สามระดับของวุฒิภาวะในการนำไปใช้งานที่แยกพวกมันออกจากกัน และค่าใช้จ่ายที่แท้จริงของการสร้างสิ่งนี้ให้ถูกต้องตั้งแต่เริ่มต้น
หกระดับ วินัยเดียว
เมื่ออ่านข้อมูลจาก 19 ระบบติดต่อกัน หกระดับของ provenance ที่แตกต่างกันก็แยกออกมา พวกมันไม่ใช่ลำดับชั้น แต่เป็นอิสระต่อกัน ระบบหนึ่งอาจมี source provenance โดยไม่มี causal provenance หรือมี versioning โดยไม่มี confidence scoring ระบบที่แข็งแกร่งที่สุดครอบคลุมทั้งหกระดับ ระบบที่อ่อนแอที่สุดไม่มีเลยสักระดับ
Identity ตอบคำถาม "ข้อเท็จจริงชิ้นไหนกันแน่?" OpenContext สร้าง UUID สำหรับทุกชิ้นส่วนของบริบทตอนที่นำเข้า และเปิดเผยมันเป็นรูปแบบการอ้างอิงที่ agent สามารถใช้โดยตรงในคำตอบ ตัวระบุนี้คงอยู่แม้มีการเปลี่ยนชื่อ ย้าย หรือจัดโครงสร้างใหม่ เพราะมันผูกกับเนื้อหา ไม่ใช่เส้นทาง (path) mem9 มีรหัสหน่วยความจำที่เสถียรในทุกแถว พร้อมตัวนับเวอร์ชันที่ชัดเจนและการป้องกัน concurrency แบบ If-Match หากไม่มี identity provenance คุณจะไม่สามารถแม้แต่จะระบุชื่อสิ่งที่คุณกำลังพูดถึงเมื่อเกิดปัญหา
Source ตอบคำถาม "มันมาจากไหน?" Hindsight บันทึกประเภทของแหล่งที่มาและตัวระบุในทุกการสังเกตการณ์ ดังนั้นระบบสามารถตอบได้ว่าบทสนทนาหรือเอกสารใดที่สร้างข้อเท็จจริงนั้น mem9 เก็บ source, agent ID, และ session ID ในทุกแถว Supermemory เก็บรหัสเอกสารควบคู่กับหน่วยความจำ หากไม่มี source provenance คุณจะไม่สามารถอัปเดตแบบ cascade เมื่อแหล่งที่มาเปลี่ยนไป เพราะคุณไม่รู้ว่าข้อเท็จจริงไหนขึ้นอยู่กับแหล่งที่มานั้น
Causal ตอบคำถาม "ขั้นตอนของ agent ใดที่ใช้ข้อมูลนี้?" Hindsight บันทึกทุกข้อเท็จจริงที่ดึงมาและนำไปใช้ในชั้นการสังเกตการณ์พร้อมบริบทการดึงข้อมูลที่สมบูรณ์ — retriever ไหนที่แสดงข้อมูลนั้น, อันดับที่ได้, และ agent ใช้ข้อมูลนั้นจริงหรือไม่ Moraine ปฏิบัติต่อทุกขั้นตอนของ trace เป็น record provenance ของตัวเอง ทำให้การทำงานทั้งหมดของ agent สามารถกู้คืนได้เป็นลำดับของเหตุการณ์ที่สามารถระบุแหล่งที่มาได้ หากไม่มี causal provenance คุณจะไม่สามารถแยกแยะระหว่าง "ระบบดึงข้อเท็จจริงนี้มา" กับ "agent ใช้ข้อเท็จจริงนี้เพื่อสร้างคำตอบนั้น"
Capture confidence ตอบคำถาม "เราแน่ใจแค่ไหนตอนที่บันทึกมัน?" Graphify ทำเครื่องหมายทุกขอบใน knowledge graph ด้วยความมั่นใจในการบันทึกสามระดับ: CONFIRMED สำหรับการดึงข้อมูลแบบกำหนดได้ (deterministic), LIKELY สำหรับการอนุมานของ LLM ที่มีความมั่นใจสูง, และ AMBIGUOUS สำหรับข้อความที่ไม่แน่นอน ขอบ AMBIGUOUS จะแสดงเป็น "ช่องว่างความรู้" สำหรับให้มนุษย์ตรวจสอบ แทนที่จะถูกปฏิบัติอย่างเงียบๆ ว่าเป็นข้อเท็จจริง Hindsight มีคะแนนความมั่นใจในทุกการสังเกตการณ์ที่ลดลงเมื่อเวลาผ่านไปตามวงจรความสดใหม่ — การสังเกตการณ์ที่สดใหม่ได้รับการเชื่อถือ ส่วนที่เก่าจะถูกลดน้ำหนักหรือยกเลิก mem9 ทำงานตรวจจับรายการซ้ำใกล้เคียงในโหมดเงียบก่อน โดยบันทึกคะแนนโดยไม่ลงมือทำจนกว่าวิศวกรจะปรับเทียบเกณฑ์จากข้อมูลจริง หากไม่มี capture confidence ข้อเท็จจริงที่ไม่แน่นอนและข้อเท็จจริงที่แน่นอนจะถูกดึงมาด้วยน้ำหนักเท่ากัน และ agent ไม่สามารถแยกแยะระหว่างข้อความที่มั่นคงกับการเดาที่มีหลักฐาน
Versioned ตอบคำถาม "เราเชื่ออะไรก่อนหน้านี้?" Supermemory ปฏิบัติต่อหน่วยความจำเป็น DAG ที่มีเวอร์ชันพร้อมขอบแบบมีประเภท — อัปเดต, ขยาย, อนุพันธ์ — ทำให้ทุกความเชื่อมีประวัติการ commit mem9 แยกเส้นทางการเขียน: การแก้ไขในที่ (in-place mutation) สำหรับการแก้ไขโดยมนุษย์, และการ append-and-archive สำหรับการเขียนใหม่ที่ขับเคลื่อนโดย LLM ซึ่งเนื้อหาใหม่แทนที่เนื้อหาเก่าทางความหมาย Tolaria ให้ Git จัดการประวัติเวอร์ชันทั้งหมด โดยถือว่า diff หนึ่งบรรทัดเป็นสิ่งประดิษฐ์ที่ผู้ใช้เห็นโดยตรง หากไม่มี versioned provenance คุณจะไม่สามารถย้อนกลับไปดูว่าระบบเชื่ออะไรในวันอังคาร เพราะความเชื่อเก่าถูกลบแทนที่จะถูกเก็บถาวร
Reciprocal ตอบคำถาม "ข้อเท็จจริงอื่นใดที่มีต้นกำเนิดเดียวกัน?" llm-wiki ให้น้ำหนักการทับซ้อนของแหล่งที่มาเหนือกว่าการเชื่อมโยงโดยตรงในกราฟความเกี่ยวข้องสี่สัญญาณ — สองหน้าที่มาจากเอกสารดิบเดียวกันจะถือว่ามีความเกี่ยวข้องกันมากกว่าสองหน้าที่มี wikilink โดยตรง เพราะ LLM เชื่อมโยงข้ามไม่น่าเชื่อถือ แต่ข้อมูลส่วนต้นของแหล่งที่มาถูกดูแลโดยกลไก EdgeQuake สะสมรหัสแหล่งที่มาบน entity และความสัมพันธ์ทั่วทั้งคลังข้อมูล ดังนั้นการกล่าวถึง entity เดียวกันซ้ำๆ จากแหล่งที่มาที่แตกต่างกันจะเพิ่มน้ำหนัก provenance ของมัน second-brain เก็บแหล่งที่เป็นส่วนหนึ่งของคีย์ผสมของดัชนีคำศัพท์ ทำให้เอกสารหนึ่งสามารถถูกจัดทำดัชนีจากหลาย pipeline ได้อย่างอิสระ หากไม่มี reciprocal provenance คุณจะไม่สามารถตอบ "แสดงทุกอย่างในระบบนี้ที่มาจากการสนทนาเดียวกัน" หรือ "เราเรียนรู้อะไรอีกจากเอกสารนั้น?"
ทั้งหกระดับเป็นอิสระต่อกัน แต่เสริมซึ่งกันและกัน Source provenance ไร้ประโยชน์หากไม่มี identity (คุณต้องระบุชื่อข้อเท็จจริงก่อนจึงจะสามารถ追踪ได้) Versioning อ่อนแอกว่าหากไม่มี confidence (คุณรู้ลำดับการแก้ไขแต่ไม่รู้ว่าระบบแน่ใจแค่ไหนเกี่ยวกับแต่ละครั้ง) คำถาม reciprocal ขึ้นอยู่กับการมี source ก่อน ระบบที่ครอบคลุมทั้งหกคือระบบที่หน่วยความจำไม่เน่าเปื่อยอย่างเงียบๆ
สามระดับวุฒิภาวะในการนำไปใช้งาน
คลังข้อมูลแบ่งออกเป็นสามระดับตามที่มาของข้อมูลอาศัยอยู่และสามารถทำอะไรได้ในเวลาอ่าน
ระดับ 1 คือ RAG ที่ไม่มี provenance เป็นจุดเริ่มต้นของทีมส่วนใหญ่ ที่เก็บเวกเตอร์แบบแบนที่มีเนื้อหาและ embedding ไม่มีคอลัมน์แหล่งที่มา ไม่มีคะแนนความมั่นใจ ไม่มีประวัติเวอร์ชัน เมื่อดึงข้อเท็จจริงมา คุณจะได้ข้อความและคะแนนความคล้ายคลึง คุณไม่สามารถ追踪ว่ามันมาจากไหน ระบบแน่ใจแค่ไหนเกี่ยวกับมัน หรือถูกแทนที่หรือยัง ทุกระบบที่เริ่มต้นที่นี่ได้เคลื่อนไปสู่ระดับ 2 เมื่อเวลาผ่านไป
ระดับ 2 มี provenance อยู่ในแถว Source ID, confidence, version — ทั้งหมดมีเป็นคอลัมน์ควบคู่กับข้อเท็จจริง mem9 อยู่ที่นี่ด้วย source, agent ID, session ID, และ version ในทุกแถว DAG ที่มีเวอร์ชันของ Supermemory เป็นโครงสร้างระดับ 2 ความมั่นใจขอบสามระดับของ Graphify เป็นวินัยระดับ 2 Provenance พร้อมใช้งานสำหรับการค้นหา แต่ไม่ได้ตกแต่งผลการดึงข้อมูลโดยอัตโนมัติ คุณต้องเขียน query ที่ใช้มัน
ระดับ 3 ตกแต่งผลลัพธ์เวลาอ่านด้วยบริบท provenance โดยที่ผู้เรียกไม่ต้องขอ Hindsight คือข้อมูลอ้างอิง — ทุกข้อเท็จจริงที่ดึงมาจะมาพร้อมกับประเภทแหล่งที่มา คะแนนความมั่นใจ สถานะความสดใหม่ และอันดับต่อ retriever ที่แนบมาแล้ว Agent ที่ใช้ผลลัพธ์จะเห็น provenance เป็นส่วนหนึ่งของข้อเท็จจริง ไม่ใช่การค้นหาแยกต่างหาก การตกแต่ง source-turn ของ mem9 อยู่กึ่งกลางระหว่างระดับ 2 และระดับ 3 โดยเพิ่มบริบทเวลาอ่านลงบน schema ระดับ 2
การย้ายเป็นทางเดียว ไม่มีระบบใดเริ่มต้นที่ระดับ 3 แล้วตัดสินใจลบวินัย provenance คอลัมน์ต่างๆ จะพิสูจน์คุณค่าทันทีที่มีอยู่ หากคุณกำลังออกแบบระบบหน่วยความจำในวันนี้ คำถามไม่ใช่ "ฉันต้องการ provenance หรือไม่?" แต่เป็น "ฉันอยากเริ่มต้นที่ระดับไหน โดยรู้ว่าทุกระดับที่อยู่เหนือระดับที่ฉันเลือกนั้นยากที่จะไปถึงในภายหลังกว่าจะฝังไว้ตั้งแต่ตอนนี้?"
กรณีตัวอย่าง: คำนวณแล้วทิ้ง
Understand-Anything แสดงให้เห็นว่าเกิดอะไรขึ้นเมื่อพื้นฐานสำหรับความมั่นใจมีอยู่ แต่คอลัมน์ที่บันทึกมันไม่มี ระบบแยกแยะขอบที่กำหนดได้ (แก้ไขโดย project scanner จากไฟล์ต้นฉบับ) ออกจากขอบที่อนุมาน (เดาโดย LLM ระหว่างการวิเคราะห์ความหมาย) ข้อมูลนั้นมีอยู่จริงและมีความหมาย — ขอบการ import โครงสร้างควรได้รับความมั่นใจสูงกว่าการอนุมานที่ไม่ใช่โค้ด แต่ทั้งคู่ถูกเก็บเป็นน้ำหนัก 0.7 เท่ากันในกราฟ สัญญาณความมั่นใจถูกคำนวณตอนเขียนและทิ้งก่อนการคงอยู่
การเพิ่มฟิลด์ความมั่นใจจะเป็นการเปลี่ยนแปลงเล็กน้อยที่ให้ผลตอบแทนด้านคุณภาพข้อมูลสูง ระบบรู้อยู่แล้วว่าขอบไหนแน่นอนและขอบไหนเป็นการเดา มันแค่ไม่ได้บันทึกความแตกต่างในที่ที่สำคัญ — ในแถวที่จะถูกดึงมาใช้ภายหลัง เมื่อ agent ต้องแยกแยะระหว่างพวกมัน รูปแบบนี้ปรากฏในหลายระบบในคลังข้อมูล: ข้อมูลพร้อมใช้งานตอนเขียน ราคาถูกที่จะบันทึก แล้วก็หายไปเพราะไม่มีใครเพิ่มคอลัมน์
ค่าใช้จ่ายที่แท้จริงของการสร้างให้ถูกต้อง
Provenance ใช้พื้นที่ไม่กี่ไบต์ Source ID, คะแนนความมั่นใจ, ตัวนับเวอร์ชัน — แต่ละอย่างเพิ่มเพียงไม่กี่ฟิลด์ต่อแถว ในระดับใหญ่สิ่งนั้นสำคัญ แต่มันสำคัญน้อยกว่าค่าใช้จ่ายของการไม่มีมันเมื่อมีอะไรผิดพลาดใน production และคุณไม่สามารถ追踪ว่าทำไมระบบถึงให้คำตอบที่ผิด
ค่าใช้จ่ายในการคำนวณต่ำกว่าที่คาดไว้ การให้คะแนนความมั่นใจโดยทั่วไปต้องใช้การเรียก LLM เพิ่มอีกหนึ่งครั้งตอนเขียน (หรือ heuristic แบบกำหนดได้สำหรับข้อเท็จจริงเชิงโครงสร้าง) ซึ่งถูกกระจายไปทั่วทุกการอ่านต่อมา การติดตามแหล่งที่มาไม่มีค่าใช้จ่ายนอกจากการบันทึกตัวระบุที่มีอยู่แล้ว การจัดเวอร์ชันมีค่าใช้จ่ายแค่คอลัมน์พิเศษหนึ่งคอลัมน์หรือการ append หนึ่งครั้งต่อการเขียน ไม่ใช่ snapshot ทั้งหมด ชั้นการสังเกตการณ์ของ Hindsight เพิ่มพื้นที่เก็บข้อมูลตามสัดส่วนของจำนวนข้อเท็จจริงที่ดึงมาและนำไปใช้ แต่บันทึกเฉพาะสิ่งที่ agent ใช้จริง ไม่ใช่ทุกสิ่งที่เห็น
ค่าใช้จ่ายในการดำเนินงานคือคำถามที่แท้จริง การตกแต่งระดับ 3 หมายถึงข้อมูลมากขึ้นที่ไหลในการดึงข้อมูลแต่ละครั้ง ซึ่งเพิ่มการใช้ context window และ latency ของการตอบสนองเล็กน้อย ระบบที่จัดส่งสิ่งนี้จัดการโดยการตกแต่งให้สั้นกระชับ — enum ประเภทแหล่งที่มา, float ความมั่นใจ, สถานะความสดใหม่ — แทนที่จะเป็นต้นไม้ provenance แบบเต็ม Agent ได้รับเพียงพอที่จะแยกแยะโดยไม่จมอยู่กับ metadata
สิ่งที่ระบบที่แข็งแกร่งที่สุดมีร่วมกัน
ตัวอย่างที่ดีที่สุดในคลังข้อมูลสมควรถูกกล่าวซ้ำเพราะไม่มีสองระบบใดที่แก้ปัญหาในส่วนเดียวกัน:
OpenContext สร้าง UUID ที่คงอยู่แม้มีการจัดระเบียบระบบไฟล์ และเปิดเผยมันเป็นรูปแบบการอ้างอิงที่ agent สามารถใช้โดยตรง mem9 เก็บ source, agent ID, session ID ในทุกแถว, version ในทุกการอัปเดต, และตกแต่งผลการค้นหาด้วยบริบท source-turn ที่ถูกควบคุมโดยงบประมาณที่ชัดเจน Supermemory ปฏิบัติต่อหน่วยความจำเป็น DAG ที่มีเวอร์ชันพร้อมขอบแบบมีประเภท ทำให้ทุกความเชื่อมีประวัติ commit Hindsight บันทึกทุกข้อเท็จจริงที่ดึงมาและนำไปใช้ในชั้นการสังเกตการณ์พร้อม source provenance ที่สมบูรณ์ ประวัติวิวัฒนาการ และอันดับต่อ retriever Graphify ทำเครื่องหมายทุกขอบด้วยความมั่นใจในการบันทึกสามระดับ โดยแสดงขอบที่ไม่แน่นอนให้มนุษย์ตรวจสอบแทนที่จะปฏิบัติว่าเป็นข้อเท็จจริง
ข้อสังเกตที่รวมกันนั้นชัดเจน: provenance ไม่ใช่ metadata แต่เป็นส่วนหนึ่งของข้อเท็จจริง ระบบที่ปฏิบัติต่อมันแบบนั้นคือระบบที่หน่วยความจำไม่เน่าเปื่อยอย่างเงียบๆ ที่ความขัดแย้งสามารถตัดสินได้ ที่ภาพหลอนสามารถ追溯ได้ และประวัติความเชื่อสามารถย้อนกลับไปยังจุดใดก็ได้ในอดีตโดยไม่ต้องคาดการณ์ล่วงหน้า
ระบบที่ไม่ทำเช่นนั้นคือระบบที่ผู้ใช้จะเรียนรู้ในที่สุดว่าหน่วยความจำที่พวกเขาไว้วางใจนั้นเป็นเกาะที่โดดเดี่ยวมาตลอด
Provenance คือประกันที่ถูกที่สุดที่คุณสามารถซื้อได้ตอนเขียน วินัยคือการซื้อมันก่อนที่คุณจะพบว่าคุณต้องการมัน
พบว่าบทความนี้มีประโยชน์ใช่ไหม กรุณาแชร์เพื่อให้คนอื่นๆ ได้ประโยชน์ด้วย :)
บทความถัดไปจะพูดถึง hybrid retrieval และ RRF ซึ่งเป็นรูปแบบที่ช่วยให้คุณรวมสัญญาณจากเวกเตอร์และคำสำคัญโดยที่สัญญาณหนึ่งไม่กลบอีกสัญญาณหนึ่ง — ซึ่งสำคัญที่สุดเมื่อ provenance บอกคุณว่าข้อเท็จจริงเชื่อถือได้ แต่ความเกี่ยวข้องเพียงอย่างเดียวจะฝังมันไว้ บทความนั้นกำลังจะมาเร็วๆ นี้





