การย้ายข้อมูล
Libre WebUI ส่งออกและนำเข้าคลัง JSON แบบมีเวอร์ชันต่อผู้ใช้ได้จาก การตั้งค่า → การจัดการข้อมูล คลังนี้ใช้ย้ายข้อมูลส่วนบุคคลที่รองรับระหว่างการติดตั้ง Libre WebUI หรือคืนข้อมูลเข้าไปในบัญชี ไม่ใช่ข้อมูลสำรองเซิร์ฟเวอร์ทั้งระบบ
คลังเวอร์ชัน 3
รูปแบบปัจจุบันระบุด้วย:
{
"format": "libre-webui-user-data",
"version": 3,
"integrity": {
"algorithm": "sha256",
"canonicalization": "libre-json-sort-v1",
"digest": "<64 lowercase hexadecimal characters>"
}
}
backend สร้างการส่งออกจากคำค้นฐานข้อมูลที่ยืนยันตัวตนและจำกัดตามผู้ใช้ เนื้อหามี:
- การกำหนดลักษณะผู้ใช้ ยกเว้นข้อมูลอ้างอิงโปรไฟล์เสียงที่ใช้ซ้ำที่เลือก
- โฟลเดอร์แชต
- เซสชันแชต ข้อความ กิ่ง การให้คะแนน อาร์ติแฟกต์ และการตั้งค่าต่อแชต
- บันทึกแบบแยก รวมสถานะปักหมุด
- คอลเลกชันความรู้
- เนื้อหาและเมทาดาทาเอกสารที่สกัด ความเชื่อมโยงเซสชัน/คอลเลกชัน และส่วนข้อความ
ไม่ส่งออก embedding เอกสารเพราะเป็นข้อมูลที่สร้างต่อ ให้สร้าง embedding ใหม่หลังนำเข้าเมื่อเปิดการค้นคืนเชิงความหมาย คลังมีข้อความสกัดที่ RAG ใช้ ไม่ใช่ไบต์ไฟล์อัปโหลดต้นฉบับ จึงสร้างไฟล์เดิมแบบไบต์ต่อไบต์ไม่ได้
แต่ละคลังมีรายการ exclusions เวอร์ชัน 3 ตั้งใจไม่รวม:
- บัญชี รหัสผ่าน เซสชันเข้าสู่ระบบ และสถานะ OAuth
- ข้อมูลประจำตัวผู้ให้บริการและตัวแปร plugin เข้ารหัส
- ไฟล์เสียงอ้างอิงและข้อความถอดเสียงที่โคลน ซึ่งเป็นข้อมูลชีวมิติและต้องจัดการการยินยอมแยก
- persona และหน่วยความจำ persona
- ไฟล์คลังรูปภาพ เสียง และวิดีโอที่สร้าง
- ประวัติรุ่นบันทึกและไฟล์แนบ
- งาน การทำงาน sandbox และ volume Docker หรือ Kubernetes ของ Work
ช่อง การแจ้งเตือน ปฏิทิน และการทำงานอัตโนมัติอยู่นอกคลังแบบพกพา เป็นสถานะอินสแตนซ์/ทีมและเดินทางกับข้อมูลสำรองเซิร์ฟเวอร์เต็ม
ใช้ข้อมูลสำรองฐานข้อมูล/ไดเรกทอรีข้อมูลพร้อม ENCRYPTION_KEY เดิมเพื่อกู้เซิร์ฟเวอร์เต็ม Work ยังต้องสำรอง volume แบบมีชื่ออย่างสอดคล้อง
ดู การย้ายและสำรอง SQLite และ พื้นที่ทำงาน Work
ความสมบูรณ์และการตรวจสอบการส่งออก
เวอร์ชัน 3 ปกป้อง payload คลังด้วย digest ความสมบูรณ์ SHA-256 รูปแบบมาตรฐาน libre-json-sort-v1 ละฟิลด์ integrity ระดับบน เรียงคีย์ออบเจ็กต์ JSON ตามพจนานุกรม เก็บลำดับอาร์เรย์ และ hash JSON แบบย่อเป็น UTF-8 การนำเข้าปฏิเสธคลังเวอร์ชัน 3 ที่ digest ไม่ตรง แม้ JSON ถูกไวยากรณ์
digest นี้ตรวจความเสียหายโดยไม่ตั้งใจและการเปลี่ยนหลังส่งออก ไม่ใช่ลายเซ็นดิจิทัล ไม่ยืนยันผู้สร้างไฟล์ และไม่ทำให้คลังเป็นความลับ ให้ปกป้องเหมือนสำเนาแชตและบันทึกส่วนตัวของผู้ใช้
ก่อนให้ดาวน์โหลด การส่งออกตรวจ schema ขนาดฟิลด์ ID และจำนวนคลังแบบเดียวกับการนำเข้า และยืนยันว่า JSON จัดรูปแบบจาก UI เว็บไม่เกินขีดจำกัดอัปโหลด 50 MiB ระบบส่งข้อผิดพลาดตรวจสอบที่ชัดเจนแทนไฟล์ที่ Libre WebUI รู้ว่ากู้ไม่ได้
ขีดจำกัดคลังและบัญชีปัจจุบัน:
- 50 MiB ต่อคลังที่อัปโหลดหรือสร้าง
- 100 โฟลเดอร์แชต
- 5,000 เซสชันแชต
- 100,000 ข้อความแชต
- 100 บันทึก ชื่อยาวสุด 200 อักขระและเนื้อหา 200,000 อักขระ
- 5,000 คอลเลกชันความรู้
- 5,000 เอกสาร
- 100,000 ส่วนเอกสาร
- ฟิลด์เนื้อหาทั่วไปแต่ละรายการยาวสุด 2,000,000 อักขระและ ID 256 อักขระ โดยทรัพยากร runtime อาจจำกัดแคบกว่า
ลักษณะการนำเข้าที่ปลอดภัย
การเลือกไฟล์สั่ง backend ตรวจล่วงหน้าทันที การตั้งค่าแสดงยอดเข้า จำนวนคาดการณ์ที่จะสร้าง/เขียนทับ/ข้าม การแมป ID ใหม่ และคำเตือนย้าย ก่อนเปิดการนำเข้าขั้นสุดท้าย การเปลี่ยนนโยบายขัดแย้งจะคำนวณและแสดงตัวอย่างใหม่
การตรวจล่วงหน้ายืนยัน digest หากมี ย้ายรูปแบบเก่าที่รองรับ ตรวจ schema เต็ม จำนวนทรัพยากร ID ไม่ซ้ำ เวลา ขอบเขตเนื้อหา และความสัมพันธ์ พร้อมวางแผนความขัดแย้งกับการแมปอ้างอิงใหม่โดยไม่เขียนข้อมูล ความเชื่อมโยงโฟลเดอร์ คอลเลกชัน ผู้ปกครองข้อความ หรือเอกสารที่ขาดจะถูกปฏิเสธแทนการละทิ้งเงียบ ๆ backend ตรวจและวางแผนซ้ำสำหรับการนำเข้าจริง การเขียนทั้งหมดอยู่ในธุรกรรมฐานข้อมูลเดียวทั้ง SQLite และ PostgreSQL ความผิดพลาด rollback การกำหนดลักษณะ โฟลเดอร์ เซสชัน/ข้อความ บันทึก คอลเลกชัน เอกสาร และส่วนพร้อมกัน
มีนโยบายความขัดแย้งสองแบบ:
- ข้ามรายการซ้ำ เก็บระเบียน ID ตรงและนำเข้าระเบียนใหม่ การกำหนดลักษณะจะรวมกับค่าปัจจุบันของบัญชี
- เขียนทับที่มีอยู่ แทนระเบียน ID ตรง การกำหนดลักษณะแทนค่าเริ่มต้น Libre WebUI ระเบียนที่ไม่มีในคลังจะไม่ถูกลบ
ทั้งสองนโยบาย idempotent สำหรับระเบียน ID ตรง หาก ID เป็นของบัญชีอื่นบนเซิร์ฟเวอร์เป้าหมาย Libre WebUI จะแมปใหม่อย่างกำหนดได้พร้อมข้อมูลอ้างอิงทั้งหมด และไม่เขียนทับหรืออ่านทรัพยากรผู้ใช้อื่น ข้อมูลอ้างอิงทรัพยากรที่ไม่รวม/ไม่พร้อม เช่น persona จากการติดตั้งอื่น เป็นข้อยกเว้นที่ระบุ การตรวจล่วงหน้ารายงานว่าเซสชันจะถูกแยกก่อนนำเข้า
ผลในการตั้งค่ารายงานจำนวนสร้าง เขียนทับ และข้ามสำหรับโฟลเดอร์ เซสชัน บันทึก คอลเลกชัน และเอกสาร หลังนำเข้าสำเร็จ Libre โหลดการกำหนดลักษณะ แชต และโฟลเดอร์ใหม่และรีเฟรชเอกสาร
คลังข้อมูลรุ่นเก่า
ตัวนำเข้ารับคลัง libre-webui-user-data เวอร์ชัน 2 และย้ายเป็นเวอร์ชัน 3 ระหว่างตรวจ เวอร์ชัน 2 ไม่มี digest และไม่มีบันทึก Libre จึงยืนยันที่มาหรือกู้บันทึกที่ไม่เคยส่งออกไม่ได้ ตัวอย่างล่วงหน้าระบุข้อจำกัดทั้งสอง
ตัวนำเข้ายังรับรูปแบบเดิม libre-webui-export เวอร์ชัน 1.0 ที่เบราว์เซอร์สร้าง ซึ่งมีการกำหนดลักษณะและเฉพาะเซสชันที่โหลดในเบราว์เซอร์ อาร์เรย์ documents ว่างเสมอและไม่มีโฟลเดอร์ บันทึก คอลเลกชัน หรือส่วนเอกสาร Libre รายงานข้อจำกัดก่อนนำเข้า
endpoint HTTP
endpoint ทั้งหมดต้องใช้ bearer token หรือเซสชันของผู้ใช้ที่ยืนยันตัวตน:
| วิธี | Endpoint | วัตถุประสงค์ |
|---|---|---|
GET | /api/preferences/export | สร้างคลัง v3 ของผู้ใช้ปัจจุบัน |
POST | /api/preferences/import/preflight | ตรวจและวางแผนโดยไม่เขียน |
POST | /api/preferences/import | ตรวจและนำเข้าในธุรกรรม |
UI เว็บส่งคลังเป็นฟิลด์ multipart/form-data ชื่อ archive และนโยบายขัดแย้งเป็นฟิลด์ strategy ขีดจำกัดอัปโหลด 50 MiB สำหรับการย้ายผ่าน API ที่เล็กกว่า endpoint POST ทั้งสองรับ JSON ด้วย:
{
"data": { "format": "libre-webui-user-data", "version": 3 },
"strategy": "skip"
}
strategy เป็น skip หรือ overwrite เพื่อเข้ากับไคลเอนต์เดิมที่มีเฉพาะการกำหนดลักษณะ mergeStrategy: "merge" แมปไป skip และ mergeStrategy: "replace" แมปไป overwrite